【发布时间】:2016-12-05 15:26:52
【问题描述】:
在运行应用程序的多个负载平衡实例时,是否可以防止同时修改会话?
上下文:多个tomcat,都运行同一个应用程序。该应用程序使用 spring session 将会话存储在 redis 集群中。负载均衡器将传入请求分配给其中一个 tomcat(非粘性)。用户点击按钮,tomcat 1 处理请求的速度非常慢(性能问题或其他)。用户再次点击按钮,tomcat 2 速度更快并回复成功。用户进入以下页面。 Tomcat 1 完成了第一个请求并覆盖了会话——所有正在进行的页面的数据都丢失了。
解决方案是锁定会话。因此,tomcat 2 可以检测到并发修改并回复错误(比获得不一致的状态要好得多)。
非常感谢 乙
【问题讨论】:
标签: spring-session