分布式下session共享问题(redis + springsession)

问题1. 同一个服务,复制多份,session不同步问题。

解决方案:

1. session复制/seesion同步:tomcat原生支持,只需要修改配置文件。有延迟问题,降低带宽,内存存储多,水平扩展难。每台服务器需要存储所有session,每台服务器存储相同的副本。

2. 客户端自己存储cookie:不安全,http带大量信息,影响网络带宽。

3. hash一致性:利用ip的hash一致性,不同hash值范围落到不同服务器,只落到一台服务器。只需要修改ngnix配置。但是,水平扩展后,rehash后session重新分布,也会有一部分路由不到正确的session.

4. session统一存储:session不存储在服务器中,session统一存储在nosql数据库中,如redis. 无法篡改,水平扩展容易,只需要解决redis服务器水平扩展。但是,连接redis有网络延迟

问题2. 不同服务,子域sessionn不能共享问题。

解决方案:

第一次使用session,命令浏览器保存卡号,JSESSIONID这个cookie, 以后浏览器访问哪个网站就会带上这个网站的cookie.

发卡的时候(指定域名为父域名),即使是子域系统发的卡,也能让父域直接使用。

以下是原生代码:

new Cookie("JSESSION","data").setDomain("")

或者使用springsession

解决方案的通俗描述:

1. 后端统一存储

2. 前端一个卡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值