目录

dubbo-go 白话文 | 配置文件内容太多怎么简化

本文介绍如何减少 dubbogo 的配置文件内容,未完待续

一、前言

请注意,本文基于 dubbogo1.5.1,目前最新的1.5.4不是稳定版本,部分包已经挪到 gost

dubbogo 是 dubbo 这个 RPC 框架在 go 语言下的延伸,也是各位 Java 开发人员上手 go 的一个优秀开源项目。启动 dubbogo 经常需要配置环境变量,如 CONF_PROVIDER_FILE_PATHCONF_CONSUMER_FILE_PATH 两个最典型的例子。在 idea 中启动的时候,每次都需要加这个还是比较麻烦的,其实大部分跑例子的时候只需要关心注册中心的相关信息。

欢迎━(`∀´)ノ亻!点 star dubbogo

二、实战分析

2.1 去掉 client 端的配置文件

2.1.1 泛化调用 consumer 端

应用配置

你可以定义一个默认的应用配置,如下:

1defaultApplication = &dg.ApplicationConfig{
2  Organization: "dubbo-go-proxy",
3  Name:         "Dubbogo Proxy",
4  Module:       "dubbogo proxy",
5  Version:      "0.1.0",
6  Owner:        "Dubbogo Proxy",
7  Environment:  "dev",
8}

实际使用的时候,应用会有系统环境变量指明应用名称和环境等,上述的几个标准参数应该从业务约定的系统环境变量读取。

构建 ConsumerConfig

1// dubbogo comsumer config
2dgCfg = dg.ConsumerConfig{
3  Check:      new(bool),
4  Registries: make(map[string]*dg.RegistryConfig, 4),
5}

自定义系统变量获取 registry,比如:-REGISTRY=dubbo:127.0.0.1:2181。

1r := os.Getenv("REGISTRY")
2ss := strings.SplitN(s, ":", 2)
3if len(ss) == 2 {
4  dgCfg.Registries[1] = &dg.RegistryConfig{
5    Protocol:   ss[0],
6    Address:    ss[1],
7    TimeoutStr: "3s",
8  }
9}

把参数设置到 ConsumerConfig 就行。

设置默认 ClientConfig

1dubbo.SetClientConf(dubbo.GetDefaultClientConfig())

调用 dubbogo 加载

1dg.Load()

三、参考

https://github.com/apache/dubbo-go/blob/master/README_CN.md