首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

集群中关于会话信息的解决方案

一般有三种解决方案

IP分流

会话复制

会话共享(推荐)

IP分流

这个技术我曾经在我的个人博客中用过,简单方便。

优点

服务端代码不用变

Nginx只需要加个ip_hash的配置

缺点

会破坏Nginx的负载均衡

当某个服务器挂了的时候,服务器所在用户也会退出登录状态

服务器重启时,用户需要重新登录

会话复制

这个我没用过,据说就是把session在所有服务器上都复制一份,且服务器数量太多时容易出问题,由于没用过,暂不讨论。

会话共享

既然是共享,共享到哪?当然是共享到redis了。

缺点

实现麻烦

优点

不会破坏负载均衡

没有服务器节点的数量限制

拓扑图

实现

登录成功

生成一个定长的随机字符串作为JSESSIONID,当然了,随机字符串并不能保证唯一,所以在后面再加一个自增的数字,这个自增的数字可以放在redis中

用JSESSIONID作为key,用户信息作为value,有效期30分钟,存入redis

像客户浏览器中写入cookie,其key为“JSESSIONID”,value为JSESSIONID的值。

登录验证

从请求中找出key=“JSESSIONID”的cookie,用它的值作为key去redis中查找用户的登录信息。

验证码等用户零时信息

生成验证码

从请求中找出key=“JSESSIONID”的cookie,其实就是JSESSIONID

把验证码放入redis,他的key=JSESSIONID + “:code”,最好设置有效期

校验验证码

从请求中找出key=“JSESSIONID”的cookie,其实就是JSESSIONID

从redis中找出验证码,key=JSESSIONID + “:code”

用过之后删除redis中的验证码

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180921G0I3TE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券