读码农翻身之分布式与集群
1、分布式的情况
假如ABC三个系统分别部署在三台服务器上,他们之间互相调用,来完成业务流程。这就是一个分布式系统,但是从上面可以看出,如果系统A异常,就会引起单点失败。导致整个系统异常。
2、集群
为了解决上面的单点问题,有一种方式就是将系统A多部署几台,当然,这里能否部署多台需要具体的业务逻辑来决定,有些系统多台部署是可能出现问题的。如果部署多台业务正常,那么此时需要考虑的,就是如何让所有请求均匀的分布在每台系统上了。
3、负载均衡
常用的负载均衡的工具有nginx,如下图所示,但是这种场景还是可能存在一个问题,那就是nginx也可能出现单点失败的问题。
nginx的keepAlive架构:
特点:
1、用户看到的好像只有一个机器
2、同一时刻,只让一个负载均衡的机器工作,另一个原地待命。如果工作的那个挂掉了,待命的那个就顶上去。
4、弹性
如果3个系统A还是满足不了需求呢?那就再加服务器。但是某种特殊情况,如淘宝的双11,那一天的用户量很多,需要更多的服务器,而平时需要的服务器又少,那么就需要系统支持弹性。----比如使用云计算,可以轻松的创建、删除服务器。
5、失效转移
失效转移的定义:
用户访问系统,在服务器A上创建了一个购物车,并向其中加入了几个商品。然后服务器A挂掉了,用户的后续访问就找不到服务器A了,这时候就要做失效转移,让另外几个服务器也能去接管用户的请求。