Session 条件tomcat粘性会话(集群)

Session 条件tomcat粘性会话(集群),session,tomcat,servlets,cluster-computing,Session,Tomcat,Servlets,Cluster Computing,我有一个web应用程序,它基于映射到数据库记录的持久cookie执行大部分与登录用户相关的操作,这样每个ajax帖子就不需要或不需要tomcat会话 在非常少的ajax请求中,我有少量的servlet会话数据要保存给登录的用户,我希望会话能够持续很长时间,只要他打开浏览器,即使有很长时间的不活动 现在,我的理解是tomcat集群有粘性会话或复制会话,由您选择。在大多数情况下,我希望我的负载平衡器将流量发送到负载最少的tomcat实例,而servlet永远不会获取或创建会话。在极少数情况下,我需要

我有一个web应用程序,它基于映射到数据库记录的持久cookie执行大部分与登录用户相关的操作,这样每个ajax帖子就不需要或不需要tomcat会话

在非常少的ajax请求中,我有少量的servlet会话数据要保存给登录的用户,我希望会话能够持续很长时间,只要他打开浏览器,即使有很长时间的不活动

现在,我的理解是tomcat集群有粘性会话或复制会话,由您选择。在大多数情况下,我希望我的负载平衡器将流量发送到负载最少的tomcat实例,而servlet永远不会获取或创建会话。在极少数情况下,我需要会话和访问少量会话数据

另外,我正在使用ApacheModProxy。这是否限制了选择

如果我选择粘性会话负载平衡,那么我的绝大多数不需要粘性的ajax请求都会转到同一个tomcat服务器。但有人说,如果您不担心故障转移,粘性会话可以提供更好的性能

有人能告诉我对我来说什么是正确的选择吗

我的一个想法是,每当我在tomcat中创建会话时,我也会为一个特定的servlet路径创建一个MYSESSIONID cookie,该路径设置为与tomcat会话ID相同的值。然后,在我所有需要访问会话数据的极少数servlet请求中,我通过这个路由servlet,负载平衡器可以创建一个绑定到MYSESSIONID cookie的粘性会话。这是一个好的解决方案吗


Andy

会话对于web应用程序来说是全局的。它不绑定到webapp中的特定servlet。您的路由servlet没有多大意义

如果您不担心故障转移,那么粘性会话就更容易了。如果您需要集群,这可能意味着您有大量并发用户。因此,平均而言,所有服务器上的负载应该是相似的

另一方面,如果会话中的数据很少,并且应用程序很少对其进行修改,那么复制会话的成本应该不会太高。故障转移是一个额外的优势,负载平衡器可以使用纯循环算法,确保每台服务器获得与其他服务器相同的请求数