【问题标题】:Azure CosmosDB Consistency guarantyAzure Cosmos DB 一致性保证
【发布时间】:2021-04-18 13:04:23
【问题描述】:

Microsoft 在其documentation 中声明一致的前缀一致性如下:

在一致前缀选项中,返回的更新包含一些 所有更新的前缀,没有间隙。一致的前缀一致性 级别保证读取永远不会看到乱序写入。

下面两段,他们说:

以下是一致前缀的一致性保证:

  • 单个写入区域的帐户在同一区域的客户端的一致性 = 一致的前缀

  • 单个写入区域的帐户在不同区域的客户端的一致性 = 一致的前缀

  • 为具有多个写入区域的帐户写入单个区域的客户端的一致性 = 一致的前缀

  • 客户端写入多个区域的一致性为具有多个写入区域的帐户 = 最终

我真的不明白客户端如何为具有多个写入区域的帐户写入多个区域可以具有最终一致性保证。由于一致的前缀一致性保证读取永远不会看到乱序写入,那么下面的语句(多次写入)应该是错误的,因为它保证了最终的一致性

有人可以帮我弄清楚我缺少什么吗?

【问题讨论】:

    标签: azure azure-cosmosdb eventual-consistency


    【解决方案1】:

    通常,一致性保证是在假设它是单区域写入(单主)的情况下编写的。由于 Cosmos DB 提供了多区域写入(多主)功能,因此一致性保证需要进一步解释,以详细说明在不同数量的读取器和写入器下服务的行为,包括多区域写入(多主)。

    当您有多个写入器并使用多区域写入时,在帐户中配置的区域内本地写入的数据将在本地提交,然后通过 WAN 复制并合并到主要区域中。数据在主要区域中合并后,会以完全提交的形式复制回账户中的所有其他区域。

    由于这种情况发生在 WAN 上,因此无法保证写入多个次要区域的数据将准确地按照本地提交的顺序复制和合并到主要区域中。数据在 WAN 中并不总是以相同的速率和速度复制。这既是因为区域之间的距离不同,也是因为 WAN 有时会有些不稳定。

    因此,当使用多个写入器的多区域写入时,读取器只能获得最终的一致性保证。

    【讨论】:

      猜你喜欢
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多