Cosmos DB最终一致性最大上限

时间:2017-09-19 17:23:21

标签: azure azure-cosmosdb eventual-consistency

我们正在考虑使用Cosmos DB,但无法找到有关最终一致性最大上限的信息(如果有的话)。

有人可以提供这方面的见解吗?

2 个答案:

答案 0 :(得分:2)

没有上限。这是设计上的,即使在发生故障时也能让您高度可用。

我们假设您在美国西部有一个帐户,而美国东部是次要地区。在正常操作中,它们将彼此保持最新(除了复制/光速的约60ms滞后)。在这种情况下,强和一致性之间没有实际区别。

让我们看一下失败情景。如果由于自然灾害导致美国东部地区倒塌,或者因为美国西部与美国东部之间的连通性被切断了怎么办? Azure Cosmos DB数据库的行为是什么?

  1. 凭借强烈的一致性,美国西部将停止写作,以确保美国西部和美国东部不会分开。
  2. 使用Bound Staleness,您可以配置有界陈旧性窗口,例如5分钟。美国西部将继续接受5分钟的写入,而美国东部可能会持续5分钟。超过5分钟,美国西部的写作将无法使用,直到恢复与美国东部的连接。然后美国东部会赶上来,写作可以恢复。
  3. 通过最终,美国西部永远不会停止写作。如果美国东部没有倒塌,只是断开连接(网络分区),它将服务于陈旧的读取。一旦该地区恢复,美国东部将迎头赶上,写作可以恢复。
  4. 同样,这只是在出现故障的情况下,而不是正常操作,其中区域彼此是最新的,除了光延迟的复制/速度。

    如需进一步讨论,请发送电子邮件至AskCosmosDB@microsoft.com

答案 1 :(得分:0)

在最长时间内没有SLA可以期待最终的一致性。文档中的关键点是:Eventual consistency guarantees that in absence of any further writes, the replicas within the group *eventually* converge.

基本上归结为如果您选择这种级别的一致性,它将完全取决于不同的因素,例如您的预配置吞吐量(为保持副本同步可用的数量),文档的频率正在更新和查询等等。您正在选择一致性的时间范围对您的应用程序不重要的行为。

我很想知道您的潜在工作量(特别是为什么您认为最终的一致性可能非常适合),因为绝大多数客户都喜欢会话或有界陈旧。