共识(Consensus)和一致性(Consistency)

共识(Consensus)和一致性(Consistency)

Content #

很多同学经常误解的一个点,就是将 Consensus(共识)当成了一致性,也就是称为 Paxos、Raft 为一致性算法,其实 Paxos 和 Raft 是共识算法。而之所以出现这个问题,是因为在很多中文文章中,将 Consensus 和 Consistency 都翻译成了一致性,其实这样是不合适的,因为共识(Consensus)和一致性(Consistency)是两个完全不同的概念。

  1. 共识各节点就指定值(Value)达成共识,而且达成共识后的值,就不再改变了。
  2. 一致性是指写操作完成后,能否从各节点上读到最新写入的数据,如果立即能读到,就是强一致性,如果最终能读到,就是最终一致性。

提到共识算法,Paxos 是一个必须要提及的话题,而且 ZAB 协议、Raft 算法都可以看作是 Paxos 变种,所以,你需要了解 Paxos 算法。

但因为 Paxos 算法的可理解性和可编程性痛点突出,所以在实际场景中,最常的共识算法是 Raft,我们可以基于 Raft 实现强一致性系统。

Viewpoints #

From #

学习路径 | 分布式协议与算法你应该这么学