Golang微服务micro 环境搭建,纯小白..

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 环境搭建,纯小白..】参考网址,相关软件安装过程参考:
Golang微服务micro学习记录之快速开始
go-micro入门
下面说下我的流程
go 版本最好是1.12 1.13以上的
一、安装依赖
参考的是上面第一个链接
1、consul 下载,解压,配置到环境变量即可(我下载的里面只有一个.exe文件)
这个在哪使用,暂不详
2、Protobuf 下载,解压,将bin配置到环境变量(忘了在哪看的提示加到系统path)
这个在哪使用,暂不详
3、安装一些必备库,避免之后的go get提示错误 这些库因为墙的缘故… 无法使用go get 安装
实施方案有:
  1. 自己到github去下载对应的包,然后解压到对应的目录
  2. gopm 国内的go get问题的解决
  3. 设置代理,https://goproxy.io; 这个在goland中可设置,但是似乎没用…
我这采用的是第一种(提示:部分库,github搜索到的主页可能是开发板!并非release版,可到release中下载最新的)
这里4个包需要自己下载 golang.org/x/{crypto,net,sys,text} 可在 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
lego包 github.com/go-acme/lego 安装micro/micro的时候还会提示github.com/go-acme/lego 不存在
下载地址 https://github.com/go-acme/lego
D:\go_workspace\src\github.com\go-acme\lego

etcd包 下载地址 https://github.com/etcd-io/etcd
D:\go_workspace\src\go.etcd.io\etcd

gRpc 参考地址
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-micro
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)如果还不行,请看上面的链接,可以后面的数字再大点..

可选操作! 处理etcd包冲突问题。 可以先继续往下走,安装 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

安装micro
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搞定..

    推荐阅读