Nosql 通俗英语中的最终一致性
我经常在关于NoSQL、数据网格等的不同演讲中听到最终的一致性。 似乎最终一致性的定义在许多源中都有所不同(甚至可能取决于具体的数据存储) 有谁能简单地解释一下什么是一般意义上的最终一致性,与任何具体的数据存储无关?最终一致性:Nosql 通俗英语中的最终一致性,nosql,computer-science,data-storage,eventual-consistency,Nosql,Computer Science,Data Storage,Eventual Consistency,我经常在关于NoSQL、数据网格等的不同演讲中听到最终的一致性。 似乎最终一致性的定义在许多源中都有所不同(甚至可能取决于具体的数据存储) 有谁能简单地解释一下什么是一般意义上的最终一致性,与任何具体的数据存储无关?最终一致性: 我看了天气预报,得知明天要下雨 我告诉你明天要下雨 你的邻居告诉他的妻子明天将是晴天 你告诉邻居明天要下雨 最终,所有服务器(你、我、你的邻居)都知道真相(明天会下雨),但与此同时,客户(他的妻子)离开时认为天气会转晴,尽管她询问了一个或多个服务器(你和我)的最新值 与
如果您想要低延迟读取,则最终一致性是必须的,因为响应服务器必须返回其自己的数据副本,并且没有时间咨询其他服务器并就数据内容达成一致。我写了一篇文章对此进行了更详细的解释。最终一致性更像是一个光谱。在一端,您有很强的一致性,而另一方面,你最终会有一致性。在这两者之间有一些级别,比如快照、读我的文章、有界的陈旧性。道格·特里(Doug Terry)在这方面有一个很好的解释 据我所知,最终一致性基本上是指每次从数据存储中读取数据时,都能以随机顺序容忍随机数据。比这更好的是一个更强的一致性模型。例如,快照有陈旧数据,但如果再次读取,将返回相同的数据,因此它是可预测的。有时应用程序可以容忍一段时间内陈旧的数据给定的时间量,超过该时间,它需要一致的数据
如果你看一致性的含义,它更多地与一致性或无偏差有关。因此,在非计算机系统术语中,它可能意味着对意外变化的容忍。这可以通过ATM得到很好的解释。ATM可能脱机,因此与核心系统的账户余额不同。但是,对于显示不同的t在一段时间内保持平衡。一旦ATM联机,它就可以与核心系统同步并反映相同的平衡。因此,可以说ATM最终是一致的。当应用程序对一台机器上的数据项进行更改时,该更改必须传播到其他副本。由于更改传播不是即时的,有一段时间间隔,在这段时间内,一些副本将有最新的更改,但其他副本不会。换句话说,副本将相互不一致。但是,更改最终将传播到所有副本,因此术语“最终一致性”。术语“最终一致性”只是确认将一台计算机上所做的更改传播到所有其他副本时存在无限制的延迟。最终一致性在集中式(单副本)系统中没有意义或相关性,因为不需要传播
来源:用简单的英语,我们可以说:虽然您的系统可能处于不一致的状态,但目标始终是在某个点上为每个数据段达到一致性。认为您有一个应用程序及其副本。然后您必须向应用程序添加新的数据项 然后应用程序将数据同步到下面显示的其他副本 同时,新客户端将从一个尚未更新的复制副本中获取数据。在这种情况下,他无法获取正确的最新数据。因为同步需要一些时间。在这种情况下,它最终没有一致性 问题是我们怎样才能最终保持一致性 为此,我们使用中介应用程序来更新/创建/删除数据,并使用直接查询来读取数据。这有助于实现一致性
最终一致性意味着更改需要时间来传播,并且每次操作后数据可能不处于相同的状态,即使是相同的操作或数据转换。这可能会导致