锁定老帖子 主题:SNA方案之session炒冷饭
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-04
下面根据web请求的过程分情况讨论该方案: A、登录
<!----> 根据请求的url判断是否是登录请求 在线人数保存在memcached里 B、 正常请求
<!----> C、 失败转发
<!----> D、登出
<!----> 根据请求的url判断是否是登出请求 E、HttpSession过期 不hack memcached,使用HttpSessionListener,sessionDestroyed事件时根据sessionid删除memcached里的sessionMap(如果存在)
关于在线人数的统计:在线人数存储在memcached里,将在线人数与sessionMap绑定,往memcached里增加sessionMap时在线人数+1,删除时-1. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-04
其实你还只是把web容器的session自己封装后再保存到memcached里的,但是你还是不能实现多个tomcat容器共享session和session失效问题,假设我在tomcat-8001里呆了25分钟,然后再跑到tomcat-8002呆了20分钟,这个时候再返回到tomcat-8001的时候,在tomcat-8001里已经超时了,而按照整套系统来说的话是不应该出现超时,也就是说tomcat-8001的session还是应该存在的,这种情况你的方案还是不能实现。
|
|
返回顶楼 | |
发表时间:2008-09-04
Arden 写道 其实你还只是把web容器的session自己封装后再保存到memcached里的,但是你还是不能实现多个tomcat容器共享session和session失效问题,假设我在tomcat-8001里呆了25分钟,然后再跑到tomcat-8002呆了20分钟,这个时候再返回到tomcat-8001的时候,在tomcat-8001里已经超时了,而按照整套系统来说的话是不应该出现超时,也就是说tomcat-8001的session还是应该存在的,这种情况你的方案还是不能实现。
不太明白你的意思,首先我采用了粘性会话,所以正常情况下不会出现在tomcat-8001里呆了25分钟,然后再跑到tomcat-8002呆了20分钟。另外tomcat-8001的session即使不存在了也没有关系,filter会新建一个session,然后将memcached里保存的session信息设置到session里。 |
|
返回顶楼 | |
发表时间:2008-09-04
你的意思是给memcached的session设置一个如snaid,然后当用户在tomcat-8001有登录时就把当前session的数据保存到与snaid相关的缓存中,同时把snaid设置到cookie里,当用户从tomcat-8001跑到tomcat-8002的时候,在tomcat-8002里从cookie里取出snaid,把与snaid相关连的session数据取出来复制到tomcat-8002新建的session里,最后当用户又从tomcat-8002跑到tomcat-8001的时候,如果tomcat-8001本身的session超时也没关系,新建一个session,然后再根据snaid从memcached取出session再次放回tomcat-8001容器本身的session中?
|
|
返回顶楼 | |
发表时间:2008-09-04
Arden 写道 你的意思是给memcached的session设置一个如snaid,然后当用户在tomcat-8001有登录时就把当前session的数据保存到与snaid相关的缓存中,同时把snaid设置到cookie里,当用户从tomcat-8001跑到tomcat-8002的时候,在tomcat-8002里从cookie里取出snaid,把与snaid相关连的session数据取出来复制到tomcat-8002新建的session里,最后当用户又从tomcat-8002跑到tomcat-8001的时候,如果tomcat-8001本身的session超时也没关系,新建一个session,然后再根据snaid从memcached取出session再次放回tomcat-8001容器本身的session中?
是这个意思 |
|
返回顶楼 | |
发表时间:2008-09-05
为什么不简单的用mem的过期时间,而要这样复制呢?
用mem过期时间的话,即使tomcat宕掉,session同样存在mem中.跨多个tomcat就更没问题了. |
|
返回顶楼 | |
浏览 3298 次