Answers:
最终一致性:
最终,所有服务器(您,我,您的邻居)都知道真相(明天将要下雨),但是与此同时,客户(他的妻子)走了,认为这将是晴天,即使她询问一台或多台服务器(您和我)的价格更新之后。
与严格一致性/ ACID合规性相反:
您的余额在任何时候都无法反映出您在该确切时刻进行的所有交易的实际总和。
的原因,为什么如此多的NoSQL系统具有最终一致性是,几乎所有的人都被设计成分布,并与全分布式系统有超线性开销来保持严格一致(这意味着你只能这么远以前的事情开始放缓规模下降,并且当它们出现时,您需要成倍地增加硬件来解决问题,以保持扩展性。
最终一致性:
基本上,由于需要花费时间在多个服务器之间复制数据,因此读取数据的请求可能会转到带有新副本的服务器,然后再转到带有旧副本的服务器。术语“最终”表示最终将数据复制到所有服务器,因此它们都将具有最新副本。
如果希望低延迟读取,则必须具有最终一致性,因为响应服务器必须返回其自己的数据副本,并且没有时间查询其他服务器并就数据内容达成共识。我写了一篇博客文章,更详细地解释了这一点。
当应用程序对一台计算机上的数据项进行更改时,该更改必须传播到其他副本。由于更改的传播不是即时的,因此需要一定的时间间隔,其中一些副本将具有最新的更改,而其他副本则不会。换句话说,这些副本将相互不一致。但是,更改最终将传播到所有副本,因此也称为“最终一致性”。术语“最终一致性”仅表示对将在一台计算机上所做的更改传播到所有其他副本的无限延迟。最终的一致性在集中式(单副本)系统中没有意义,也没有意义,因为不需要传播。
来源:http : //www.oracle.com/technetwork/products/nosqldb/documentation/consistency-explained-1659908.pdf
用简单的英语来说,我们可以说:尽管您的系统可能处于不一致状态,但目的始终是在每个数据点上达到一致。
最终,一致性意味着更改需要花费时间才能传播,并且即使执行相同的操作或转换数据,每个操作之后的数据也可能处于不同的状态。当人们在与这样的系统进行交互时不知道自己在做什么时,这可能会导致非常糟糕的事情发生。
在您充分理解此概念之前,请不要实施关键业务文档数据存储。搞砸文档数据存储实现比关系模型更难解决,因为要搞砸的基本内容根本无法解决,因为修复它所需的内容只是在生态系统中不存在。与RDBMS的简单ETL转换相比,重构机上存储的数据也要困难得多。
并非所有文档存储均创建为相等。这些天(MongoDB)确实支持某种事务,但是迁移数据存储很可能与重新实现的开销相当。
警告:不了解或不了解文档数据存储技术的开发人员,甚至是架构师,也害怕承认这一点,因为担心失去工作,但是经过RDBMS的经典培训并且只知道ACID系统(这有何不同) ?)谁不了解该技术或花时间学习它,就会错过设计文档数据存储的机会。他们还可以尝试将其用作RDBMS或用于诸如缓存之类的事情。他们将应该在整个文档上进行操作的原子事务分解为“关系”部分,而忘记了复制和等待时间就是问题,或者更糟的是,将第三方系统拖到了“事务”中。他们将这样做,以便他们的RDBMS可以镜像其数据湖,而无需考虑其是否工作,并且无需测试,因为他们知道自己在做什么。然后,当存储在单独的文档(如“订单”)中的复杂对象的“订单项”比预期的少,或者根本没有时,他们将感到惊讶。但这不会经常发生,也不会经常发生,因此他们只会前进。他们甚至可能没有解决开发中的问题。然后,与其重新设计事物,不如将它们放入“延迟”,“重试”和“检查”以伪造一个关系数据模型,该模型虽然行不通,但会增加额外的复杂性而无济于事。但是现在为时已晚-事情已经部署完毕,现在业务可以在上面运行了。最终,整个系统将被淘汰,部门将被外包,其他人将对其进行维护。它仍然无法正常工作,但是与当前的故障相比,它们的故障损失更低。
最终的一致性更像一个频谱。一方面,您具有很强的一致性,而另一方面,您最终具有一致性。在这两者之间有一些级别,例如快照,阅读我的文章,有限的陈旧性。道格•特里(Doug Terry)在论文中对棒球的最终一致性做出了美丽的解释 。
就我而言,每次从数据存储读取数据时,最终的一致性基本上是对随机数据的随机数据的容忍度。比这更好的是更强大的一致性模型。例如,快照具有陈旧的数据,但是如果再次读取将返回相同的数据,因此可以预测。有时,应用程序可以容忍在给定的时间内过时的数据,超过该时间它需要一致的数据。
如果您查看一致性的含义,则它更多地与一致性或没有偏差有关。因此,以非计算机系统的术语来说,这可能意味着可以承受意外的变化。通过ATM可以很好地解释它。ATM可能处于离线状态,因此与核心系统的帐户余额有所不同。但是,可以容忍在一段时间内显示不同的余额。ATM联机后,便可以与核心系统同步并反映出相同的平衡。因此,可以说ATM最终是一致的。