go micro 搭建
目的是跟着github上面的微服务教程走一遍
链接:
构建微服务
第一章 用户服务 第一章中,有个micro new指令,生成模板
micro new --namespace=mu.micro.book --type=srv --alias=user github.com/micro-in-cn/tutorials/microservice-in-micro/part1/user-srv
参考网址,相关软件安装过程参考:
Golang微服务micro学习记录之快速开始
go-micro入门
下面说下我的流程
go 版本最好是1.12 1.13以上的
参考的是上面第一个链接
下载,解压,配置到环境变量即可(我下载的里面只有一个.exe文件)
这个在哪使用,暂不详
下载,解压,将bin配置到环境变量(忘了在哪看的提示加到系统path)
这个在哪使用,暂不详
这些库因为墙的缘故… 无法使用go get 安装
实施方案有:
我这采用的是第一种(提示:部分库,github搜索到的主页可能是开发板!并非release版,可到release中下载最新的)
可在 https://github.com/golang 中搜索仓库crypto,net等
解压到 gopath\src\golang.org\x
最终:
D:\go_workspace\src\golang.org\x\crypto
D:\go_workspace\src\golang.org\x\net
D:\go_workspace\src\golang.org\x\sys
D:\go_workspace\src\golang.org\x\text
注意下载的包或者通过git clone下载的包文件夹可能是crypto-master 需要去掉后哦面的-master
安装micro/micro的时候还会提示github.com/go-acme/lego 不存在
下载地址 https://github.com/go-acme/lego
D:\go_workspace\src\github.com\go-acme\lego
下载地址 https://github.com/etcd-io/etcd
D:\go_workspace\src\go.etcd.io\etcd
参考地址
golang安装gRpc
如果按照上面流程的包下了,可不看上面地址 ,继续跟步骤走
下载安装gRpc, 地址:https://github.com/grpc/grpc-go/releases (建议下在release版本)
D:\go_workspace\src\google.golang.org\grpc
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u github.com/golang/protobuf/{proto,protoc-gen-go} //这个可能mac/linux有用,windows把两个包分开下载,
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
# install protoc-gen-micro
go get -u github.com/micro/protoc-gen-micro
上面链接中还有个 https://github.com/google/go-genproto.git 不确定要不要安装,可先忽略
cd $GOPATH/src/
go install google.golang.org/grpc
go get github.com/micro/go-micro
如果出现报错,找不到包的,自己去下载到对应的目录
如出现
git clone error:RPC failed; curl 18 transfer closed with outstanding read data remaining
参考链接 参考链接 https://blog.csdn.net/PHY1161460191/article/details/88656003
执行:
git config --global http.postBuffer 524288000 #(单位B:约500M)
如果还不行,请看上面的链接,可以后面的数字再大点..
可以先继续往下走,安装 micro/micro; 如果报错提示了etcd,再回来操作该步骤
注意,当你下载完micro/go-micro后,
github.com\micro\go-micro\config\source\etcd\etcd.go
github.com\micro\go-micro\config\source\etcd\util.go
github.com\micro\go-micro\config\source\etcd\watcher.go
github.com\micro\go-micro\registry\etcd\etcd.go
github.com\micro\go-micro\registry\etcd\watcher.go
github.com\micro\go-micro\store\etcd\etcd.go
github.com\micro\go-micro\sync\leader\etcd\etcd.go
github.com\micro\go-micro\sync\lock\etcd\etcd.go
以上文件中的导包 github.com/coreos/etcd/xx 统一改成go.etcd.io/etcd/xx
go get github.com/micro/micro
如果提示了etcd包冲突,回一步看处理方案
cd GOPATH/src/github.com/micro/micro
执行
go build
如果出错,查一查...
如果成功,将在 GOPATH/bin文件夹下生成micro.exe文件,
将GOPATH/bin文件夹路径加入环境变量后我们就可以直接运行micro命令了
如已成功,
可在命令行中执行
micro -help
如果提示了一大串使用说明,即表示成功了。
如出错,下面列几个错误
错1
提示:
panic: /debug/requests is already registered. You may have two independent copies of golang.org/x/net/trace in your binary, trying to maintain separate state.
This may involve a vendored copy of golang.org/x/net/trace.
该问题是由于xxx ,好像trace多个地方有,具体百度.
然后处理方案是:
https://blog.csdn.net/d7185540/article/details/81228092
使用govendor管理包,就不会干扰
根据上面链接,安装govendor,然后到go_workspace\src\github.com\micro\micro 目录下执行
govendor init
govendor add +external
然后执行go build
错2
go build 如出现下面错误
# github.com/micro/micro/vendor/google.golang.org/grpc/resolver/dns
vendor\google.golang.org\grpc\resolver\dns\dns_resolver.go:131:45: unknown field 'MaxDelay' in struct literal of type "github.com/micro/micro/vendor/google.golang.org/grpc/internal/backoff".Exponential
原因是src下面的版本是开发板1.25 然而vendor下的可能是重拉的1.24; 删除scr下的去github下载1.24的
然后删除micro/vendor 目录, 重新走
govendor init
govendor add +external
搞定..