假设我在三个区域A,B和C中设置了Cosmos DB,其中A是写区域。此外,我还自动故障转移关闭。
在客户端中使用.NET SDK时,如果我设置ConnectionPolicy.EnableEndpointDiscovery = true
但不为ConnectionPolicy.PreferredLocations
属性指定任何内容,那么读取会发生什么(和如果区域A有中断,那么从客户端写道?
另外,假设我指定ConnectionPolicy.PreferredLocations = {A, B}
并且这两个区域都有中断,那么会发生什么?
我找不到任何documentation来描述和解释这些scenarios的结果。
答案 0 :(得分:1)
如果启用了EnableEndpointDiscovery
,写入将自动路由到新的主要区域(如果没有,它们将在主要区域失败期间失败)。如果您有PreferredLocations
,则会按照首选顺序将读取路由到这些区域。如果未指定,则在主服务器不可用时读取将失败。换句话说,在区域性故障的情况下,必须使两者都具有高可用性。
如果您有PreferredLocations = {A, B}
并且两个区域都失败,则在服务重新联机之前,读取将不可用。通常,这种情况不太可能,因为它涉及多个区域同时失败。
此处提供了一些其他详细信息:https://docs.microsoft.com/en-us/azure/cosmos-db/regional-failover