【发布时间】:2021-04-09 04:43:07
【问题描述】:
我在 prod 中启用了 cosmos db 的全局复制。我的 cosmos db 的 uri 是 my-cosmos-db-prod.document.azure.com:port 。在 Application Insight 的 Application Map 中,我看到了 3 个不同端点的流量。
- my-cosmos-db-prod
- 我的 cosmos-db-prod-eastus
- my-cosmos-db-prod-westus。
我不明白为什么我会看到第一个端点的流量。我不应该只看到区域端点吗?第一个端点代表什么区域?
我还启用了 5 个区域,但我只看到 2 个区域(东、西)的流量。对于我的规模服务,我很确定其他地区也必须有流量。距离我添加其他区域仅 12 小时,并且在 azure 门户上一切看起来都很好。我们真正开始看到新添加区域的流量是否会有所延迟?
我正在使用 cosmos db 3.17.1 这就是我在代码中配置区域首选项的方式。 .WithApplicationRegion(this.GetRegionPreference())
private string GetRegionPreference()
{
switch (this.serviceConfig.Region)
{
case "usea":
return Regions.EastUS;
case "uswe":
return Regions.WestUS;
case "asea":
return Regions.EastAsia;
case "asse":
return Regions.SoutheastAsia;
case "euno":
return Regions.NorthEurope;
case "euwe":
return Regions.WestEurope;
default:
return Regions.WestUS;
}
}
【问题讨论】:
-
你用什么SDK连接?
-
本文解释了 SDK 根据您提供的配置执行的路由:docs.microsoft.com/en-us/azure/cosmos-db/… 您是否在 SDK 配置中设置了区域偏好?
-
@MartinSmith 我正在使用 Microsoft.Azure.Cosmos Version="3.17.1"
-
@MatiasQuaranta 我已经更新了我的答案。请检查一下。
-
通常 SDK 将始终使用 1 个区域,即与您的 ApplicationRegion 匹配的区域。我共享的链接中记录了它可能转到另一个的情况。 SDK 不会使用所有区域,这不是它的工作方式。如果你想覆盖全球,你应该看看像docs.microsoft.com/en-us/azure/cosmos-db/… 这样的架构,你有多个配置不同的应用程序,每个应用程序都会到达其中一个区域。
标签: azure-cosmosdb