Skip to content

region zone route

chengyouling edited this page May 25, 2024 · 2 revisions

数据中心亲和性路由功能

某些业务可能需要在不同的region、AZ部署相同的服务,但是使用同一个注册中心,这样会导致不同的region、AZ间相互调用,有可能引起网络延迟和数据归档等问题,因此就需要依赖安全隔离能力进行调用隔离。

数据中心亲和性路由功能相关配置

开启数据中心亲和性路由功能开关配置,默认为false:

spring:
  cloud:
    servicecomb:
      discovery:
        enabledZoneAware: true

是否开启强制不允许跨region、zone调用,默认为false:

spring:
  cloud:
    servicecomb:
      discovery:
        denyCrossZoneLoadBalancing: true

实例添加region、zone属性:

  • 使用Servicecomb引擎作为注册中心时配置:
spring:
  cloud:
    servicecomb:
      discovery:
        datacenter:
          name: test
          region: region1
          availableZone: az1
  • 使用Nacos引擎作为注册中心时配置:
spring:
  cloud:
    servicecomb:
      discovery:
        metadata:
          region: region1
          zone: az1

调用逻辑

设定enabledZoneAware为true开启数据中心亲和性路由调用,注册中心使用servicecomb引擎,以1个consumer、2个provider实例来说明:

consumer设置属性:

spring:
  cloud:
    servicecomb:
      discovery:
        datacenter:
          name: test1
          region: region1
          availableZone: az1

provider-instance1设置属性:

spring:
  cloud:
    servicecomb:
      discovery:
        datacenter:
          name: test1
          region: region1
          availableZone: az1

provider-instance2设置属性:

spring:
  cloud:
    servicecomb:
      discovery:
        datacenter:
          name: test2
          region: region2
          availableZone: az2

上述配置consumer只能调用到provider-instance1。

将consumer的属性改为:

spring:
  cloud:
    servicecomb:
      discovery:
        datacenter:
          name: test3
          region: region3
          availableZone: az3

这时设置denyCrossZoneLoadBalancing为true时,provider将没有符合条件的实例可以调用;若denyCrossZoneLoadBalancing设置为false时,consumer轮询调用provider-instance1、provider-instance2实例。

注意事项

如果使用Servicecomb引擎作为注册、配置中心,版本要求为1.7.0-2020.0.x及以上。

如果使用Nacos作为注册、配置中心时。 版本要求为1.11.0-2021.0.x及以上。

Clone this wiki locally