go-zero 配置 服务发现和直连模式兼容-微服务
go-zero 配置 服务发现和直连模式兼容。如果配置了 Etcd(服务发现),优先用 Etcd;如果只配 Endpoints(直连),用直连。
如果配置了 Etcd(服务发现),优先用 Etcd;如果只配 Endpoints(直连),用直连。
1. 配置同时写 Etcd 和 Endpoints
假如你希望本地开发用直连,生产用服务发现,可以这样写:
2. go-zero 的行为说明
如果
Etcd字段有值,就走服务发现,不管 Endpoints 有没有只有没有
Etcd字段,才会走直连 Endpoints你可以动态通过环境变量或条件写配置,或者线上线下用不同 config 文件
这样能方便切换环境!
3. 如何写代码?
一行代码不用动! 你直接用如下方式即可:
go-zero 会自动识别当前配置,优先用 Etcd,否则用 Endpoints。
4. 如果你想“有Etcd时优先用服务发现,没有时才走直连”,直接配置就行!
比如
开发环境用 Endpoints
生产环境用 Etcd
不需要额外写代码判断,go-zero 自动选优!
5. 动态选择的进阶写法(如果你真要动态切)
你也可以在代码里用条件来加载不同配置:
一般不用这样,直接在 yaml 里都写上即可。
Endpoints:直接写目标服务的 ip:端口,没有用 etcd/consul/nacos 等注册中心NonBlock: true:非阻塞连接(一般建议 true,影响启动时连接方式,不影响服务发现)
总结一句话
go-zero 原生支持同时配置 Endpoints 和 Etcd
只要 yaml 里都写上,go-zero 会优先用 Etcd 服务发现
本地开发/测试用直连,线上用服务发现,0 改代码,非常丝滑!


评论