Kafka较早的版本是依赖于zookeeper的,后来逐步用kraft代替了,为了加深理解,特意再整理下分布式共识算法(distributed consensus algorithms),记住,所有的分布式一致性算法都是基于paxos的。 其实,想深刻理解是有一定难度,不写个论文想理解透彻有点难度的,但是我们至少要知道这些算法。
paxos
proposer、learner、acceptor 节点的角色是固定的,是三者中的一个。配合两阶段提交,可以很好的理解,两阶段提交可以理解为是这个算法的实现。
raft
Follower、Candidate、Leader是三个重要的角色概念,一个节点会在这三个角色之间进行转换。实现 Raft 算法两个最重要的:选主、复制日志。
zab
理解zab协议,最主要的是要知道其两个大的过程(原子广播协议):崩溃恢复 和 原子广播。如果集群中存在leader,则进行原子广播,否则进入崩溃恢复阶段。