生产环境中的 Tomcat 集群/负载平衡性能

生产环境中的 Tomcat 集群/负载平衡性能

我对负载平衡环境中的集群和会话管理的性能有一些疑问。以下是我的问题:

  • 粘性会话和会话复制的缺点是什么。集群将包含 4 个节点,但可能会出现许多并发用户会话。
  • 两种解决方案的重负载性能如何?
  • 有人在生产环境中使用过它们吗?
  • 可扩展性如何?
  • 如果使用持久共享会话 - 在哪里存储状态以实现可能快速且稳定的解决方案?
  • 您是否有大规模会话共享(在外部内存缓存、数据库等中)的经验?

谢谢你的建议

答案1

  • 粘性会话的缺点是,随着节点数量的增加(在 > 100、> 1000 的范围内),失败的概率也会增加。那么,最好是哪个节点处理请求并不重要。但是,有些问题必须用粘性会话以不同的方式解决,这当然取决于需求和应用程序(例如会话同步、防止重复提交、发布后重定向等)。大多数情况下,只要节点数量有限,我个人就倾向于使用粘性会话。对于 4 个节点,我个人建议使用粘性会话。
  • 我们通过以下方式使用了粘性会话和会话复制memcached 会话管理器在生产环境中。memcached-session-manager 是在 tchibo.de(德国最大的电子商务网站之一)重新启动期间开发的,其目标是兼顾性能和可扩展性。
  • 我们为该应用选择了 sticky-sessions
    • 因为更好的表现
    • 客户要求选择粘性会话
    • 所使用的 Web 框架更适合粘性会话。

答案2

这不是这个或那个的问题,如果应用程序需要两者,那么你必须同时使用两者。集群用于管理负载,而会话亲和性用于在节点发生故障时保护用户的数据。

引用这个例子,如果你正在处理一个节点并且没有粘性会话并且你的节点崩溃了,那么集群将确保你能够看到该页面,但你当前的工作会话将丢失。

相关内容