从etcd加载配置项
1 目录结构
1 | $ tree etcd/ |
- etcd_conn.go 存放 etcd client 初始化、获取/设置/删除、关闭连接相关的代码
- etcd_biz.go 存放与业务逻辑相关的代码
2 etcd_conn
2.1 初始化
1 | var ( |
2.2 获取值
1 | func GetValue(key string) (string, error) { |
- etcd v3 使用gRPC实现远程过程调用,为了确保不产生goroutine泄露(不被使用的goroutine一直占用资源),调用etcd v3 client API时,要传入context.WithTimeout参数,用于通知子goroutine结束,释放资源
2.3 关闭连接
1 | func Close() error { |
3 配置项结构
1 | var ( |
- 配置信息 json 格式序列化之后以键值对的 value 字符串形式存储在 etcd 中
4 拉取配置信息
1 | func GetCollectConfig() (config []CollectConfigEntry, err error) { |
- 全局的 []CollectConfigEntry 结构体数组对象 CollectConfig 用于存储配置信息,从 etcd 获取到配置值是 json 格式的字符串,需要调用 json.Unmarshal 反序列化后放入 CollectConfig 对象中