未指定时的 Cosmos DB 故障转移读取位置

Cosmos DB failover read location when not specified

假设我在三个区域 A、B 和 C 中设置了一个 Cosmos DB,其中 A 是写入区域。我还关闭了自动故障转移

在客户端中使用 .NET SDK 时,如果我设置 ConnectionPolicy.EnableEndpointDiscovery = trueConnectionPolicy.PreferredLocations 属性,如果区域 A 发生中断,从客户端读取(和写入)会发生什么情况?

此外,假设我确实指定了 ConnectionPolicy.PreferredLocations = {A, B} 并且这两个区域都发生了中断,那么会发生什么?

我找不到任何 documentation that describes and explains the outcome of these scenarios

如果启用 EnableEndpointDiscovery,写入将自动路由到新的主要区域(否则,它们将在主要区域故障期间失败)。如果您有 PreferredLocations,读取将按优先顺序路由到区域。如果未指定,则当主数据库不可用时读取将失败。换句话说,您必须启用两者以在发生区域故障时具有高可用性。

如果您有 PreferredLocations = {A, B} 并且两个区域都出现故障,则在服务恢复联机之前读取将不可用。通常,这种情况不太可能发生,因为它涉及多个区域同时发生故障。

这里有一些额外的细节:https://docs.microsoft.com/en-us/azure/cosmos-db/regional-failover