分布式集群保证强一致性的策略

114 阅读1分钟

为方便自己回忆的版本,之后有时间了补充。

分布式强一致性算法 — Paxos、Raft(简化版本的 Multi-Paxos 算法)、ZAB

首先就是这几个算法是干嘛的? 稍微专业一点就是用来确保 distributed consensus,说人话就是 保证分布式集群的强一致性,经典的应用有 Zookeeper、ETCD 等。

简单理解

Paxos 简单理解为“城邦选举”,这个城邦的民众有很多的角色,例如,议员、普通民众等,然后通过选举来选举城邦主,此处省略一堆字(未来完善),之后的 Raft、ZAB 算法都有 Paxos 算法的影子,或者可以理解为都是 Paxos 算法关于城邦主选举过程中对角色和流程的简化。

Raft 和 ZAB(Zookeeper Atomic Broadcase,原子广播协议))都可以看为是对 Multi Paxos 的简化版本,有更少的“角色”,其中 Raft 和 ZAB 非常的类似,术语上有所不同,例如 leader 节点的 “版本号” ,Raft 使用 term,而 ZAB 使用 epoch 来表示 leader 节点的 “版本号”,最新版本的 leader 会被当做真正的 leader,同时 leader 必须要得到一半以上“选民”的支持才能被选举出来。

另外 Raft 和 ZAB 的区别,Raft 的心跳信息是 leader 通知所有 follower,我还活着,别急着选举。而 ZAB 的心跳信息是所有 follower 随机区间时间内请求 leader,确保 leader 还在活着,十足的“刁民”,总想上位。

Ref:
  1. raft.github.io/
  2. thesecretlivesofdata.com/