40 lines
1.0 KiB
Markdown
40 lines
1.0 KiB
Markdown
|
# rmconf
|
||
|
|
||
|
remote configuration for mop!
|
||
|
|
||
|
## consul
|
||
|
|
||
|
Consul KV作为配置中心, 使用时需要一些约定:
|
||
|
|
||
|
1. Key的命名需要表达足够多的信息, 例如: 应用, 用户, 环境, 服务等.
|
||
|
2. Value使用JSON, 并且JSON的key与环境变量一致, 值类型是字符串
|
||
|
3. 每个环境有一个公用的KEY, 存数据库地址等公共配置
|
||
|
|
||
|
配置优先级: 服务配置 > 公共配置 > 环境变量 > 代码中的默认值, 依次覆盖
|
||
|
|
||
|
### demo
|
||
|
|
||
|
```go
|
||
|
if Cfg.ConsulKVAddr != "" && Cfg.ConsulKVKeys != "" {
|
||
|
// 从前往后覆盖
|
||
|
keys := strings.Split(Cfg.ConsulKVKeys, ",")
|
||
|
for i := 0; i < len(keys); i++ {
|
||
|
consulConf := &rmconf.ConsulConfManager{}
|
||
|
path := keys[i]
|
||
|
if strings.TrimSpace(path) == "" {
|
||
|
continue
|
||
|
}
|
||
|
err := consulConf.InitFromConsul(Cfg, Cfg.ConsulKVAddr, Cfg.ConsulKVKeys)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
// 启动监听
|
||
|
// if i == len(keys)-1 {
|
||
|
// err = consulConf.StartWatch()
|
||
|
// if err != nil {
|
||
|
// panic(err)
|
||
|
// }
|
||
|
// }
|
||
|
}
|
||
|
}
|
||
|
```
|