未指定时的 Cosmos DB 故障转移读取位置
Cosmos DB failover read location when not specified
假设我在三个区域 A、B 和 C 中设置了一个 Cosmos DB,其中 A 是写入区域。我还关闭了自动故障转移。
在客户端中使用 .NET SDK 时,如果我设置 ConnectionPolicy.EnableEndpointDiscovery = true
但 不 为 ConnectionPolicy.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
假设我在三个区域 A、B 和 C 中设置了一个 Cosmos DB,其中 A 是写入区域。我还关闭了自动故障转移。
在客户端中使用 .NET SDK 时,如果我设置 ConnectionPolicy.EnableEndpointDiscovery = true
但 不 为 ConnectionPolicy.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