@happyxhw101 我理解 CAP 指的是在实现分布式一致性遇到网络分区( P )时的取舍方案( C or A ),而 Raft 协议是一种保证多副本共识而最终达到多副本强一致的策略,它们都是单独的理论,但在做工程实现时需要一起考虑:比如我有一个分布式系统通过 Raft 实现节点间的强一致,正常情况下,它确实是强一致的,而且运行的很好,但当发生网络分区时我需要结合 CAP 理论在可用性和一致性之间作取舍,如果要舍弃可用性,那就分区期间为了保证一致性让整个系统不可用(具体表现为客户端无法读或写),如果要舍弃强一致性,那就在分区期间也允许读写操作,但后果就是多节点间因为分区导致多 leader 写或单 leader 写的内容无法同步到没有 leader 的分区节点,导致各分区间的数据不一致。 额。。只是个人理解,不知道对不对,CAP 和 Raft 都是我最近在研究的东西,感觉都很抽象😭
@xiyy02 CAP 理论不用太纠结现在很多人批斗这篇论文,因为说的太绝对了。况且分布式的东西你能舍弃 A 吗,共识算法算是保证了部分 A 半数可用,在这种情况下保证一致性。而你一开始提到 Mysql 同步机制,这哪里算是一致性,你这不就是勉强搞了个复制算法吗,同步、半同步、全同步这些东西(个人感觉共识协议是半同步的进化版本)。只能算是做了共识算法的一部分