一、分布式系统核心技术
1、分布式 Session
1. Session粘滞
即粘性Session,当用户访问集群中某台机器后,强制指定后续所有请求都落到此台机器上。
使用场景:机器数适中,对稳定性要求不是非常苛刻。
优点:实现简单,配置方便,没有额外网络开销。
缺点:网络中有机器Down掉时,用户Session会丢失,容易造成单点故障。
方案:Nginx的ip_hash负载均衡方案。
2. Session复制
将一台机器上的Session数据广播复制到集群中其余机器上。
使用场景:机器较少,网络流量较小。
优点:实现简单,配置较少,当网络中有机器Down掉时不影响用户访问。
缺点:广播复制到其余机器有一定延迟,带来一定网络开销。
方案:开源方案Tomcat-Redis-Session-manager,暂不支持Tomcat8。
3. 缓存集中式管理
将Session存入分布式缓存集群中的某台机器上,当用户访问不同节点时,先从缓存中拿Session信息。
使用场景:集群中机器数较多,网络环境复杂。
优点:可靠性好。
缺点:实现复杂,稳定性依赖于缓存的稳定性,Session信息方入缓存时要有合理的策略写入。
方案:开源方案Spring-Session,也可以自己实现,主要重写HttpServletR