我经常听到关于Nosql,数据网格等的不同演讲的最终一致性。
看起来最终一致性的定义在许多来源中变化(并且甚至可能取决于具体的数据存储)。
看起来最终一致性的定义在许多来源中变化(并且甚至可能取决于具体的数据存储)。
任何人都可以给出一个简单的解释什么最终一致性一般来说,与任何具体的数据存储无关?
最终一致性:
>我告诉你明天会下雨。
>你的邻居告诉他的妻子明天晴天。
>你告诉你的邻居,明天要下雨。
最终,所有的服务器(你,我,你的邻居)知道真相(明天会下雨),但在此期间,客户(他的妻子)走了,以为它会阳光明媚,即使她问在一个服务器知道真相后。
与严格一致性/ ACID合规性相反:
>您的银行余额为$ 50。
>您存入$ 100。
>您的银行余额,从任何地方的任何ATM查询,为$ 150。
>你的女儿用你的ATM卡取40美元。
>您的银行余额,从任何地方的任何ATM查询,是$ 110。
您的余额在任何时候都不会反映您帐户中所有交易的实际金额。
这么多Nosql系统具有最终一致性的原因是,实际上所有的Nosql系统都设计为分布式的,并且对于完全分布式系统,存在超级线性开销以维持严格的一致性(这意味着您只能在事情开始减慢之前进行扩展下来,当他们做你需要抛出更多的硬件的问题,以保持缩放)。