我试图决定在Tomcat + Apache反向代理模式下用于会话复制的更好的方法。部署中更常见的是什么?会话复制还是会话?会话复制有什么缺点吗?
由于
答案 0 :(得分:13)
如果您进行会话复制,我可以指出以下注意事项。
<强>性能强>
主要缺点是性能。复制会话涉及将会话数据复制到群集中的所有服务器。您在群集中拥有的服务器越多,所涉及的额外开销就越多。
Tomcat通过为会话复制定义两种模式来帮助解决这一问题。
DeltaManager(默认)和BackupManager
从此网址http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
使用上面的配置会 启用所有会话复制 使用DeltaManager进行复制 会话增量。我们的意思是所有人 会话被复制到 集群中的所有其他节点。 这适用于较小的群集 但我们不建议更大 集群(很多tomcat节点)。也 当使用delta管理器时它会 复制到所有节点,甚至是节点 没有应用程序 部署。
要解决这个问题, 你会想要使用BackupManager。 这位经理只复制了 会话数据到一个备份节点,和 只有拥有的节点 应用程序部署下行的 BackupManager:不太像战斗 作为增量管理器测试
如果启用会话复制,请阅读this URL以获取群集的良好设计提示。
<强>内存强>
将有多少并发用户访问该应用程序?用户越多,存储到会话中的数据就越多,因此会话复制过载。
代码注意事项
此外,您需要确保应用程序放入会话的数据是可序列化的。序列化会话数据有一些开销用于复制会话状态。保持会话大小相当小是个好主意,因此开发人员需要检查放入会话的数据量。
粘性会话
考虑到这些因素,它实际上取决于用例的重要性。如果您单独进行粘性会话,那么在关键旅程中可能会丢失用户数据。
您是否有办法从中恢复 - 例如:通过在订单或付款过程的每一步将关键数据持久存储到数据库中?如果不是,则用户必须登录并重新开始。这适用于非交易性网站,但浏览宣传册类型的数据或填写表格以捕获非付款等数据。
答案 1 :(得分:0)
我更喜欢使用memcache进行Sticky会话。