session同步

对于大型分布式网站来说,一个业务后面往往对应着多台服务器。用户的请求将在不同的服务器之间进行跳转,这样的情形下,我们就需要保持session在不同服务器之间的同步。

1、基于数据库的session共享。

原理:使用数据库专门用来存储session信息,保证session的持久化。

优点:服务器出现问题,session不会丢失。

缺点:如果网站的访问量很大,把session存储到数据库中,会对数据库造成很大压力,还需要增加额外的开销维护数据库,系统整体的吞吐会受到很大的影响。

2、session 复制

原理:将一台机器上的Session数据广播复制到集群中其余机器上

优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问

缺点:在机器较少,网络流量较小广播式复制到其余机器上,当机器数量增多时候会有一定廷时,带来一定网络开销

3、基于redis的分布式session

原理:将sessionId作为key, session 作为value 保存在redis集群中

优点:实现了集群之间的session同步,实现了服务器的高可用

实现流程:用户请求通过负载均衡设备(比如nginx)转发到不同的应用服务器集群上,应用服务器会根据sessionId来访问redis 集群进行session的存取。这样即使某台服务器宕机了,也不会影响到其他的服务器。

原文地址:https://www.cnblogs.com/wbringarden/p/9717866.html