集群
最后更新于:2022-04-01 07:10:26
## 集群
* 现在如果要构造一个真正在生产环境上可使用的可靠的系统,基本都离不开集群的概念,总的来说集群是指由若干互相独立的机器通过高速网络组成的一个整体服务,整个集群的内部实现相对外部是透明的,对外部而言它就像一个独立的服务器。要使若干机器协同工作不是一件简单的事,其核心是如何在多机器之间进行通信及各种任务调度使之协同工作。
* 在工程上常见的两种集群是——负载均衡集群和高可用集群。
* 负载均衡集群(Load Balance Cluster),随着系统的处理量的不断增加,很快到达一台机器的处理极限,所以需要更多的机器来分担处理,负载均衡集群一般是通过一定的分发算法把访问流量均匀分布到集群里面的各个机器上进行处理,理想的集群是通过添加机器使处理能力达到线性增长,但现实中往往处理过程并非是无状态的,会涉及到一些共享状态变量,所以当集群数量达到一定程度后处理能力并不能按线性增长且可靠性可能也会降低。关于负载均衡集群如何协调分配分发请求的问题,即可以使用专门的负载均衡硬件如F5,也可以使用软件级别的方式实现负载均衡如LVS、HAProxy等。
* 高可用集群(High Available Cluster),高可用集群通过软件把若干机器连接起来,这种集群更偏重的是当集群中某个机器发生故障后能通过自动切换或流量转移等措施来保证整个集群对外的可用性。在实际运用中很经典的就是mysql数据库的主从节点,一般情况如果是一主多从我们会使用读写分离措施,主节点负责执行写操作而从节点执行读操作,一旦主节点发生故障后系统将自动从多个从节点中选举出一个节点作为主节点继续对外提供服务,保证了服务的高可用。高可用集群与负载均衡集群一般不会绝对地划分开,我们不会将一台机器什么也不做就放着就等其他机器出故障再去候补,为了使用地更加高效可以把这些备用(standby)的机器用于负载均衡,故障发生后再接管故障节点的职责。
喜欢java的同学可以交个朋友:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698bd8d22882.jpg)