分布式下session一致性问题

Nginx轮询后call tomcat,tomcat产生seesion. 当call不同的tomcat会产生seesion不一致的问题

解决方案1:

 在Nginx采用ip_hash算法。保证同一个ip匹配到同一个tomcat上。

缺点:当一个公司是局域网,全部通过一个ip来访问,会匹配到同一个tomcat里。只记录公网IP。

         当某个tomcat挂掉以后,其上session丢失,造成用户访问出现问题。


解决方案2:

    服务器seesion复制,

        tomcat支持集群,有个cluster节点,打开后进行集群模式。所有订阅的tomcat都会收到广播。

    缺点:会有一定延迟,虽然是在局域网内。消耗内存资源。因为session保存在内存中。

解决方案3:

    session集中管理

    原理:session不由tomcat管理,统一放到一个地方集中管理,读取与写入session都放在第三方软件中。如redis,MongnDB, MySQL等。浏览器访问后会产生session id,tomcat通过session id去redis中取。

    采用springsessionRepositoryFilter。加在所有的filter与listener前面。

    配置redistribute连接池。

    缺点:对应用有侵入性,修改了很多代码。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值