[发明专利]一种基于高速缓存的精细化Session集群共享系统及方法有效
申请号: | 201810333845.0 | 申请日: | 2018-04-13 |
公开(公告)号: | CN108540556B | 公开(公告)日: | 2019-09-10 |
发明(设计)人: | 晁成汗 | 申请(专利权)人: | 南京新贝金服科技有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F12/0897 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 陈建和 |
地址: | 210032 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用服务器 一级缓存 负载均衡策略 二级缓存 高速缓存 集群共享 精细化 过滤器 传统方式 读写冲突 数据丢失 性能要求 用户请求 客户端 读写 并发 转发 代理 客户 管理 | ||
1.一种基于高速缓存的精细化Session集群共享系统,其特征在于,包括客户端、负载均衡策略模块、应用服务器、一级缓存模块,所述负载均衡策略模块用于将客户端的用户请求转发给应用服务器,所述应用服务器的数量可以是一个或更多,所述应用服务器与一级缓存模块相连,所述应用服务器内设有过滤器、二级缓存模块和SessionManager(Session管理)模块,所述SessionManager模块用于将原生Session包装成代理Session,所述SessionManager模块读写一级缓存模块和二级缓存模块。
2.如权利要求1所述的一种,其特征在于:所述代理Session中设有MapProxy模块和Map模块,所述MapProxy模块与Map模块在一级缓存模块中分开存储分开管理。
3.如权利要求2所述的一种,其特征在于:所述一级缓存模块可由Redis集群或其他高速的集中式缓存构成,以实现在各个应用间快速同步代理Session。所述二级缓存模块可配置为应用级别的内存共享缓存或是线程级别的ThreadLocal缓存。
4.如权利要求3所述的一种,其特征在于:所述应用服务器可以为Tomcat服务器、Jetty服务器或其他任何支持servlet的应用容器。
5.一种根据权利要求1-4之一所述系统进行的基于高速缓存的精细化Session集群共享方法,其特征在于:包括如下步骤:
1.应用服务器接收来自客户端的用户请求,SessionManager模块创建原生Session并包装成代理Session,过滤器尝试从原生Session的cookie中获取SessionId;包装方式为代理Session实现标准的HttpSession接口,并通过类组合方式持有原生Session的引用,将其作为代理Session的私有成员变量。
2.SessionManager模块根据SessionId管理代理Session的一级缓存模块与二级缓存模块;
3.应用通过SessionManager模块获取到代理Session后,通过setAttribute()、getAttribute()方法对代理Session的属性做读写,代理Session判断读写的属性是否满足配置规则,如果满足,则通过代理Session内部的MapProxy模块直接对一级缓存模块进行读写,如果不满足,则直接使用代理Session内部的Map模块进行读写,随代理Session一起进行序列化和反序列化;
4.代理Session处理完毕,应用服务器返回响应到客户端前,在过滤器中对代理Session进行清理,SessionManager模块将代理Session数据写回一级缓存模块用以保存内置属性。
6.如权利要求5所述的一种基于高速缓存的精细化Session集群共享方法,其特征在于,所述步骤2中包括:
201.过滤器判断cookie是否存在代理Session的SessionId,如果不存在,则SessionManager模块对其生成含有SessionId的代理Session,并把其中的SessionId在用户请求中写入cookie,将创建的SessionId作为缓存的Key,代理Session作为值存储在一级缓存模块中并根据同样策略存储在二级缓存模块中;
202.如果cookie存在SessionId,则SessionManager模块从二级缓存模块中读取SessionId绑定的代理Session;
203.如果二级缓存模块中的代理Session无法获取,则从一级缓存模块中读取代理Session;
204.SessionManager模块将代理Session缓存在二级缓存模块的应用内存或者请求线程中,如果一级缓存模块中的代理Session无法获取或不合法,则返回步骤201中的SessionManager模块生成含有SessionId的代理Session开始执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京新贝金服科技有限公司,未经南京新贝金服科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810333845.0/1.html,转载请声明来源钻瓜专利网。