`
ronghao
  • 浏览: 453928 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
E9473dd5-1985-3883-ac98-962354ca10b3
张小庆,在路上
浏览量:8712
社区版块
存档分类
最新评论

SNA方案之session炒冷饭

阅读更多


SNA方案中,session的处理是一个重要方面。

原帖见这里:http://www.iteye.com/topic/200611

原帖里提到的两种方案都需要hack代码。

下面是我的方案:

1、使用会话cookie保存web服务器产生的sessionid
   为什么是sessionid而不是userid,原因在于谁也不知道除去登录外其他人会在httpsession里干些什么

2、自定义SessionMap<String,Serializable>同步保存httpsession内的信息
   自定义SessionMap同步httpsession,在操作httpsession时不用改变调用接口,不用东张西望

3、使用分布式缓存memcached保存自定义SessionMap<String,Serializable>

4、会话胶粘
   未失败转发的情况下没必要在memcached和httpsession之间复制来复制去,眉来眼去

5、使用SnaFilter处理失败转发

6、使用HttpSessionListener实现SessionMap<String,Serializable>的过期
   利用容器session 机制的好处,httpsession过期的时候干掉memecached里的SessionMap

 

下面根据web请求的过程分情况讨论该方案:

A、登录


<!---->

根据请求的url判断是否是登录请求

在线人数保存在memcached

B、 正常请求


<!---->

C、 失败转发


<!---->

D、登出


<!---->

根据请求的url判断是否是登出请求

E、HttpSession过期

hack memcached,使用HttpSessionListenersessionDestroyed事件时根据sessionid删除memcached里的sessionMap(如果存在)

 

关于在线人数的统计:在线人数存储在memcached里,将在线人数与sessionMap绑定,往memcached里增加sessionMap时在线人数+1,删除时-1.

分享到:
评论
5 楼 dknypxt 2008-09-05  
为什么不简单的用mem的过期时间,而要这样复制呢?
用mem过期时间的话,即使tomcat宕掉,session同样存在mem中.跨多个tomcat就更没问题了.
4 楼 ronghao 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中?

是这个意思
3 楼 Arden 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中?
2 楼 ronghao 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里。
1 楼 Arden 2008-09-04  
其实你还只是把web容器的session自己封装后再保存到memcached里的,但是你还是不能实现多个tomcat容器共享session和session失效问题,假设我在tomcat-8001里呆了25分钟,然后再跑到tomcat-8002呆了20分钟,这个时候再返回到tomcat-8001的时候,在tomcat-8001里已经超时了,而按照整套系统来说的话是不应该出现超时,也就是说tomcat-8001的session还是应该存在的,这种情况你的方案还是不能实现。

相关推荐

    sna集中式session管理实现服务器集群及客户端程序

    sna集中式session管理实现服务器集群及客户端程序,以“单点登陆、session共享解决方案(2)”为基础建立的服务器机群应用,运行server.bat启动服务器端,将client包导入web工程,通过Client.sessionPut()等方法调用。...

    sna session

    sna session实现方案实例,稍微修改下即可用于产品

    Sensor Network Analyzer (SNA)

    - **直观的解决方案**:Daintree Networks 提供的 SNA 采用了直观的设计理念,使得即使是初学者也能快速上手。 - **独特的可视化工具**:这些工具能够帮助用户清晰地了解网络结构和设备状态,从而提升工作效率。 ##...

    IBM SNA Knowledge

    SNA的设计理念与OSI参考模型有诸多相似之处,其主要目的是实现主框架机之间的通信,并通过一系列协议来管理这些通信。 #### 二、SNA的背景 - **传统SNA与当代网络**:在个人电脑、工作站和客户端/服务器计算出现...

    海康威视IP_SANNAS监控存储解决方案

    2. **DS-6x00HC/HF视频服务器**:支持多种视频编解码,具备强大的视频处理能力,是监控系统的核心组件之一。 3. **DS-6x00HC/HF-ATA视频服务器**:专业视频服务器,用于处理大规模视频数据,提供高效稳定的视频传输...

    SNA核算体系的理论基础透析.doc

    《SNA核算体系的理论基础透析》这篇文章探讨的核心议题是SNA(System of National Accounts,国民账户体系)核算体系的理论基础,特别是在中国引入这一体系后,对马克思主义政治经济学及其劳动价值论的影响。...

    SNA on linux 管理手册

    - **Control Program (CP):** CP是SNA网络的核心组件之一,负责管理和控制整个网络中的资源分配和通信流程。 - **Resource Controller (RC):** RC用于管理SNA网络中的资源,确保资源被有效地分配和利用。 - **Data ...

    SNA PD 確認程序

    "SNA PD 確認程序" 是针对IBM System Network Architecture(SNA)状态查询的一种工具或过程,旨在帮助用户监控和理解SNA网络中的系统状态。SNA是IBM开发的一种网络通信协议,广泛用于大型机环境,提供了一种在不同...

    sna.rar_in

    在IT行业中,SNA(System Network Architecture,系统网络架构)是一种由IBM公司开发的网络通信模型,主要用于大型企业或组织的内部网络通信。SNA提供了多种服务,包括数据传输、网络控制以及资源管理等,使得不同...

    Python库 | sna_prediction-1.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:sna_prediction-1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    cas-center加sna.rar

    当CAS-Center与SNA相结合时,可以为大型企业或组织提供强大的单点登录(Single Sign-On,SSO)解决方案。 单点登录是一种便捷的用户认证方式,它允许用户在一个应用系统中登录后,即可访问所有相互信任的系统,而...

    SNA新闻采集系统v1.0.2 For 动易4.03

    【SNA新闻采集系统v1.0.2 ...综上所述,SNA新闻采集系统v1.0.2 For 动易4.03是一个高效、智能的新闻采集解决方案,它将大大提升网站的内容更新速度,减轻运维人员的工作负担,同时提高网站的用户黏性和搜索引擎排名。

    c7200-adventerprisek9_sna-mz.150-1.M.bin

    c7200-adventerprisek9_sna-mz.150-1.M.bin

    网络游戏-SNA网络体系下交互数据的传输方法及装置.zip

    在网络游戏领域,SNA(System Network Architecture,系统网络架构)是一种传统的网络通信协议集,主要用于IBM大型机系统。然而,随着技术的发展,SNA的概念也被借鉴到其他领域,包括网络游戏中的数据传输。本文将...

    SNA

    国民账户体系(System of National Accounts,简称SNA)是全球经济统计的核心框架,它提供了一套统一的方法来衡量一个国家或经济体的经济活动。这一体系对于政策制定者、经济学家以及研究者来说至关重要,因为它提供...

    PyPI 官网下载 | sna-0.0.9.tar.gz

    《PyPI官网下载:探索sna-0.0.9.tar.gz中的Python库知识》 在Python的世界里,PyPI(Python Package Index)是开发者分享和获取Python软件包的重要平台。资源`sna-0.0.9.tar.gz`正是这样一个在PyPI上发布的软件包,...

    sna lecture notes

    sna lecture notes , erdos reyni

Global site tag (gtag.js) - Google Analytics