多注册中心

一个 Dubbo-go 应用可以配置的多个接口维度的注册中心。

1. 准备工作

  • dubbo-go cli 工具和依赖工具已安装
  • 创建一个新的 demo 应用
  • 本地启动Nacos、Zookeeper

2. 使用多注册中心

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

  1. dubbo:
  2. registries:
  3. zookeeper: # 指定 zookeeper 注册中心
  4. protocol: zookeeper
  5. address: 127.0.0.1:2181
  6. nacos: # 指定 nacos 注册中心
  7. protocol: nacos
  8. address: 127.0.0.1:8848
  9. protocols:
  10. triple:
  11. name: tri
  12. port: 20000
  13. provider:
  14. services:
  15. GreeterProvider:
  16. registry-ids: # 同时注册
  17. - zookeeper
  18. - nacos
  19. interface: ""

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

  1. dubbo:
  2. registries:
  3. nacos: # 指定 nacos 注册中心
  4. protocol: nacos
  5. address: 127.0.0.1:8848
  6. zookeeper: # 指定 zookeeper 注册中心
  7. protocol: zookeeper
  8. address: 127.0.0.1:2181
  9. consumer:
  10. references:
  11. GreeterClientImpl:
  12. registry-ids: # 从 nacos 注册中心服务发现
  13. - nacos
  14. protocol: tri
  15. interface: ""
  16. GreeterClientImpl2:
  17. registry-ids: # 从 zookeeeper 注册中心服务发现
  18. - zookeeper
  19. protocol: tri
  20. interface: ""

修改客户端代码,再定义一个客户端存根类,名为GreeterClientImpl2:

  1. var grpcGreeterImpl2 = new(GreeterClientImpl2)
  2. type GreeterClientImpl2 struct{
  3. api.GreeterClientImpl
  4. }

客户端编写调用代码:

  1. func main() {
  2. config.SetConsumerService(grpcGreeterImpl)
  3. config.SetConsumerService(grpcGreeterImpl2)
  4. if err := config.Load(); err != nil {
  5. panic(err)
  6. }
  7. logger.Info("start to test dubbo")
  8. req := &api.HelloRequest{
  9. Name: "laurence",
  10. }
  11. reply, err := grpcGreeterImpl.SayHello(context.Background(), req)
  12. if err != nil {
  13. logger.Error(err)
  14. }
  15. logger.Infof("nacos server response result: %v\n", reply)
  16. reply, err = grpcGreeterImpl2.SayHello(context.Background(), req)
  17. if err != nil {
  18. logger.Error(err)
  19. }
  20. logger.Infof("zk server response result: %v\n", reply)
  21. }

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

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

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

最后修改 December 16, 2022: Fix check (#1736) (97972c1)