Cosmos DB 最终一致性最大上限

Cosmos DB eventual consistency maximum upper bound

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

有人可以对此提供见解吗?

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

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

我很想知道更多关于您的潜在工作量的信息(特别是为什么您认为最终一致性可能是一个很好的选择),因为绝大多数客户都喜欢 Session 或 Bounded Staleness。

没有上限。这是设计使然,即使在发生故障时也能保持高可用性。

假设您有一个帐户,美国西部是主要区域,美国东部是次要区域。在正常操作中,它们将彼此保持同步(除了 replication/speed 光的约 60 毫秒滞后)。在这种情况下,强一致性和最终一致性之间没有实际区别。

让我们来看一个失败场景。如果美国东部因自然灾害或美国西部和美国东部之间的连接中断而宕机怎么办? Azure Cosmos DB 数据库的行为是什么?

  1. 对于强一致性,美国西部将停止写入以确保美国西部和美国东部不会分开。
  2. 使用 Bound Staleness,您可以配置一个有界陈旧 window,比如 5 分钟。美国西部将继续接受写入 5 分钟,美国东部可能会过时最多 5 分钟。超过 5 分钟后,美国西部写入将不可用,直到恢复与美国东部的连接。然后美国东部会赶上,写入可以恢复。
  3. 有了 Eventual,West US 将永远不会停止写入。如果美国东部没有停机,而只是断开连接(网络分区),它将提供过时的读取。同样,一旦该地区恢复正常,美国东部就会赶上并恢复写入。

同样,这只是在发生故障的情况下,而不是在区域相互更新的正常操作中,除了 replication/speed 的光延迟。

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

与团队联系