本文是《如何学习分布式系统》中,关于一致性模型的相关介绍。
什么是一致性模型
一致性模型指的是分布式系统对外界承诺的一个契约,外界按照契约的规定与分布式系统发生交互,就能得到契约中承诺的观测结果。
这么解释过于抽象,我们看几个实际的例子。
- 你给女朋友转账了一千块,然后你给她打电话:“亲爱的,我给你打了一千块”。女朋友一查余额,果然多了一千块,于是龙颜大悦。
- 女朋友自拍发了朋友圈,打电话命令你点赞,你打开朋友圈,发现什么也没有。花了五分钟哄好了发怒的女朋友,才看到那条姗姗来迟的朋友圈。
- 在女朋友的自拍下面,你看到你女朋友写到“咱们上次逛街的地方”,过了三秒,看到她闺蜜的评论“这是哪里啊?”
这些系统表现出来的行为,就是其一致性模型的体现。
一致性模型的研究由来已久,在基于共享内存的多核CPU并行计算中,科学家就已经开始对一致性模型开始研究,然后将一致性模型顺理成章的推广到基于网络通信的多节点协同系统中。
在分布式系统中,最理想的情况是一个事件一旦发生,就立刻被所有参与者感知,每个事件都有精确的物理时间用来确定先后顺序,然而计算机技术实际上有各种各样的限制,所以完美的一致性模型很难达到,所以大家就马马虎虎的退而求其次啦。
一致性模型有强弱之分,一般来说,如果一个算法能在一个一致性模型中工作,那么它就能在一个更强的的一致性模型中工作。
在后面的文章中,我们一起研究几个常见的一致性模型。
扩展阅读
分布式系统中还有很多一致性模型,有兴趣的话,可以参考这个网站。
更多相关内容,请参考系列文章《如何学习分布式系统》。