计算高可用, 2023-07-30

2023-07-29  本文已影响0人  Mc杰夫

(2023.07.30 Sun @KLN)
计算高可用的设计目标是当出现硬件损坏,计算软任务仍然能够正常运行。其本质是通过冗余来规避部分故障的风险,而单台服务器无论如何都打不到这个目标,所以其设计思想课简单归结为:通过增加更多服务器来达到计算高可用。

计算高可用的架构和数据高可用的架构相似,差别在于不需要在后台做数据同步。

该架构设计的关键点:

主备架构 master-replica

main-replica

计算高可用中最简单的架构。设计如下:

  1. 主机执行所有计算任务,如,读写数据、执行操作等
  2. 当主机故障,任务分配器不会自动将计算任务发送给备用机replica
  3. 如果主机恢复,则任务分配器继续将任务发送给主机
  4. 如果主机不能恢复,则人工干预,将replica升为主机,由任务分配器将任务发送给新主机;同时,需要人工增加新的机器作为备机

根据备机replica的状态不同,又可细分为冷备架构和温备架构:

一般情况下采用温备方案,尽管比冷备架构更耗费能源。

该架构适合适用人数不多的场景,内部管理系统、后台管理系统扥,或使用频率不高的业务,不适合在线的业务。

主从main-secondary

main-secondary

与主备架构不同,主从架构中的服务器都在工作,区别在于执行的任务不同,由任务分配器决定不同的服务器执行何种工作。

优点:

缺点:

集群:对称

前面介绍的两种架构,存在的主要问题是人工操作效率低、容易出凑、不能及时处理故障。在可用性要求严格的场景中,我们需要系统能够自动完成切换操作,于是引出高可用集群方案。

对称集群中每个服务器的角色都是一样的,可以执行所有任务。对称集群更通俗的叫法是负载均衡集群.


symm

设计如下:

  1. 一般来说,任务分配器采用某种册页(随机、轮询等)将计算任务分配给集群中的不同服务器
  2. 集群中某台服务器故障后,任务分配器不再将任务分配给它,而分配给其他服务器执行
  3. 服务器恢复后,重新被分批任务

设计关键点:

检测工作状态,常用的做法是在任务分配器和服务器之间通过心跳来传递信息,根据实际情况确定状态判断条件。

分配策略以随机和轮询为主。

集群:非对称

asymm

与对称集群不同,非对称集群中每个服务器的角色是不同的,承担不同的职责,以main-secondary为例,部分任务main执行,而部分任务secondary执行。

设计如下:

  1. 集群区分不同服务器的角色。例如通过Paxos算法选举,或者简单的选取当前存活服务器中节点ID最小的服务器作为main服务器
  2. 将不同任务发送给不同服务器
  3. 指定类型的服务器故障,则重新分配角色

对比对称集群,其设计复杂度体现在:

可参考ZooKeeper。

Reference

1 从零开始学架构-照着做,你也能成为架构师,李运华著,电子工业出版社
2 excalidraw

上一篇 下一篇

猜你喜欢

热点阅读