1. MSM简介
1.1 MSM(memcached session manager)
- MSM是一个用于解决分布式tomcat环境下session共享问题的开源解决方案
- 以tomcat插件的方式部署在了tomcat服务器上
- 即可以从本机内存快速读取Session信息(黏性Session),也可以使用memcached存储Session,以实现高可用
1.2 MSM的特性
- 支持黏性、非黏性Session
- 无单一故障点
- 可处理tomcat故障转移
- 可处理memcached故障转移
- 插件式session序列化
- 允许异步保存session,以提升响应速度
- 只有当session有修改时,才会将session写回memcached
- JMX管理&监控
1.3 黏性Session和非黏性Session(一般用于tomcat服务集群)
黏性Session:即session sticky,不复制Session会话:
- 此模式下同一会话中的请求都被派发到同一个tomcat实例上,这样就无须在多台服务器之间实现session共享了
- 缺点:不能实现failover(故障切换),一旦用户访问的机器挂掉,那么其session就会丢失
非黏性Session:即session replication,复制Session会话:
- 此模式下同一个会话中的请求可以被分配到不同的tomcat实例上进行处理
- 此时就需要在不同服务器之间同步、复制session,这样即使一台服务器挂掉了,请求在其他服务器上照样可以访问到session信息
- 缺点:Session复制需要系统资源和网络开销
1.4 MSM解决的问题
问题:
- 若有一个Tomcat集群,使用粘性session,如何应对单点故障?
- 为了应对更多的并发量和可用性,可以不断的增加Tomcat节点,但是单点故障仍旧会是个问题
- 如果使用粘性Session,一个Tomcat故障时,其他Tomcat并不能就干故障Tomcat节点的Session
解决此问题:
- 将粘性Session同时保存在Memcached中,如果单个Tomcat发生故障,集群中的其他Tomcat可以从Memcached中得到Session信息
2. Tomcat和Memcached的故障转移
2.1 Tomcat的故障转移
2.2 memcached的故障转移
Tomcat之分布式session共享(MSM)
原文:https://www.cnblogs.com/hgzero/p/13172620.html