go-micro安裝成功后(安裝過程百度很多),會報錯:
原因:在go-micro里面引用的etcd的包是 http://github.com/coreos/etcd/clientv3而不是http://go.etcd.io/etcd/clientv3這樣一來可能就需要改源碼了。
找到包http://github.com/micro/go-plugins/registry/etcdv3下發現兩個文件一個個改掉就好
watcher.go:
import ( "context" "errors" "time" "github.com/micro/go-micro/v2/registry" //"github.com/coreos/etcd/clientv3" # 原有的 "go.etcd.io/etcd/clientv3" # 修改后的 )
etcd.go
import ( "context" "crypto/tls" "encoding/json" "errors" "net" "path" "sort" "strings" "sync" "time" //"github.com/coreos/etcd/clientv3" # 原有的 "go.etcd.io/etcd/clientv3" # 修改后的 "github.com/micro/go-micro/v2/logger" "github.com/micro/go-micro/v2/registry" hash "github.com/mitchellh/hashstructure" //"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes" # 原有的 "go.etcd.io/etcd/etcdserver/api/v3rpc/rpctypes" # 修改后的 "go.uber.org/zap" )
然后就報錯得到解決
.....
因為go-micro v2.0后,去除了對consul 的支持(github.com/micro/go-micro/registry里面沒有consul目錄),但支持etcd、mdns作為服務發現,但是老版本的go-micro仍支持consul,但是有些地方做了調整。
首先,需要go 1.13的支持 然后,在獲取go-micro庫時,不能使用這個指令了 go get -u github.com/micro/go-micro 改為:go get -u github.com/micro/go-micro/v2 原來go-micro consul的支持已經遷移到了go-plugins里面 我們的代碼里在導入consul庫時,也變為了: "github.com/micro/go-plugins/registry/consul" 這個在下面的代碼里可以看到 然后,沒有安裝gin的同學,需要使用如下指令獲取下: go get -u github.com/gin-gonic/gin