【go-zero rpc 微服务开发存在的一个坑】

本文介绍了go-zero rpc服务访问etcd的配置情况。默认使用http服务,配置地址不带协议名。公网环境为安全给etcd加证书加密传输,配置https地址时,注册微服务正常,但发现微服务会报错。经查看源码,去掉https://后程序启动成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

go-zero rpc 微服务开发存在的一个坑

go-zero rpc服务访问etcd默认使用http服务,所以一般在配置文件中etcd服务地址是不带协议类型名称的。比如etcd:2379。
当etcd需要放在公网的环境下,为了安全一般会将etcd加上证书。使传输的数据加密。 此时微服务的配置文件针对etcd的配置信息就会存在一个很坑的东西。我们想当然的认为etcd加密使用https协议。故在配置etcd地址的时候,host 应该写成https://addr:port。在起初,我也是这么做的但是发现。当etcd是用来注册微服务时。没有任何问题。但当用来发现微服务,获取微服务地址时,zrpc会报错,提示连接超时。仔细观察会发现的打印出来的微服务地址是:etcd://https://addr:port/key。这是一个很奇怪的endpoint。通过看zrpc源码。client对config的解析获取endpoint时。其解析与server不同。故我将https://去掉。终于程序启动成功!!!

  1. etcd用于注册微服务时
    在这里插入图片描述
  2. etcd用于发现微服务时
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值