分布式问题02_分布式session

172 阅读1分钟

参考:zhuanlan.zhihu.com/p/161613562

一般方案

1、Session复制。在多台应用服务器之间同步session,并使session保持一致,对外透明。当实例A上保存了session信息后,主动将session复制到集群其他实例。复制需要时间,复制过程中容易产生session信息丢失,或session还未复制到实例B,客户就请求到了实例B,这时就会新建session,同时又会进行session复制。

2、Session黏贴。当用户访问集群中某台服务器后,通过hash强制指定后续所有强求均落到此机器上。当实例出现问题时,请求就会被转发到其他实例,其他实例没有该客户端session。

3、Session集中存储。将Session存入分布式缓存中,所有服务器应用实例都统一从分布式缓存中获取Session信息。

  • Memcahed Session Manager: 1.整合tomcat 目录引入memcached 整合jar; 2.tomcat conf context.xml 配置tomcat整合memcached。修改的是服务器的配置,本质上还是应用服务器在管理。

  • Redis Session Manager:1.基于应用的整合;2.注解@EnableRedisHttpSession;3.注意修改session的时候修改的是jvm, 需要同步redis服务器里面的session值。

image.png