本文链接地址:一致性模型一句话总结
最近在一次分布式系统的线上交流中,发现居然有那么多种不同的一致性模型,而且因为种类太多,大家理解上也有很多不同,看了一些资料,虽然很多讲的很好,但是过于复杂或者书面,难以理解,所以在这里尝试着为每一个模型做一句话总结,希望可以帮助大家理解。如果我的理解有误,也请大家指正~
1. 啥?啥一致性?
一致性虽然是我们非常常用的一个词,但是非常不幸的是,这个词有太多的含义,在使用的非常容易混淆。所以在讨论一致性之前,我们需要先来看一下一致性的定义:
首先是我们常说的Consistency。这个词经常在两个地方出现:分布式系统的CAP和数据库的ACID。虽然其中“C”都叫一致性(Consistency),但是其含义却截然不同:
- ACID中的一致性:这里主要说的是一种数据上的约束,比如主键是否唯一,或者外键关系是否保持等等
- CAP中的一致性:这里主要说的是不同节点之间数据的同步状态,是不是能让客户端请求处理看上去像访问一个单体系统(Monolith)一样。
然后是Coherence。这个词虽然也翻译成一致性,但是它和上面的一致性截然不同。Coherence指的是多实体或者多层级的数据之间是否一致,比如:缓存一致性(Cache Coherence,缓存中的内容是否和原始内容保持一致)。而Consistency指的是一个单实体本身是否一致,比如上面提到的同一个数据库里的外键关系或者同一个服务不同节点之间的同步状态。