Nosql 如何计算最终一致性需要多长时间才能变得一致?

Nosql 如何计算最终一致性需要多长时间才能变得一致?,nosql,eventual-consistency,Nosql,Eventual Consistency,我开始研究nosql和面向文档的数据库,以存储我们将在网站上提供的HTML5应用程序的资产。这是为了取代仅在文件系统上存储文件的做法。它们将是小型的web优化文件,包括html、js、css和xml等文本文件,以及图像、声音和字体等二进制文件 因为我对容错感兴趣,所以我正在研究的解决方案(riak,Cassandra)使用最终一致性。虽然我在抽象的层面上理解这个概念,但当我与管理者和决策者交谈时,我无法用实际的术语解释最终的一致性需要多长时间才能变得一致。毫秒?秒?分钟?由于我在这个领域没有任何

我开始研究nosql和面向文档的数据库,以存储我们将在网站上提供的HTML5应用程序的资产。这是为了取代仅在文件系统上存储文件的做法。它们将是小型的web优化文件,包括html、js、css和xml等文本文件,以及图像、声音和字体等二进制文件

因为我对容错感兴趣,所以我正在研究的解决方案(riak,Cassandra)使用最终一致性。虽然我在抽象的层面上理解这个概念,但当我与管理者和决策者交谈时,我无法用实际的术语解释最终的一致性需要多长时间才能变得一致。毫秒?秒?分钟?由于我在这个领域没有任何经验,我正在寻找现实世界的经验,因为这意味着什么

我知道不同的变量将决定任何配置所需的确切时间,但我需要能够开始了解我们需要构建什么样的基础设施来支持我们的需求。所以我要寻找的是,我们是否需要优化网络延迟、节点数量等,以支持我们的特定需求

我们希望能够选择平台进行测试,在我们花时间研究任何特定的解决方案之前,我们希望能够说“不,这对我们不起作用。”

我们现在的系统使用严格的一致性(例如Web服务器上的文件系统和mysql数据库),因此我们的管理习惯于加载和超时以及“停机”等概念。但我无法与他们沟通“是的,数据现在不可用,但它没有关闭;它最终将可用”。他们想知道“那么,‘最终’要多久?”


我如何判断最终一致性系统是否能在我们的网站上实际运行?

由于我对Riak的熟悉程度远远高于Cassandra,因此我将讨论最终一致性如何应用于Riak

在正常运行期间,Riak支持根据应用程序需求定制一致性行为。不过,默认设置非常合理,适用于大多数情况,因为它们需要大多数用户响应读或写操作,然后才能认为读或写操作成功

尽管并非所有副本在每个时间点都处于完全相同的状态,但这些一致性设置将确保您读取所写内容。传统上,通过一个名为的过程在读取时纠正不一致性,但如果启用了主动反熵(Riak版本1.3中的新功能),也可以定期纠正不一致性

除此之外,在各种故障情况下,主要应考虑。例如,如果一个节点与集群的其余部分分离,它将(使用默认设置)继续能够接受写入和读取,这将取决于它所持有的数据/副本,它将尽其所能。由于在此期间它无法与集群的其余部分通信,因此可能会出现不一致的情况。但是,一旦集群恢复到正常操作状态,这些问题就会得到解决。具体需要多长时间取决于许多外部因素,可能从临时网络故障的几分之一秒到需要手动干预纠正问题的几分钟或几小时不等