同机房路由收敛

当存在多个机房时,RPC 请求可能会跨机房调用。受限于网络等因素,跨机房调用增加调用耗时。为保证业务质量,建议您配置同机房路由收敛,让 RPC 请求优先调用同机房服务器提供的服务。

调用流程

Image 2

说明

以上数据结构为讲解原理进行了简化,并非真实的结构。

  • datacenter:服务器所在的物理机房。

  • zone:物理机房为了方便管理划分出来的逻辑单元,datacenter + zone 共同标识服务器位置信息。

调用流程如下:

  1. 服务提供方 A 和 B 将自己的服务注册到注册中心。

  2. 服务调用方会订阅注册中心所有服务提供方的地址信息。

  3. 当调用方调用服务时,会优先调用 datacenter、zone 和自身配置一致的服务方地址。

  4. 如果当前 zone 没有提供服务,则调用其他 zone 的服务。

配置方式

在服务启动参数中增加服务的位置信息:

-Dcom.alipay.ldc.zone=xxx
-Dcom.alipay.ldc.datacenter=xxx

同机房路由收敛默认开启,如果没有配置 datacenter、zone,则系统使用默认值,即所有服务的 datacenter、zone 一样,同机房路由收敛不会生效。

注意事项

  • 同机房路由收敛会优先调本 zone 的服务,所以在部署时要平衡各个 zone 的服务数量,避免出现某个 zone 流量大,服务少的情况。

  • datacenter + zone 标识唯一位置信息,但目前某些版本对 datacenter 不感知,所以不同 datacenter 内也要保持 zone 名不同。

  • datacenter 和 zone 在阿里云上对应 datacenter 和 cell,为了方便维护,尽量不要自己命名。