一致性这个词重载的很厉害,在不同的语境和上下文中,它其实代表着不同的东西:
- 在事务的上下文中,比如ACID里的C,指的就是通常的一致性(Consistency)
- 在集群环境中,主从复制,如ZK(Paxos)、Redis(Raft)等强一致性算法的影子
- 此外,“一致性哈希”,“最终一致性”这些名词里的“一致性”也有不同的涵义。
参考:知乎。
总结:这里事务的一致性和强一致性算法根本不是一个东西,网上我们看到很多帖子介绍2pc、3pc解决分布式事务的算法时,到最后都会加,他们无法保证强一致性,强一致性还得Paxos,其实这样说法根本就是错的,他们解决的根本不是同一个领域的问题(当然,它们两可以搭配使用,比如2pc协调者可以使用Paxos选出)。下面我们来深入分析下。
CAP
首先无论是分布式系统中的事物问题(不同数据节点 或者 不同服务节点),还是集群中的数据一致性