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文件結構如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM