共计 1853 个字符,预计需要花费 5 分钟才能阅读完成。
导读:《架构设计》系列为极客工夫李运华老师《从 0 开始学架构》课程笔记。本文为第六局部,次要介绍高可用计算架构,介绍了高可用架构设计的要点以及不同架构形式的优缺点。
扫描文末二维码 关注公众号 回复“架构设计”获取架构设计笔记残缺思维导图
高可用计算架构
设计思维:通过减少更多服务器来达到计算高可用
设计复杂度:次要体现在工作治理方面,即当工作在某台服务器上执行失败后,如何将工作重新分配到新的服务器进行执行
哪些服务器能够执行工作
- 每个服务器都能够执行工作
- 只有特定服务器(通常叫“主机”)能够执行工作。当执行工作的服务器故障后,零碎须要筛选新的服务器来执行工作
工作如何从新执行
- 对于曾经调配的工作即便执行失败也不做任何解决,零碎只须要保障新的工作可能调配到其余非故障服务器上执行即可
- 设计一个工作管理器来治理须要执行的计算工作,服务器执行完工作后,须要向工作管理器反馈工作执行后果,工作管理器依据工作执行后果来决定是否须要将工作重新分配到另外的服务器上执行
架构设计
主备
主备架构是计算高可用最简略的架构,和存储高可用的主备复制架构相似,然而要更简略一些,因为计算高可用的主备架构毋庸数据复制
具体设计
- 主机执行所有计算工作
- 当主机故障(例如,主机宕机)时,工作分配器不会主动将计算工作发送给备机,此时零碎处于不可用状态
- 如果主机可能复原(不论是人工复原还是主动复原),工作分配器持续将工作发送给主机。
- 如果主机不可能复原(例如,机器硬盘损坏,短时间内无奈复原),则须要人工操作,将备机升为主机,而后让工作分配器将工作发送给新的主机(即原来的备机);同时,为了持续放弃主备架构,须要人工减少新的机器作为备机。
备机
- 冷备:备机上的程序包和配置文件都筹备好,但备机上的业务零碎没有启动
- 温备:备机上的业务零碎曾经启动,只是不对外提供服务
优缺点
- 长处就是简略,主备机之间不须要进行交互,状态判断和切换操作由人工执行,零碎实现很简略
- 毛病正好也体现在“人工操作”这点上
主从
计算高可用的主从架构中的从机也是要执行工作的。工作分配器须要将工作进行分类,确定哪些工作能够发送给主机执行,哪些工作能够发送给备机执行
具体设计
- 失常状况下,主机执行局部计算工作,,备机执行局部计算工作
- 当主机故障(例如,主机宕机)时,工作分配器不会主动将本来发送给主机的工作发送给从机,而是持续发送给主机,不论这些工作执行是否胜利
- 如果主机可能复原(不论是人工复原还是主动复原),工作分配器持续依照原有的设计策略分配任务
- 如果主机不可能复原,则须要人工操作,将原来的从机降级为主机(个别只是批改配置即可),减少新的机器作为从机,新的从机准备就绪后,工作分配器持续依照原有的设计策略分配任务
优缺点
- 长处:主从架构的从机也执行工作,施展了从机的硬件性能。
- 毛病:主从架构须要将工作分类,工作分配器会简单一些。
集群
计算高可用集群蕴含 2 台服务器的集群,这点和存储高可用集群不太一样。存储高可用集群把双机架构和集群架构进行了辨别;而在计算高可用集群架构中,2 台服务器的集群和多台服务器的集群,在设计上没有本质区别,因而不须要进行辨别
对称集群
艰深的叫法是负载平衡集群。集群中每个服务器的角色都是一样的,都能够执行所有工作
具体设计
- 失常状况下,工作分配器采取某种策略(随机、轮询等)将计算任务分配给集群中的不同服务器
- 当集群中的某台服务器故障后,工作分配器不再将任务分配给它,而是将任务分配给其余服务器执行。
设计关键点
-
工作分配器须要选取调配策略
- 任务分配策略比较简单,轮询和随机根本就够了
-
工作分配器须要检测服务器状态
- 状态检测略微简单一些,既要检测服务器的状态,例如服务器是否宕机、网络是否失常等;同时还要检测工作的执行状态,例如工作是否卡死、是否执行工夫过长等。
- 罕用的做法是工作分配器和服务器之间通过心跳来传递信息,包含服务器信息和工作信息,而后依据理论状况来确定状态判断条件。
非对称集群
非对称集群中不同服务器的角色是不同的,不同角色的服务器承当不同的职责
具体设计
- 集群会通过某种形式来辨别不同服务器的角色。
- 工作分配器将不同工作发送给不同服务器。
- 当指定类型的服务器故障时,须要重新分配角色。
设计复杂度
- 任务分配策略更加简单:须要将工作划分为不同类型并调配给不同角色的集群节点。
- 角色调配策略实现比较复杂:例如,可能须要应用 ZAB、Raft 这类简单的算法来实现 Leader 的选举。
集体思考
绝对高可用存储架构,计算架构绝对简略,不波及数据同步和一致性。关键点在于如何将申请路由到适合的实例上。
reference
- 从 0 开始学架构