Tomcat/JBoss 会话存储



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

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

谢谢赫曼特

默认情况下,

Tomcat 将会话数据存储在内存中。

使用群集时,有两种方法:增量管理器和备份管理器。

使用 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 文档。

最新更新