远程配置文件

远程加载 dubbogo.yaml 配置文件

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

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

启用配置中心

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

ins, err := dubbo.NewInstance(
    dubbo.WithConfigCenter(
    	config_center.WithZookeeper(),
    	config_center.WithDataID("dubbo-go-samples-configcenter-zookeeper-server"),
    	config_center.WithAddress("127.0.0.1:2181"),
    	config_center.WithGroup("dubbogo"),
	),
)
if err != nil {
    panic(err)
}

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

dubbo:
  registries:
    demoZK:
      protocol: zookeeper
      timeout: 3s
      address: '127.0.0.1:2181'
  protocols:
    triple:
      name: tri
      port: 20000

启动服务端并注册服务

srv, err := ins.NewServer()
if err != nil {
    panic(err)
}

if err := greet.RegisterGreetServiceHandler(srv, &GreetTripleServer{}); err != nil {
    panic(err)
}

if err := srv.Serve(); err != nil {
    logger.Error(err)
}

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

启动客户端

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

预期的输出

Greet response: greeting:"hello world"
最后修改 April 3, 2024: Update doc (#2950) (2f31c0eeae0)