远程配置文件

远程加载 dubbogo.yaml 配置文件

Dubbo 框架支持将配置文件 ‘dubbogo.yaml’ 的内容预先放入配置中心,再通过远程加载的方式与本地配置合并,以此实现一些配置的动态和集中式管理。

注意

凡是正确配置了config-center 地址的应用,都会优先从配置中心加载整个配置文件。

可在此查看 完整示例源码地址,本文使用 zookeeper 演示,nacos 使用方法类似,并且在以上地址中有具体源码示例。

启用配置中心

在 dubbo-go 应用通过 dubbo.WithConfigCenter() 启用配置中心:

  1. ins, err := dubbo.NewInstance(
  2. dubbo.WithConfigCenter(
  3. config_center.WithZookeeper(),
  4. config_center.WithDataID("dubbo-go-samples-configcenter-zookeeper-server"),
  5. config_center.WithAddress("127.0.0.1:2181"),
  6. config_center.WithGroup("dubbogo"),
  7. ),
  8. )
  9. if err != nil {
  10. panic(err)
  11. }

在运行应用之前,提前将以下配置写入 zookeeper 集群,写入路径为 /dubbo/config/dubbogo/dubbo-go-samples-configcenter-zookeeper-server

  1. dubbo:
  2. registries:
  3. demoZK:
  4. protocol: zookeeper
  5. timeout: 3s
  6. address: '127.0.0.1:2181'
  7. protocols:
  8. triple:
  9. name: tri
  10. port: 20000

启动服务端并注册服务

  1. srv, err := ins.NewServer()
  2. if err != nil {
  3. panic(err)
  4. }
  5. if err := greet.RegisterGreetServiceHandler(srv, &GreetTripleServer{}); err != nil {
  6. panic(err)
  7. }
  8. if err := srv.Serve(); err != nil {
  9. logger.Error(err)
  10. }

可以发现,应用已经读取了远端的 dubbogo.yml 文件,并连接到文件中配置的注册中心地址、协议及端口配置。

启动客户端

  1. $ go run ./go-client/cmd/main.go

预期的输出

  1. Greet response: greeting:"hello world"

最后修改 September 13, 2024: Refactor website structure (#2860) (1a4b998f54b)