可能重复:
Tomcat / jBOSS sessions - where are they usually stored?
tomcat或jboss在哪里存储会话数据? 如果它存储在内存中,那么它如何在集群环境中进行会话管理?我的意思是如何在不丢失sessioncontext的情况下处理故障转移。感谢您的帮助。
谢谢, 与Hemant
答案 0 :(得分:0)
默认情况下,Tomcat将会话数据存储在内存中。
使用群集时,有两种方法:DeltaManager和BackupManager。
使用DeltaManager,对一个节点上的会话的更改将复制到群集中的每个其他节点。如果一个节点死亡,则在客户端故障转移到的任何节点上都可以使用完整会话。
使用BackupManager的事情有点复杂。对于每个会话,一个节点是主节点(客户端访问),一个节点是备份(其中维护会话的完整副本),所有其他节点都是代理会话(它们只知道主要和备份的位置)会话是 - 它们不包含数据)。当节点死亡时,客户端随机选择另一个节点。如果他们选择备份节点,该节点将成为主节点,则会选择新备份并更新所有代理。如果他们选择代理节点,该节点将成为主节点,则从备份中复制数据并更新所有代理。为此,必须使用粘性会话。
我经常发现在考虑BackupManager考虑支持60个用户会话的群集中的四个节点(A,B,C& D)时会有所帮助。由于会话以循环方式分发到节点,因此您应该以以下状态结束:
节点A将有15个主会话,5个会话备份用于节点B,5个备份用于节点C,5个备份用于节点D.它还将有30个代理会话用于剩余会话,详细说明哪些节点是其主要节点和备份
节点B将有15个主会话,5个会话备份用于节点A,5个备份用于节点C,5个备份用于节点D.还将有30个代理会话用于剩余会话,详细说明哪些节点是其主要节点和备份
节点C将有15个主会话,5个会话备份给节点A,5个备份用于节点B,5个备份用于节点D.它还将有30个代理会话用于剩余的会话,详细说明哪些节点是它们的主要节点和备份
节点D将有15个主会话,5个会话备份用于节点A,5个备份用于节点B,5个备份用于节点C.它还将有30个代理会话用于剩余的会话,详细说明哪些节点是其主要节点和备份
还有许多配置选项可用于控制在节点之间复制数据的方式和时间。有关详细信息,请参阅Tomcat文档。