我有一个web应用程序,它基于映射到数据库记录的持久cookie来执行大多数登录的用户相关操作,因此每个ajax帖子都不需要或不想要tomcat会话。
在极少量的ajax请求中,我需要为登录的用户保存少量的servlet会话数据,并且我希望会话能够持续很长时间(只要他打开了浏览器),即使有很长一段时间处于非活动状态。
现在,我的理解是tomcat集群有粘性会话或复制会话,由您选择。在大多数情况下,我希望负载均衡器将流量发送到负载最少的tomcat实例,而servlet永远不会获取或创建会话。在极少数情况下,我需要一个会话并访问少量的会话数据。
另外,我使用的是apache mod-proxy。这会限制你的选择吗?
如果我选择粘性会话负载平衡,那么我的绝大多数不需要粘性的ajax请求都将转到同一个tomcat服务器。然而,有些人说,如果您不担心故障转移,那么粘滞会话可以提供更好的性能。
谁能告诉我,在我的情况下,什么是正确的选择?
我的一个想法是,每当我在tomcat中创建会话时,我还会为一个特定的servlet (path)创建一个MYSESSIONID cookie,并将其设置为与tomcat sessionid相同的值。然后,在我极少数需要访问会话数据的servlet请求中,我遍历了这一个路由servlet,负载均衡器可以创建一个绑定到MYSESSIONID cookie的粘性会话。这是一个好的解决方案吗?
安迪
发布于 2012-03-10 16:40:14
会话对于web应用是全局的。它并不绑定到webapp中的特定servlet。您的路由servlet没有多大意义。
如果您不担心故障转移,那么粘滞会话会更容易。如果你需要集群,这可能意味着你有非常多的并发用户。因此,平均而言,所有服务器上的负载都应该是相似的。
另一方面,如果会话中的数据很少,并且您的应用程序很少对其进行修改,则复制会话的成本应该不高。您可以将故障转移作为额外的优势,并且负载均衡器可以使用纯粹的轮询算法,确保每个服务器获得与其他服务器相同数量的请求。
https://stackoverflow.com/questions/9643195
复制相似问题