0

我有 2 个 Tomcat 在使用 sticky_sessions=false 进行负载平衡。所以我需要跨Tomcats的“会话持久性”。Tomcat文档说有3种方法:

  1. Tomcat 集群
  2. 持久性管理器 + 共享目录
  3. 持久化管理器 + SQL 存储

集群不适合我,因为在它编写的文档中,配置它的 sticky_sessions 应该是真的。

我尝试了 Persistance Manager,但它看起来也不起作用,因为它仅在超时后才保持会话​​,因此使用 sticky_session=false 它不起作用。

持久性管理器可以立即持久化会话吗?

我阅读了有关 memcached-session-manager 的信息,但它看起来像 3d 派对解决方案,所以我不敢使用它。它是唯一的解决方案吗?

4

1 回答 1

0

不需要会话持久性;你也可以通过集群来做到这一点。粘性会话通常是一个好主意,因为它们修复了许多潜在的竞争条件(或者,或者,性能问题)。

您可以启用没有粘性会话的集群。但是您可能希望将坚持会话与集群一起使用,除非有一些令人信服的理由来禁用它。(请记住,启用粘性会话时仍会发生故障转移。)

的问题PersistentManager是您不能保证会话将在商店中及时更新。查看maxIdleBackup您的PersistentManager. 它可能会为您提供一些关于如何调整持久性的线索。

PersistentManager确实是为了解决一个不同的问题:处理大量内存有限的长期会话。考虑使用 Amazon.com 之类的东西,他们会记住您在“购物车”中的商品数周和数周。您可以通过将存储在会话中的“购物车”持久化到数据库或文件来以一种懒惰的方式做到这一点。

如果您真的想在多台服务器之间共享会话,集群是您的最佳选择。Tomcat 网站上有一些关于集群的精彩演示。

于 2016-04-21T17:27:37.313 回答