0%

从0开始学架构

记录学习从0开始学架构专栏重要知识点。

27. 如何设计计算高可用架构?

主备

  1. 冷备

    1. 程序包和配置文件都准备好
    2. ==服务器是启动的==
    3. 主机故障后,人工将备份机的==业务系统启动==
    4. 将任务分配器的任务请求切换发给备机
  2. 温备

    1. ==业务已经启动==
    2. 只是不对外提供服务
    3. 主机故障后,人工将任务分配器的任务请求发送给备机
    4. 推荐温备

主从

需要==任务分配器==对任务分类

  1. 主机 备机 分别计算
  2. 主机故障,任务继续发给主机,不管是否成功
  3. 如果主机恢复,任务继续分配给主机
  4. 如果主机不能恢复,将从机升级为主机(修改配置即可)。增加新的从机,从机就绪后,任务分配器继续分配。

优点: 从机也发挥了性能
缺点:需要任务分类,增加复杂性

集群

(计算高可用)区别于(存储高可用)

对称集群(负载均衡集群)

  1. ==任务分配器==采取策略,==随机、轮询等==分任务
  2. 某台故障,不再分配给它,分给其他
  3. 恢复后,再分给它

关键点

  1. 分配策略
    1. 随机、轮询
  2. 检测服务器状态
    1. 是否宕机
    2. 网络是否正常
    3. 任务执行状态(卡死、响应慢)

常见做法:发送心跳包(服务器信息和任务信息)

非对称集群

Master-Slave 这种的,有首领的

  1. 分角色。 ZAB算法选举、取ID最小做Master
  2. 分任务。 Master和Slave任务不同
  3. 故障。Master故障,需要选举一个Master;Slave故障,直接从集群里剔除

复杂度增加

  1. 任务分配策略。 划分任务类型
  2. 角色分配。 Master-Slave 通过ZAB、Raft方式选举Leader

例:Zookeeper

  1. 无任务分配器节点,每个Server都是任务分配器,Follower收到请求后进行判断,如果是==写==就发给Leader(Master),如果是==读==就自己处理。
  2. 角色指定。 通过ZAB算法选举Leader,当Leader故障发生,所有Follower节点都==暂停读写操作==,开始选举,直到新Leader选出来。
给元宝买个罐头吃~~