配置文件

使用 dubbogo.yml 配置文件形式开发微服务应用。

1. 框架配置

Dubbo-go 框架需要依赖配置进行启动。配置中包含了开发者希望使用框架的各种能力。

配置格式

yaml

配置路径

默认从 ../conf/dubbogo.yaml 加载框架配置

可通过指定环境变量:DUBBO_GO_CONFIG_PATH=$(your_config_path)/dubbogo.yaml 来修改配置文件路径。

配置根结构

位于 dubbo.apache.org/dubbo-go/v3/config/root_config.go: RootConfig

框架加载时,任何形式的配置都会被解析成 RootConfig,在 RootConfig.Init 方法中加载。

2. 配置API

开发者可以使用 API 的形式构建配置,从而启动框架。该方法较适合 dubbo-go 作为第三方组件引入的情况。

3. 配置中心

开发者可以将配置放置在配置中心,从而便于配置的管理和修改。

根配置

客户端配置

服务端配置

注册中心配置

使用配置 API

  • 客户端使用配置 API 设置注册中心

可通过调用config.NewRegistryConfigWithProtocolDefaultPort方法,快速设置用于调试的注册中心,支持zookeeper(127.0.0.1:2181) 和nacos(127.0.0.1:8848)

  1. rc := config.NewRootConfigBuilder().
  2. SetConsumer(config.NewConsumerConfigBuilder().
  3. SetRegistryIDs("zookeeperID"). // use defined registryID
  4. Build()).
  5. AddRegistry("zookeeperID", config.NewRegistryConfigWithProtocolDefaultPort("zookeeper")).
  6. Build()

全部接口:可通过调用RegistryConfigBuilder提供的丰富接口进行配置。

  1. rc := config.NewRootConfigBuilder().
  2. SetConsumer(config.NewConsumerConfigBuilder().
  3. SetRegistryIDs("nacosRegistryID"). // use defined registryID
  4. AddReference("GreeterClientImpl",/*...*/).
  5. Build()
  6. AddRegistry("nacosRegistryID", config.NewRegistryConfigBuilder().
  7. SetProtocol("nacos").
  8. SetAddress("127.0.0.1:8848").
  9. SetGroup("dubbo-go").
  10. SetNamespace("dubbo").
  11. SetUsername("admin").
  12. SetPassword("admin").
  13. SetTimeout("3s").
  14. Build()).
  15. Build()
  • 服务端使用配置 API 设置配置中心

简易接口 config.NewRegistryConfigWithProtocolDefaultPort

  1. rc := config.NewRootConfigBuilder().
  2. SetProvider(config.NewProviderConfigBuilder().
  3. AddService("GreeterProvider", /*...*/).
  4. SetRegistryIDs("registryKey"). // use defined registryID
  5. Build()).
  6. AddRegistry("registryKey", config.NewRegistryConfigWithProtocolDefaultPort("zookeeper")).
  7. Build()

全部接口:可通过调用RegistryConfigBuilder提供的丰富接口进行配置。

  1. rc := config.NewRootConfigBuilder().
  2. SetProvider(config.NewProviderConfigBuilder().
  3. AddService("GreeterProvider",/*...*/)
  4. SetRegistryIDs("registryKey"). // use defined registryID
  5. Build()).
  6. AddRegistry("registryKey", config.NewRegistryConfigBuilder().
  7. SetProtocol("nacos").
  8. SetAddress("127.0.0.1:8848").
  9. SetGroup("dubbo-go").
  10. SetNamespace("dubbo").
  11. SetUsername("admin").
  12. SetPassword("admin").
  13. SetTimeout("3s").
  14. Build()).
  15. Build()

网络协议

配置文件

使用配置 API

  • 客户端使用配置 API 设置网络协议
  1. rc := config.NewRootConfigBuilder().
  2. SetConsumer(config.NewConsumerConfigBuilder().
  3. AddReference("GreeterClientImpl", config.NewReferenceConfigBuilder().
  4. SetInterface("org.apache.dubbo.UserProvider").
  5. SetProtocol("tri"). // set reference protcol to triple
  6. Build()).
  7. Build()).
  8. Build()
  • 服务端使用配置 API 设置网络协议
  1. rc := config.NewRootConfigBuilder().
  2. SetProvider(config.NewProviderConfigBuilder().
  3. AddService("GreeterProvider", config.NewServiceConfigBuilder().
  4. SetInterface("org.apache.dubbo.UserProvider").
  5. SetProtocolIDs("tripleProtocolKey"). // use protocolID 'tripleProtocolKey'
  6. Build()).
  7. Build()).
  8. AddProtocol("tripleProtocolKey", config.NewProtocolConfigBuilder(). // define protocol config with protocolID 'tripleProtocolKey'
  9. SetName("tri"). // set service protocol to triple
  10. Build()).
  11. Build()

使用 dubbogo.yml 配置文件开发应用

使用 dubbogo.yml 配置文件开发应用

远程配置文件

远程加载 dubbogo.yaml 配置文件

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