go-micro学习过程中小结--如何为1.7.0版本的micro添加etcdv3功能

go-micro中依赖包管理功能做的好像很不错, 但是优秀的包管理导致版本兼容做的也太差了吧, 好多东西版本一变就不能用了啊,我怎么知道该用什么版本啊抓狂

在centos7上起服务的时候发现,启动的api网关与服务不能通过etcdv3的信息沟通
查看存储的键值可知, 存储的注册信息并不相同
在这里插入图片描述

我最初以为是windows10和centos7 编译不同导致的结果(事实证明我这个猜想是错的)

经过不断的测试, 终于将视线转移到版本不同上, 结果发现
github.com/micro/go-micro v1.7.1-0.20190627135301-d8e998ad85fe

github.com/micro/go-micro v1.7.1-0.20190711204633-5157241c88e0
这两个版本使用etcdv3注册有差异

问了下大佬, 说不推荐使用master分支的代码, 尽量使用打tag的版本

行吧, 那就使用1.7.0版本的micro吧

但是在为micro1.7.0添加etcdv3支持的时候发现编译错误

go: import "github.com/micro/micro/cmd" ->
	import "github.com/micro/go-micro/cmd": looping trying to add package

不知道怎么回事但是应该还是版本有问题吧
既然不添加etcdv3支持的时候没问题, 那就是etcdv3支持的包太新了, 降级
在go.mod中

github.com/micro/go-plugins v1.1.1

修改为(没有则添加)


github.com/micro/go-plugins v1.0.0

编译一下, 又报错

build command-line-arguments: cannot load github.com/hashicorp/consul/api: ambiguous import: found github.com/hashicorp/consul/api in multiple modules:
	github.com/hashicorp/consul v1.4.2 (/root/go/pkg/mod/github.com/hashicorp/consul@v1.4.2/api)
	github.com/hashicorp/consul/api v1.1.0 (/root/go/pkg/mod/github.com/hashicorp/consul/api@v1.1.0)

搜了下
在go.mod开头部分添加

replace github.com/hashicorp/consul => github.com/hashicorp/consul v1.5.1

即可

运行

GOOS=linux GOARCH=amd64 go build -tags netgo -o greeter-srv  main.go plugins.go 

终于获得一个支持etcdv3的micro-1.7.0程序了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值