分布式常见问题之session问题

一.zookeeper解决分布式session问题

1.1session定义

当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。简单来说就是用于客户端与服务器通讯会话技术。

1.2session实现原理

客户向服务器端发送请求后,在服务器端创建 Session ,返回Sessionid给客户端浏览器保存在本地,当下次发送请求的时候,在请求头中传递sessionId获取对应的从服务器上获取对应的Sesison对象信息。

注意:HttpSession session = request.getSession(false);在获取session的时候需要穿入参数false(不会创建新的sessionID,这样才会获取到同一个sessionID)

2.分布式下产生session的原因

session是在服务器中创建的对象,而分布式情况下,在不同的服务器,就会有不同session的问题。

3.解决不同session的方案
  1. spring-session-data-redis + redis:将sessionID缓存在redis中。spring-session-data-redis包中已经帮忙处理好了,只需要导入对应的依赖,很方便的解决方法。(重要明确存在的问题,及解决原理)
  2. session存在本地cookie中(不推荐,不安全)
  3. token代替session,其实就是将值存入redis中,使用的时候在取出对应的value值。(redis在分布式中是可以共享的)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值