可能的重复项:
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 文档。