nosql – 如何计算最终一致性需要多长时间才能保持一致?

我开始调查nosql和面向文档的数据库,以存储我们将在我们的网站上提供的 HTML5应用程序的资产.这旨在替代仅在文件系统上存储文件.它们将是小型的Web优化文件,包括html,js,css和xml等文本文件,以及二进制文件,如图像,声音和字体.

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

我知道不同的变量将确定任何配置需要多长时间,但我需要能够开始了解我们需要构建哪种基础架构来支持我们的需求.所以我正在寻找的是我们是否需要优化网络延迟,节点数量等来支持我们的特定需求.

我们希望能够选择要测试的平台,在我们将时间投入任何特定解决方案之前,我们希望能够说“不,这对我们不起作用”.

我们现在拥有使用严格一致性的系统(例如我们的Web服务器上的文件系统和我们的mysql数据库),因此我们的管理用于加载和超时等概念,以及“失败”的概念.但我无法与他们沟通“是的,现在数据不可用,但它没有停止;它最终会可用”.他们想知道“嗯,’最终’有多久了”?

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

解决方法

由于我对Riak比Cassandra更熟悉,因此我将讨论限制最终的一致性如何适用于Riak.

在正常操作期间,Riak支持tuneable consistency,允许您根据应用程序要求定制一致性行为.但是,默认设置非常合理,适用于大多数情况,因为它们需要大部分replicas才能在认为成功之前响应读取或写入.

虽然所有副本可能不会在每个时间点处于完全相同的状态,但这些一致性设置将确保您阅读您所写的内容.传统上,通过称为read-repair的过程对读取不一致,但如果启用了活动反熵(Riak版本1.3中的新功能),也可以定期更正不一致.

在各种故障情况下,主要考虑Eventual consistency.如果是一个节点与集群的其余部分分离,它将(使用默认设置)继续能够接受写入和读取,它将根据其所拥有的数据/副本提供最佳能力.由于在此期间无法与群集的其余部分进行通信,因此可能会出现不一致的情况.但是,一旦群集恢复到正常操作状态,这些将被解决.这需要多长时间取决于许多外部因素,如果需要人工干预来解决问题,可能会从临时网络故障的几分之一秒到几分钟或几小时不等.

相关文章

文章浏览阅读752次。关系型数据库关系型数据库是一个结构化的...
文章浏览阅读687次,点赞2次,收藏5次。商城系统中,抢购和秒...
文章浏览阅读1.4k次。MongoTemplate开发spring-data-mongodb...
文章浏览阅读887次,点赞10次,收藏19次。1.背景介绍1. 背景...
文章浏览阅读819次。MongoDB连接失败记录_edentialmechanisn...
文章浏览阅读470次。mongodb抽取数据到ES,使用ELK内部插件无...