内容纲要
核心思想
高可用架构的核心思想:通过增加服务器来达到计算高可用。
复杂度
任务管理
- 哪些服务器可以执行任务
- 每台服务器都可以执行任务
- 特定的服务器执行任务(服务器故障后,选举出新的服务器作为执行者)
- 任务如何重新执行
- 保证任务分配到健康服务器(故障时执行失败的任务不做处理)
- 保证任务处理完成(使用任务执行状态反馈机制,根据状态决定是否需要重新将任务分配到其它服务器执行)
常见的计算高可用架构
主备
主备架构的主机提供服务;备机处于就绪状态,不提供服务。
详细设计
- 主机
- 执行所有计算任务
- 主机故障时,任务分配器不分配任务给主机(服务处于 不可用状态)
- 如果主机恢复,任务分配器继续将任务分配给主机
- 如果主机不可恢复,需要切换备机为主机
- 任务分配器将任务分配给新主机
- 为了保持主备架构,需要重新加入新的备机
- 主机故障时,任务分配器不分配任务给主机(服务处于 不可用状态)
- 执行所有计算任务
- 备机
- 冷备
- 原理:备机上的配置等都准备好,但服务系统未启动(只启动服务器)
- 切换为主机时,需要启动(人工)服务系统,再切换任务分配器到当前主机
- 优点:节省一定资源
- 缺点:主备切换时操作较麻烦
- 原理:备机上的配置等都准备好,但服务系统未启动(只启动服务器)
- 温备(推荐)
- 原理:备机上启动服务系统,只是不对外提供服务
- 切换为主机时,只需切换任务分配器指向到当前主机
- 优点:主备切换简单
- 缺点:略微浪费资源
- 原理:备机上启动服务系统,只是不对外提供服务
- 冷备
特点
结构简单,但故障响应恢复时间不稳定。人工成本高,且操作失误风险大。
主从
主从架构中,从机也需要执行任务(主机、从机可能根据业务执行不同任务)。
详细设计
- 主机
- 执行部分计算任务
- 主机故障时,分配器始终发任务给主机(不管执行结果)
- 如果故障恢复:分配器继续分配策略
- 如果故障不可恢复:从机升级为主机,增加新从机,从机就绪后,分配继续
- 主机故障时,分配器始终发任务给主机(不管执行结果)
- 执行部分计算任务
- 从机
- 执行部分计算任务
- 主机故障不可恢复时升级为主机,并加入新从机
- 执行部分计算任务
特点
主从架构从机执行任务的特点提高了硬件资源利用率,但任务分配复杂度上升。人工成本高,且操作失误风险大。
集群
集群主要设计目的是提供高可用的同时降低人工操作带来的后果。根据集群中角色不同分为对称集群和非对称集群。
对称集群
又称负载均衡集群。通常不同机器都有执行所有或者部分任务的能力。
详细设计
设计关键:
- 任务分配器的分配策略
- 任务分配器的服务器状态感知
- 服务器状态
- 任务执行状态(执行时间等)
执行流程:
- 正常情况
- 任务分配器将不同的任务分配给不同的服务器
- 故障情况
- 故障时:任务分配器不再分配任务给故障服务器,转而分配给正常的其它服务器
- 故障恢复后:任务分配器重新给恢复的机器分配任务
非对称集群
只有特定角色能够执行特定的任务(不同角色执行不同的任务)。
详细设计
设计关键:
- 任务分配器设计更加复杂
- 划分不同类型任务
- 分配不同任务给不同角色
- 角色分配策略时间复杂(算法复杂:ZAB、Raft 等)
执行流程:
- 初始化
- 通过某种方式觉得节点角色(选举 Master 等)
- 运行态
- 任务分配器分配不同任务给不同角色
- 故障态
- Master 故障:重新选举 Master
- Slave 故障:剔除故障 Slave