分布式Session的几种实现方式

包括但不限于:

粘性 Session

每次请求都会转发到指定的机器,比如 Nginx 的 ip_hash,将用户和机器绑定起来,造成单机的效果,实现起来较为简单,只需加一些额外的配置

但是这种方式有一定的局限性,一旦当前服务器发生故障,用户会被转发到其他服务器上,Session 信息就会丢失

Session 复制

这种方式需要服务器的支持,每当 Session 发生改变,该节点就会自动将 Session 内容广播给其他节点

因此对服务器的带宽有一定的占用,如果数据量过多,可能会对请求的响应造成一定的影响

Session 共享

可以将 Session 信息存入 Redis

缺点就是每次引入第三方中间件,都要考虑可靠性问题,挂了怎么办

Session 持久化到数据库

持久化 Session 有一个好处就是当服务器发生故障的时候,Session 不会丢失

缺点就是给数据库造成了额外的负担

Cookie

将数据放在 Cookie 里,实现起来也比较简单

只是数据放在浏览器里是不安全的,不能放敏感数据