6.7. 分布式 Web 会话配置的 distributable-web 子系统
distributable-web
子系统可促进灵活且可分布的 Web 会话配置。子系统定义一组可分布式 Web 会话管理配置文件。这些配置文件中的一个被指定为默认配置集。它定义可分布式 Web 应用的默认行为。例如:
[standalone@embedded /] /subsystem=distributable-web:read-attribute(name=default-session-management) { "outcome" => "success", "result" => "default" }
默认会话管理将 Web 会话数据存储在 Infinispan 缓存中,如下例所示:
[standalone@embedded /] /subsystem=distributable-web/infinispan-session-management=default:read-resource { "outcome" => "success", "result" => { "cache" => undefined, "cache-container" => "web", "granularity" => "SESSION", "affinity" => {"primary-owner" => undefined} } }
本例中使用的属性和可能的值有:
-
缓存
:关联的 cache-container 中的缓存。Web 应用的缓存基于此缓存的配置。如果未定义,则使用相关缓存容器的默认缓存。 -
cache-container
:Infinispan子系统
中定义的 cache-container,将会话数据存储到其中。 粒度
:定义会话管理器如何将会话映射到单个缓存条目。可能的值有:-
SESSION
:将所有会话属性存储在单个缓存条目中。比ATTRIBUTE
粒度更高,但会保留任何跨目录对象引用。 -
ATTRIBUTE
:将各个会话属性存储在单独的缓存条目中。比SESSION
粒度更高,但不会保留任何跨目录对象引用。
-
affinity
:定义 Web 请求必须针对服务器具有的关联性。关联的 Web 会话的关联性决定了生成路由以附加到会话 ID 的算法。可能的值有:-
affinity=none
:Web 请求没有与任何节点的关联性。如果应用服务器内不维护 Web 会话状态,可使用此选项。 -
affinity=local
:Web 请求与最后处理会话请求的服务器关联。此选项与粘性会话行为对应。 -
affinity=primary-owner
:Web 请求与会话的主所有者关联。这是这个分布式会话管理器的默认关联性。如果不分发或复制后备缓存,其行为与affinity=local
相同。 -
affinity=ranked:
Web 请求对列表中的第一个可用成员具有关联性,其中包括主用户和备份所有者,以及最后处理会话的成员的关联。 -
affinity=ranked 分隔符
:用于在编码会话标识符中分隔单个路由的分隔符。 -
affinity=ranked max 路由
:编码到会话标识符的最大路由数。
-
您必须在负载均衡器中启用等级会话关联,才能使会话与多个排序的路由关联。如需更多信息,请参阅 JBoss EAP 配置指南 https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.3/html-single/configuration_guide/#proc-enabling-ranked-session-affinity-in-your-load-balancer_config 中的负载平衡器中启用等级的会话关联性。
您可以通过按名称引用会话管理配置文件或提供特定于部署的会话管理配置来覆盖默认的可分布式会话管理行为。如需更多信息,请参阅覆盖默认分布式会话管理行为。
6.7.1. 在远程 Red Hat Data Grid 中存储 Web 会话数据
distributable-web
子系统可以配置为使用 HotRod 协议将 Web 会话数据存储在远程红帽数据网格群集中。在远程集群中存储 Web 会话数据可让缓存层独立于应用服务器进行扩展。
配置示例:
[standalone@embedded /]/subsystem=distributable-web/hotrod-session-management=ExampleRemoteSessionStore:add(remote-cache-container=datagrid, cache-configuration=__REMOTE_CACHE_CONFIG_NAME__, granularity=ATTRIBUTE) { "outcome" => "success" }
本例中使用的属性和可能的值有:
-
remote-cache-container
:Infinispan子系统
中定义的远程缓存容器,用于存储 Web 会话数据。 缓存配置
:红帽数据网格集群中的缓存配置名称.新创建的特定于部署的缓存基于此配置。如果没有找到与该名称匹配的远程缓存配置,则会在远程容器中创建新的缓存配置。
粒度
:定义会话管理器如何将会话映射到单个缓存条目。可能的值有:-
SESSION
:将所有会话属性存储在单个缓存条目中。比ATTRIBUTE
粒度更高,但会保留任何跨目录对象引用。 -
ATTRIBUTE
:将各个会话属性存储在单独的缓存条目中。比SESSION
粒度更高,但不会保留任何跨目录对象引用。
-