众多的“一致性”
说到一致性,大家都不陌生。随着分布式系统、微服务系统、区块链等技术的发展,“一致性”一词出现的频率也越来越高。
然而,“一致性”这一词语所代表的概念却并不唯一。例如我们常听到“事务的一致性”、“最终一致性”、“一致性哈希”等,它们表述的并不是同一个概念。理解这点十分重要。如果错误地认为以上几个“一致性”都指同一个概念,那就搞混了。
在明确以上概念各不相同的基础上,我们介绍下分布式系统中的“一致性”(例如“最终一致性”中的“一致性”)到底指的是什么。
CAP一致性
我们所说的“最终一致性”中的“一致性(Consistency)”是说数据副本存放在分布式系统中的不同节点上,如果用户修改了系统中的数据,则在一定时间后,用户能从系统中读取到修改后的数据。
或者换一种说法,用户在分布式系统的某个节点上进行了变更操作,则在一定时间后,用户能从系统的任意节点上读取到这个变更结果。
因此,这里的“一致性”指的是针对分布式系统的各个节点对外的表现是一致的,就像是一个节点一样。
例如在图所示的分布式系统中存在大量的节点。我们设置a=5,这一操作可能落在任意一个节点上(图中所示写请求落在了节点A上),则在一定时间之后,访问系统一定能读到a=5(图中所示读请求落在了节点H上),则说明这个分布式系统满足一致性。

为了便于表述,我们将这种一致性称为“CAP一致性”。
要注意的是,我们虽然以同质节点(指这些节点运行同样的代码)进行了举例,但是CAP一致性对于异质节点同样也是成立的。例如分布式应用中存在异质的订单处理节点A和库存管理节点B。如果该分布式应用满足CAP一致性,则当我们向订单处理节点A

本文探讨了分布式系统中的一致性概念,包括CAP一致性及其强弱,提到了严格一致性、顺序一致性、线性一致性和最终一致性等。文章强调一致性的重要性,并提醒读者注意与事务一致性、一致性哈希等其他一致性概念的区别。

1万+

被折叠的 条评论
为什么被折叠?



