一种分布式session实现方案

来源:互联网 发布:股市和楼市的关系 知乎 编辑:程序博客网 时间:2024/05/28 15:06

一种分布式session实现方案:当服务器的访问压力达到一定程度时,会采用分布式部署方案,即分布式集群部署,多个服务节点都可以提供同样的服务能力。

这样,当大量的http请求到达服务端时,由负载均衡算法,将不同的请求相对均匀地分发到不同的服务节点上,达到了降低单个服务节点的访问压力,同时也可以解决服务单点故障问题。

采用分布式集群部署方案,一般都要解决session共享问题,如下图所示:

考虑问题:同一个client依次发送3个http请求,顺序依次是request1,request2,request3,经负载均衡算法,被分发到3个不同的服务节点node1,node2,node3,那么,client首先访问server node1进行登录操作,登录成功后创建session,server node1上保存session,同时执行response.addCookie(sessionId)返回给client,client保存cookie;然后client发起请求request2,此时request2访问到server node2,在server node2上根据sessionId找不到session,会提示session不存在,即server node1和 server node2无法共享同一个session...

 

那么如何让不同的server node共享session呢?

如下图所示:

 

 

设计需要思想:需要一个分布式cache(redis、memcached等),然后server node在创建session时,将session存入到分布式cache中,获取session时,从分布式session中取,这样就实现session共享了...

设计思想了解后,那么接下来就是实现方案了

如下图所示:

我们只要做一件事,就是将session相关的操作访问我们自定义的方法,我们自定义的方法操作的是分布式cache,那么就可以解决session共享问题了,也就是下图所示:

首先,我们自定义HttpServletRequestWrapperConcrete、HttpSessionWrapper两个类,分别继承HttpServletRequestWrapper、HttpSession,然后对getSession(...)、getAttribute(name)、setAttribute(name,value)这些常用的方法进行override(重写),这样,原本访问HttpServletRequestWrapper、HttpSession的方法就可以访问我们自定义的HttpServletRequestWrapperConcrete、HttpSessionWrapper中相应的方法了,因此,开发人员就可以使用之前的调用方式一样进行操作了...

 

接下来就是访问的问题了,看下图:

如何将HttpServletRequest对象变成我们自定义的HttpServletRequestWrapperConcrete对象呢?以及将HttpSession对象变成HttpSessionWrapper对象呢?

 

对于1,将HttpServletRequest变成HttpServletRequestWrapperConcrete的问题,可以用Filter来实现:

对于2,将HttpSession变成HttpSessionWrapper的问题,实现方式是将HttpSession作为HttpServletRequestWrapperConcrete的成员变量,然后当HttpServletRequestWrapperConcrete的对象request创建session的时候,将执行request.session = new HttpSessionWrapper(...),这样访问的问题就解决了...

 

下面,给出实现流程...

 

至此,整个分布式session的实现方案结束。


个人技术分享微信公众号,欢迎关注一起交流 


阅读全文
'); })();
1 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 现实生活中的海盗湾 海盗王 王直海盗 超级海盗王 异界海盗王 大明海盗王 海盗王图片 海盗王巨剑士加点 海盗王2 海盗船票价 海盗船简笔画 美商海盗船 海盗船复仇者 海盗船内存 长安林肯海盗船 林肯海盗船什么时候上市 香肠派对海盗船下载 海盗船内存条 香肠派对海盗船模式 海盗船电源 超级进化海盗船 林肯海盗船上市 2019款林肯海盗船参数 黄金海盗船 超级无敌海盗船 海盗船vs 密室逃脱海盗船攻略 海盗船键盘怎么样 超级海盗船价格 海盗船电脑 游乐项目海盗船 海盗船 笔记本 海盗船电源系列 海盗船游乐园 海盗船价格 海盗船家庭旅馆 超级海盗船 爬泰山 海盗船k65 迷你海盗船游乐设备 美商海盗船键盘 海盗船内存条怎么样