数据一致性是分布式存储系统中的一个重要问题,如亚马逊DynamoDB、卡桑德拉、里克、窗口天青等。它附带了用于提供高性能、容错和可伸缩性的复制技术.
数据一致性模型是描述数据一致性问题的一种形式化方法。然而,向没有分布式存储系统背景的受众解释常常过于正式,更不用说最终一致性、因果一致性、顺序一致性等概念了。
因此,非正式的解释会更好。此外,有保留的解释最好包括以下三个要点:
发布于 2014-07-30 15:06:15
回答我自己的问题:
一致性模型过于正式和严谨,无法向一般受众解释。幸运的是(或者不幸的是),大多数人都有数据不一致的经验。数据不一致对用户来说通常意味着奇怪的行为。基本上,一致性模型指定哪些行为是允许的,哪些是不允许的。这里的关键点是有不同层次的各种一致性模型。一致性模型越强,用户得到的惊喜就越少。用户和开发人员都需要很强的一致性:用户对他们的数据感觉更好,开发人员发现编程更容易。
典型的一致性条件包括(但不限于)最终一致性、因果一致性、顺序一致性和原子性,从弱到强。
最终的一致性在今天的分布式存储系统中很普遍,以Amazon的Dynamo为代表。最终的一致性很弱(理论上),因为它几乎没有什么承诺。考虑以下场景(如图所示):
数据-不一致-最终-博客http://i1.tietuku.com/48f5bfa9d6d925e0s.png
你刚刚写完你的博客,等不及要发表了。你按下“发布”按钮,立即刷新页面,只会发现你的博客不存在!当您将博客发布到副本节点并刷新另一个节点时,就会发生这种情况。别紧张。刷新,并且它最终会出现。
因果一致性比最终一致性强,因为它保证了所有用户都能按因果顺序观察到两个因果相关的事件。考虑一下在社交网站(如图所示)上的以下虚构对话,摘录自一篇论文
如果不尊重因果关系,则第三用户可以在其原因之前感知其影响。如图中所示,她可能认为朋友听到儿子失踪的消息很高兴!
关键任务应用程序通常需要更强的数据一致性,例如事务。
将继续
https://stackoverflow.com/questions/24143891
复制相似问题