Azure CosmosDB指定不存在的读取副本区域时,请求会转向写入副本吗?
Azure Cosmos DB
SetCurrentLocation 无对应副本时的路由逻辑 先给你理清楚PreferredLocations的核心工作逻辑:当你调用SetCurrentLocation时,SDK会自动根据你传入的位置,生成一份按网络延迟从近到远排序的区域列表作为PreferredLocations,读取请求会优先尝试列表里的第一个区域。
回到你说的场景——如果传入的位置根本没部署任何Cosmos DB副本:
- SDK会直接跳过这个无效区域,自动往下找列表里的下一个可用区域,也就是离你传入位置网络延迟最近的已部署读取副本
- 只有当所有读取副本都不可达(或者压根没配置读取副本)时,请求才会最终 fallback 到写入副本
额外补充几个关键点:
SetCurrentLocation不是把请求绑定到你传入的区域,而是让SDK基于这个位置计算最优的区域访问优先级- 整个路由过程都是SDK自动处理的,不用你手动调整,目的就是保证请求能找到最近的可用副本
- 注意:写入请求不管啥情况都会直接发去写入副本,只有读取请求才会走
PreferredLocations的优先级逻辑
内容的提问来源于stack exchange,提问作者alamoot
相关产品推荐
相关产品推荐

