-1

可能重复:
Tomcat / jBOSS 会话 - 它们通常存储在哪里?

就此而言,tomcat 或 jboss 在哪里存储会话数据?如果它将这些存储在内存中,那么它如何在集群环境中进行会话管理?我的意思是如何在不丢失会话上下文的情况下处理故障转移。感谢你的帮助。

谢谢,赫曼特

4

1 回答 1

0

默认情况下,Tomcat 将会话数据存储在内存中。

使用集群时有两种方法:DeltaManager 和 BackupManager。

使用 DeltaManager 对一个节点上的会话所做的更改会复制到集群中的每个其他节点。如果一个节点死机,则在客户端故障转移到的任何一个节点上都可以使用完整会话。

使用 BackupManager,事情会稍微复杂一些。对于每个会话,一个节点是主节点(客户端访问),一个节点是备份(维护会话的完整副本),所有其他节点都是代理会话(它们只知道主节点和备份节点在哪里)会话是 - 它们不包含数据)。当一个节点死亡时,客户端随机选择另一个节点。如果他们选择备份节点,该节点将成为主节点,选择新备份并更新所有代理。如果他们选择一个代理节点,该节点将成为主节点,从备份中复制数据并更新所有代理。为此,必须使用粘性会话。

当考虑 BackupManager 时,我经常发现在支持 60 个用户会话的集群中考虑四个节点(A、B、C 和 D)会有所帮助。由于会话以循环方式分发到节点,因此您应该以以下状态结束:

节点 A 将有 15 个主会话,为节点 B 备份 5 个会话,为节点 C 提供 5 个备份,为节点 D 提供 5 个备份。它还将为剩余的会话提供 30 个代理会话,详细说明哪些节点是它们的主节点和备份节点。

节点 B 将有 15 个主会话,为节点 A 备份 5 个会话,为节点 C 提供 5 个备份,为节点 D 提供 5 个备份。它还将为其余会话提供 30 个代理会话,详细说明哪些节点是它们的主节点和备份节点。

节点 C 将有 15 个主会话,为节点 A 备份 5 个会话,为节点 B 提供 5 个备份,为节点 D 提供 5 个备份。它还将为剩余的会话提供 30 个代理会话,详细说明哪些节点是它们的主节点和备份节点。

节点 D 将有 15 个主会话,为节点 A 备份 5 个会话,为节点 B 提供 5 个备份,为节点 C 提供 5 个备份。它还将为剩余的会话提供 30 个代理会话,详细说明哪些节点是它们的主节点和备份节点。

还有许多配置选项可以控制数据在节点之间复制的方式和时间。有关详细信息,请参阅 Tomcat 文档。

于 2012-05-04T09:59:20.570 回答