SNA方案中,session的存放是一个重要方面。javaeye中提出的解决方案主要基于memcached:
codeutil通过hack tomcat6的session manage相关类将标准的servlet session存储在memcached中。该hack解决了一部分问题,但是最终没有完全绕过ManagerBase中的sessions实例和StandardSession中的attributes实例。从代码上看,群集环境中,存在着各个JVM中的sessions实例和attributes实例无法与memcached保持同步的问题,继而隐藏着session dirty或者expire机制失效的BUG。
另外一种方案是自定义Map<String,Map<String,Serializable>>来取代servlet容器的SessionStore机制。使用memcached作为underlying store的,仍然需要解决session expire的问题。关于memcached管理session expire的问题,balaschen等hack了memcached的代码。每次get操作的时候更新expire值,继而试图让memcached自行管理。这种方案限于每个session只能作为一个key/value pair存放于memcached。而通常更有效的存储结构是:
sessionkey:["attr1","attr2","access_timestamp"]
sessionkey_attr1:{}
sessionkey_attr2:{}
ROR社区使用cookie_store,很好。虽然没有看过其实现机制,但是以java的实现该是这样:
new ObjectOutputStream(new GZIPOutputStream(new CipherInputStream(new Base64OutputStream(out),cipher))).writeObject(state);
我个人感觉cookie item 4k的容量,存放压缩过的信息已经足够了。关于session中应该/不应该存放什么的讨论,javaeye有很多。我个人总结是,session中存放用户与服务端资源交互产生的、无法由服务端自行决定存放的状态信息。
如果仍然需要session_store的话,我还是更倾向于自定义session结构这种方案。虽然丧失了一部分容器session 机制的好处(比如event,标准接口),但是可以免去hack的痛苦,且与容器无关,轻量级。使用dbcached(memcached+nmdb+qdbm)来作为underlying store,增加了持久、故障转移等功能。
但是,session iterate仍然是待解决的问题。
为什么需要iterate?可以更加灵活的进行expire,还有在线人数统计这类常见的需求。
虽然qdbm提供的java client中Villa可以按照key的前缀进行iterate,但是client无法使用nmdb独占打开的那个db,而nmdb又没有提供java client,更沮丧的是其client规范中规定的可操作方法并没有iterate。目前正在调研其他解决方案。
还有基于terracotta的JVM-level clustering来管理session。很重量级,这里不表。
分享到:
相关推荐
sna session实现方案实例,稍微修改下即可用于产品
sna集中式session管理实现服务器集群及客户端程序,以“单点登陆、session共享解决方案(2)”为基础建立的服务器机群应用,运行server.bat启动服务器端,将client包导入web工程,通过Client.sessionPut()等方法调用。...
- **直观的解决方案**:Daintree Networks 提供的 SNA 采用了直观的设计理念,使得即使是初学者也能快速上手。 - **独特的可视化工具**:这些工具能够帮助用户清晰地了解网络结构和设备状态,从而提升工作效率。 ##...
SNA的设计理念与OSI参考模型有诸多相似之处,其主要目的是实现主框架机之间的通信,并通过一系列协议来管理这些通信。 #### 二、SNA的背景 - **传统SNA与当代网络**:在个人电脑、工作站和客户端/服务器计算出现...
2. **DS-6x00HC/HF视频服务器**:支持多种视频编解码,具备强大的视频处理能力,是监控系统的核心组件之一。 3. **DS-6x00HC/HF-ATA视频服务器**:专业视频服务器,用于处理大规模视频数据,提供高效稳定的视频传输...
《SNA核算体系的理论基础透析》这篇文章探讨的核心议题是SNA(System of National Accounts,国民账户体系)核算体系的理论基础,特别是在中国引入这一体系后,对马克思主义政治经济学及其劳动价值论的影响。...
- **Control Program (CP):** CP是SNA网络的核心组件之一,负责管理和控制整个网络中的资源分配和通信流程。 - **Resource Controller (RC):** RC用于管理SNA网络中的资源,确保资源被有效地分配和利用。 - **Data ...
"SNA PD 確認程序" 是针对IBM System Network Architecture(SNA)状态查询的一种工具或过程,旨在帮助用户监控和理解SNA网络中的系统状态。SNA是IBM开发的一种网络通信协议,广泛用于大型机环境,提供了一种在不同...
在IT行业中,SNA(System Network Architecture,系统网络架构)是一种由IBM公司开发的网络通信模型,主要用于大型企业或组织的内部网络通信。SNA提供了多种服务,包括数据传输、网络控制以及资源管理等,使得不同...
资源分类:Python库 所属语言:Python 资源全名:sna_prediction-1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
当CAS-Center与SNA相结合时,可以为大型企业或组织提供强大的单点登录(Single Sign-On,SSO)解决方案。 单点登录是一种便捷的用户认证方式,它允许用户在一个应用系统中登录后,即可访问所有相互信任的系统,而...
【SNA新闻采集系统v1.0.2 ...综上所述,SNA新闻采集系统v1.0.2 For 动易4.03是一个高效、智能的新闻采集解决方案,它将大大提升网站的内容更新速度,减轻运维人员的工作负担,同时提高网站的用户黏性和搜索引擎排名。
c7200-adventerprisek9_sna-mz.150-1.M.bin
国民账户体系(System of National Accounts,简称SNA)是全球经济统计的核心框架,它提供了一套统一的方法来衡量一个国家或经济体的经济活动。这一体系对于政策制定者、经济学家以及研究者来说至关重要,因为它提供...
在网络游戏领域,SNA(System Network Architecture,系统网络架构)是一种传统的网络通信协议集,主要用于IBM大型机系统。然而,随着技术的发展,SNA的概念也被借鉴到其他领域,包括网络游戏中的数据传输。本文将...
sna lecture notes , erdos reyni
《PyPI官网下载:探索sna-0.0.9.tar.gz中的Python库知识》 在Python的世界里,PyPI(Python Package Index)是开发者分享和获取Python软件包的重要平台。资源`sna-0.0.9.tar.gz`正是这样一个在PyPI上发布的软件包,...