多注册中心注册

同一个服务可以注册多个注册中心,您可以通过以下方式实现:

XML 方式

  1. application.properties 中配置注册中心源信息。

    配置格式为:com.alipay.sofa.rpc.registries.<自定义别名>=协议://地址,支持的协议为:dsr、sofa、zookeeper、consul、gateway、mesh、multicast、local、nacos。

    配置示例如下:

    com.alipay.sofa.rpc.registries.registryName1=dsr://10.0.0.1:9600
    com.alipay.sofa.rpc.registries.registryName2=dsr://10.0.0.2:9600

  2. 配置需要多注册中心的服务。

    <sofa:service interface="com.alipay.sofa.facade.SampleService" ref="sampleService">
            <sofa:binding.bolt>
                <sofa:global-attrs registry="registryName1,registryName2"/>
            </sofa:binding.bolt>
    
        </sofa:service>

API 方式

  1. 创建注册中心。

    以创建名为consul的注册中心为例,代码如下:

    RegistryConfig registryA = new RegistryConfig().setProtocol("consul").setAddress("localhost:8500");
  2. 构建多个 RegistryConfig,并设置给 ProviderConfig

    示例如下:

    List<RegistryConfig> registryConfigs =new ArrayList<RegistryConfig>();
    registryConfigs.add(registryA);
    registryConfigs.add(registryB);
    providerConfig.setRegistry(registryConfigs);
  3. 调用 MethodConfig 对象相应的 set 方法设置对应的参数。

    示例如下:

    MethodConfig methodConfigA =new MethodConfig();
    MethodConfig methodConfigB =new MethodConfig();
    List<MethodConfig> methodConfigs =new ArrayList<MethodConfig>();
    methodConfigs.add(methodConfigA);
    methodConfigs.add(methodConfigB);
    providerConfig.setMethods(methodConfigs);    //服务端设置
    consumerConfig.setMethods(methodConfigs);  //客户端设置