從 excel 中導入數據入系統,咱們用的是先上傳文件至服務器再分析所上傳的文件逐行導入。java
就是執行了一循環,在當前循環位置標識一下客戶端就知道執行的進度了,之前的方式 是用 session.setAttribute("進度信息「);web
之前是單機(session一秒更新幾百次都沒有問題)沒有發現問題,如今放集羣中就出現瞭如下狀況redis
上傳程序可能正在 tomcat1 上執行,但用戶可能請求 tomcat2 或其它的服務器上執行,由於速度太快 session 可能尚未來得及同步,而數據又發生了變化數據庫
(三個不一樣的集羣對 循環內的 session.setAttribute("進度信息「) 處理狀況):apache
效果最好的是 tomcat8 自身的集羣,效果最差的是 tomcat8+redis 的集羣...tomcat
Tomcat8 集羣:de.javakaffee.web.msm.MemcachedBackupSessionManager 方式 服務器
Tomcat8 集羣:reyo.redis.session.manager.tomcat8.RedisSessionManager 方式
session
Tomcat8 集羣:org.apache.catalina.ha.tcp.SimpleTcpCluster 方式
tcp
我用了內存數據庫實現消息隊列,在各類集羣及單機都能正常工做了....記錄一下excel
實現效果以下
用內存模式實現了整個系統的消息隊列。。。這下方便了
導入的excel文件結構以下: