从 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文件结构以下: