分布式中session常见问题,即session共享.传统架构中(CS/BS)session存在服务器内存中key为cookie(session的唯一Id),cookie存在客户端浏览器中.在分布式场景下,假设有两个相同的服务负责同一业务,就可能出现session不同步的问题,下面为分布式场景下session不同步的解决方案.
一、采用无状态服务,抛弃session 二、存入cookie(有安全风险) 三、服务器之间进行Session同步这样可以保证每个服务器上都有全部的Session信息,不过当服务器数量比较多的时候,同步会有延迟甚至同步失败。
四、IP绑定策略使用Nginx做反向代理,ngixn中的IP绑定策略(将客户端的IP进行hash运算,对hash进行取模选择对应的服务).同一IP只能在指定的同一个服务上访问,但是这样做失去了负载均衡的意义,当挂掉一台服务器的时候,会影响一批用户的使用,风险很大。
五、使用Redis存储把Session放到Redis中储存,虽然架构上变得复杂,而且需要多访问一次Redis,但是这种方案带来的好处也很大的:
1.实现了Session共享;
2.可以水平扩展(增加Redis服务器);