我的日常

登录/注册
您现在的位置:论坛 新手区 新手教程 > Spring-Session分布式集群会话管理
总共48086条微博

动态微博

查看: 2095|回复: 1

Spring-Session分布式集群会话管理

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2017-04-25 22:29:49 |只看该作者 |正序浏览
    前言5 W& ]8 i3 V  e. ~2 G' m

    : l+ z7 G3 S7 h3 Z: w0 G# ?+ w% U通常在web开发中,会话管理是很重要的一部分,用于存储与用户相关的一些数据。对于java开发者来说,项目中的session一般由Tomcat或者jetty容器来管理。
    7 A" s! q3 x& [( n( ]  T; }6 q/ w% J7 m0 o) @7 G: L# h% k: K
    特点介绍
    8 M, ^2 i( ^; B- {+ }- p- W' o. X
    6 S, d2 f$ a! q% K尽管使用特定的容器可以很好地实现会话管理,但是独立容器挂掉或者由于其他原因重启会导致用户信息丢失,并且无法支持分布式集群会话管理。
    ' J: `; E) L0 d' J5 P$ w' A; P) u5 P3 ?1 I
    上图举例:) {  t* x  c% w% T1 Z

    * y' `8 o. k! ~1 D
    8 s# f7 H6 d; F3 Y& n0 J- j
    9 S) g8 N3 p$ J8 ^这是一个简单的负载均衡集群架构模型,后端三台Tomcat服务,假设每台服务都使用自己的会话管理,而集群策略是基于加权轮询的方式实现。试想一下,用户是不是永远无法登陆系统?
    ! u7 D. C" M- y) |9 |+ Z
    3 Q( l& h6 Q8 {2 K当然,你可能会想,我可以使用基于IP_hash的方式实现负载均衡嘛。但是如果地区分布相对单一,产生的hash值分布可能也不会太均匀,那就起不到负载均衡的作用了。5 C" _( T8 V! `) w, i. r  N
    " f1 @( Y& R) H5 f8 o" ?  O. x* L4 [
    一般来说,有两种解决方案,session复制和session统一管理。对于session复制,简单的几台还是可以的,但是如果上百台甚至上千台就要考虑复制成本问题了。
    . T5 c" r6 g) j0 a( B5 y9 J7 [8 X. L0 h# D6 J6 w  [9 I* G5 ~
    对于统一session管理可以是关系型数据库,比如MySql(基本不用,考虑到效率问题);非关系型数据库 redis,memcache等等。
    5 Y) S2 U1 H; |5 o+ ~6 k  K: p/ _1 _( O) S" P" X
    解决方案
    6 U; G1 m; r/ b0 u* y9 a( m8 [  l4 p0 J' V
    基于Tomcat的会话插件实现tomcat-redis-session-manager 和tomcat-memcache-session-manager,会话统一由NoSql管理。对于项目本身来说,无须改动代码,只需要简单的配置Tomcat的server.xml就可以解决问题。但是插件太依赖于容器,并且对于Tomcat各个版本的支持不是特别的好" a  [6 Z( M7 ^4 g- A

    1 t7 q4 P  j4 P7 _重写Tomcat的session管理,代码耦合度高,不利于维护。
    # `' l' [" L0 `2 R# v$ v$ O
    8 n! u# L7 O0 P7 z7 F8 y$ i2 o使用开源的session管理框架,比如spring_session,既不需要修改Tomcat配置,又无须重写代码,只需要配置相应的参数即可。3 d- }& e, Z7 m4 y- [- T! m+ Z8 {
    ) A* ]% \; d. c
    / L7 F" ]0 g* L% T
    更多关注博客:http://blog.52itstyle.com/archives/759/& t& b4 ]3 z0 V

    我的日常 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与我的日常享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和我的日常的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、我的日常管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    95

    主题

    3

    听众

    2157

    金钱

    版主

  • TA的每日心情
    开心
    2019-10-29 10:01
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    优秀版主

    沙发
    发表于 2017-04-27 19:34:56 |只看该作者
    棒棒哒
    7 d- |- P( W. T8 x9 t
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表