Tomcat 集群模式下 Session 更新 Bug (redis memcached 及tomcat自已的集群)

 

从 excel 中导入数据入系统,我们用的是先上传文件至服务器再分析所上传的文件逐行导入。

就是执行了一循环,在当前循环位置标识一下客户端就知道执行的进度了,以前的方式 是用 session.setAttribute("进度信息“);

以前是单机(session一秒更新几百次都没有问题)没有发现问题,现在放集群中就出现了以下情况

上传程序可能正在 tomcat1 上执行,但用户可能请求 tomcat2 或其它的服务器上执行,因为速度太快 session 可能还没有来得及同步,而数据又发生了变化

(三个不同的集群对 循环内的 session.setAttribute("进度信息“) 处理情况):

效果最好的是 tomcat8 自身的集群,效果最差的是 tomcat8+redis 的集群...

 

Tomcat8 集群:de.javakaffee.web.msm.MemcachedBackupSessionManager 方式 

 

Tomcat8 集群:reyo.redis.session.manager.tomcat8.RedisSessionManager 方式

 

Tomcat8 集群:org.apache.catalina.ha.tcp.SimpleTcpCluster 方式

 

我用了内存数据库实现消息队列,在各种集群及单机都能正常工作了....记录一下

实现效果如下

 用内存模式实现了整个系统的消息队列。。。这下方便了

导入的excel文件结构如下:

posted @   锐洋智能  阅读(7830)  评论(2编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
· Windows 提权-UAC 绕过
点击右上角即可分享
微信分享提示