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

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

在centos7上起服务的时候发现,启动的api网关与服务不能通过etcdv3的信息沟通
查看存储的键值可知, 存储的注册信息并不相同
go-micro学习过程中小结--如何为1.7.0版本的micro添加etcdv3功能_第1张图片

我最初以为是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/[email protected]/api)
	github.com/hashicorp/consul/api v1.1.0 (/root/go/pkg/mod/github.com/hashicorp/consul/[email protected])

搜了下
在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程序了

你可能感兴趣的:(golang)