Rom*_*man 112 computer-science data-storage eventual-consistency nosql
我经常听到关于NoSQL,数据网格等不同演讲的最终一致性.似乎最终一致性的定义在许多来源中有所不同(甚至可能取决于具体的数据存储).
任何人都可以简单解释一般情况下的最终一致性,与任何具体的数据存储无关吗?
Chr*_*ain 201
最终的一致性:
最终,所有的服务器(你,我,你的邻居)都知道真相(明天会下雨),但与此同时,客户(他的妻子)认为它会变得晴朗,即使她问在一个或多个服务器(您和我)拥有更新的值之后.
与严格一致性/ ACID合规性相反:
您的余额在任何时候都不能反映除您帐户中所有交易的实际总和之外的任何其他内容.
的原因,为什么如此多的NoSQL系统具有最终一致性是,几乎所有的人都被设计成分布,并与全分布式系统有保持严格的一致性超线性开销(这意味着你只能这么远以前的事情开始放缓规模当他们这样做时,你需要在问题上投入指数级更多的硬件以保持缩放).
Ezr*_*och 97
最终的一致性:
基本上,因为跨多个服务器复制数据需要时间,所以读取数据的请求可能会转到带有新副本的服务器,然后转到带有旧副本的服务器.术语"最终"意味着最终数据将被复制到所有服务器,因此它们都将具有最新的副本.
如果您想要低延迟读取,则必须具有最终一致性,因为响应服务器必须返回其自己的数据副本,并且没有时间咨询其他服务器并就数据内容达成共识.我写了一篇博文,更详细地解释了这一点.
wth*_*ira 12
认为你有一个应用程序及其副本.然后,您必须将新数据项添加到应用程序.
然后应用程序将数据同步到下面的其他副本显示
与此同时,新客户将从一个尚未更新的副本获取数据.在那种情况下,他无法获得正确的日期数据.因为同步需要一些时间.在那种情况下,它最终没有一致性
问题是我们怎样才能最终保持一致?
为此,我们使用mediator应用程序来更新/创建/删除数据并使用直接查询来读取数据.这有助于最终实现一致性