记录学习
从0开始学架构
专栏重要知识点。
27. 如何设计计算高可用架构?
主备
冷备
- 程序包和配置文件都准备好
- ==服务器是启动的==
- 主机故障后,人工将备份机的==业务系统启动==
- 将任务分配器的任务请求切换发给备机
温备
- ==业务已经启动==
- 只是不对外提供服务
- 主机故障后,人工将任务分配器的任务请求发送给备机
- 推荐温备
主从
需要==任务分配器==对任务分类
- 主机 备机 分别计算
- 主机故障,任务继续发给主机,不管是否成功
- 如果主机恢复,任务继续分配给主机
- 如果主机不能恢复,将从机升级为主机(修改配置即可)。增加新的从机,从机就绪后,任务分配器继续分配。
优点: 从机也发挥了性能
缺点:需要任务分类,增加复杂性
集群
(计算高可用)区别于(存储高可用)
对称集群(负载均衡集群)
- ==任务分配器==采取策略,==随机、轮询等==分任务
- 某台故障,不再分配给它,分给其他
- 恢复后,再分给它
关键点
- 分配策略
- 随机、轮询
- 检测服务器状态
- 是否宕机
- 网络是否正常
- 任务执行状态(卡死、响应慢)
常见做法:发送心跳包(服务器信息和任务信息)
非对称集群
Master-Slave 这种的,有首领的
- 分角色。 ZAB算法选举、取ID最小做Master
- 分任务。 Master和Slave任务不同
- 故障。Master故障,需要选举一个Master;Slave故障,直接从集群里剔除
复杂度增加
- 任务分配策略。 划分任务类型
- 角色分配。 Master-Slave 通过ZAB、Raft方式选举Leader
例:Zookeeper
- 无任务分配器节点,每个Server都是任务分配器,Follower收到请求后进行判断,如果是==写==就发给Leader(Master),如果是==读==就自己处理。
- 角色指定。 通过ZAB算法选举Leader,当Leader故障发生,所有Follower节点都==暂停读写操作==,开始选举,直到新Leader选出来。