分布式session常见的方案

cookie如果不设置过期时间的话,关闭浏览器就立马过期。

主要有以下四种方案:

将session数据保存在cookie中

即用cookie会话机制替代session会话机制,将session数据保存到客户端浏览器的cookie中,这样同一个用户访问同一网站时,无论负载均衡到哪台web服务器,都不用再去服务器请求session数据,而直接获取客户端cookie中的session数据。如此,同一个用户的登录状态就不会丢失了。

弊端:

  • 必须要加密,否则有安全性问题
  • cookie大小受限,能存放的信息有限
  • 影响带宽

将session数据保存到MySQL数据库中

sessionid还是利用cookie机制存储到客户端,但session数据却存放在MySQL服务器上。(需要建立sessionid和session数据行的对应关系)

弊端:

  • 用户量大的话,对mysql服务器影响非常大

将session数据保存到redis中

最好的方案,性能高很多,而且redis还支持过期机制。与session过期机制吻合。

弊端:实现相对麻烦一点

Session复制

通过web服务器的配置,将Session同步到其他web服务器上面,达到每个web服务器都保存一致的session。

弊端:需要依赖支持的Web服务器,一旦更换成不支持的Web服务器就不能使用了,在数据量很大的情况下不仅占用网络资源,而且会导致延迟。

Session粘滞

将用户的每次请求都通过某种方法强制分发到某一个Web服务器上,只要这个Web服务器上存储了对应Session数据,就可以实现会话跟踪。
优点:使用简单,没有额外开销。
缺点:一旦某个Web服务器重启或宕机,相对应的Session数据将会丢失,而且需要依赖负载均衡机制。

你可能感兴趣的:(分布式session常见的方案)