SESSION是服务器为客户端创建的一个会话,存储用户的相关信息,用以标识用户身份等。在单服务器环境下是不需要考虑会话的一致性的问题的,但是在集群环境下就会出现一些问题,假如一个用户在登录请求时负载均衡到了A服务器,A服务器为其分配了SESSION,下次请求数据时被分配到了B服务器,此时由于B服务器不存在此用户的SESSION,此用户会被重定向到登录页面,这种情况是不合理的业务逻辑,所以需要维护SESSION的一致性。
多个服务器之间互相同步SESSION,即A服务器生成一个SESSION信息后同步传输到B、C、D等服务器,同样B、C、D服务器生成SESSION信息后也需要同步到A,这样每个服务器之间都包含全部的SESSION
SESSION复制的功能来实现集群SESSION需要网络传输进行同步,其会占用带宽,并且存在一定的延迟SESSION信息有所变化,必须同步更新所有服务器SESSION内容通过将负载均衡服务器进行修改,通过对返回给用户的SESSION ID或者用户请求的IP地址进行标记,也就是使用第四层传输层中读取网络层的IP或者是在第七层中读取HTTP协议中某些属性来做HASH,保证对于此用户的请求全部落到同一台服务器上
将数据直接存储到客户端比如Cookie或请求头中,每次请求客户端自动携带数据信息
将SESSION存储在一台单独的服务器中的数据库中,例如Mysql、Oracle、SqlServer、Redis、Mongodb等等,各SERVER服务器需要用户信息时携带SESSION ID对于集中存储服务器进行请求,进而获取用户信息
SERVER服务器重启不会造成SESSION丢失