天天看点

分布式系统遇到的挑战

分布式系统遇到的问题

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,也可以自己实现,主要重写HttpServletRequestWrapper中的getSession方法。

4.分布式配置中心

  在分布式系统中,一次构建,发布,上线是非常重要的一个过程,它不像单机时代那样重启一台机器,一个进程就可以了,在分布式系统中,它涉及到将软件包(例如war包)分发到可能几百台机器上,然后将几百台机器上的应用一一重启,这么一个过程需要很长的时间。那么如何在不停集群的情况下

继续阅读