多注册中心

Dubbo-go 应用程序可配置的多接口维度注册中心。

1. 准备工作

  • 已安装 dubbo-go cli 工具和依赖工具
  • 创建一个新的演示应用程序
  • 在本地启动 Nacos 和 Zookeeper

2. 使用多个注册中心

修改服务器配置 go-server/conf/dubbogo.yaml,并在两个注册中心同时注册服务。

dubbo:
  registries:
    zookeeper: # Specify the zookeeper registration center
      protocol: zookeeper
      address: 127.0.0.1:2181
    nacos: # Specify the nacos registration center
      protocol: nacos
      address: 127.0.0.1:8848
  protocols:
    triple:
      name: tri
      port: 20000
  provider:
    services:
      GreeterProvider:
        registry-ids: # Simultaneous registration
          - zookeeper
          - nacos
        interface: ""

修改客户端配置 go-client/conf/dubbogo.yaml

dubbo:
  registries:
    nacos: # Specify the nacos registration center
      protocol: nacos
      address: 127.0.0.1:8848
    zookeeper: # Specify the zookeeper registration center
      protocol: zookeeper
      address: 127.0.0.1:2181
  consumer:
    references:
      GreeterClientImpl:
        registry-ids: # Discovered from the nacos registry service
          - nacos
        protocol: tri
        interface: ""
      GreeterClientImpl2:
        registry-ids: # service discovery from zookeeper registry
          - zookeeper
        protocol: tri
        interface: ""

修改客户端代码并定义一个名为 GreeterClientImpl2 的客户端存根类

var grpcGreeterImpl2 = new(GreeterClientImpl2)

type GreeterClientImpl2 struct{
api. GreeterClientImpl
}

客户端编写调用代码

func main() {
config. SetConsumerService(grpcGreeterImpl)
config.SetConsumerService(grpcGreeterImpl2)
if err := config.Load(); err != nil {
panic(err)
}

logger.Info("start to test dubbo")
req := &api.HelloRequest{
Name: "Laurence",
}
reply, err := grpcGreeterImpl.SayHello(context.Background(), req)
if err != nil {
logger. Error(err)
}
logger.Infof("nacos server response result: %v\n", reply)

reply, err = grpcGreeterImpl2. SayHello(context. Background(), req)
if err != nil {
logger. Error(err)
}
logger.Infof("zk server response result: %v\n", reply)
}

3. 多注册中心服务发现验证

分别启动 go-server/cmd 和 go-client/cmd 查看两次成功调用的日志

INFO cmd/client.go:55 nacos server response result: name:"Hello laurence" id:"12345" age:21

INFO cmd/client.go:61 zk server response result: name:"Hello laurence" id:"12345" age:21

上次修改时间:2023 年 1 月 2 日:增强 Dubbogo 文档 (#1800) (71c8e722740)