分布式session共享的几种实现方案

单个服务时不会出现session共享的问题,分布式服务时就需要考虑多个web容器之间的session共享问题,如果没有考虑session问题,就会导致很多问题,例如用户请求落到没有session的容器上就会出现重新登录的情况。常见的解决方案有以下几种:

1.session复制,启用web容器的session复制功能,同步多个web容器内的session,即使其中一个挂了,可从其他容器内获取,默认都是从当前容器获取session

2.session绑定,例如通过nginx的ip_hash绑定ip到容器,但是这样有个问题就是一个容器挂掉的时候容器内的session就没了,可能导致服务异常,而且不符合分布式的思想

3.使用cookie记录session,客户端发送请求时,服务端把更新后的session放在cookie返回给客户端,但是这样有两个弊端,一定cookie的容量有限,数据量不能太大;另一个是如果客户端关闭cookie就无法记录最新session

4.session服务器,将session存储在单独的服务器上。例如使用memcached,redis分布式数据库,在其基础上进行包装使其符合session的储存和访问要求。将无状态的应用服务器和有状态的session服务器分开部署,客户端请求session时,应用服务器再请求session服务器。

 

你可能感兴趣的:(分布式)