0. 简单说明
- 该实验用的是官方demo
- 开发环境是win10
- 如果遇到了墙,请参见之前的翻墙操作(用加速器拦截全部流量,绕过墙)
1. 启动consul
//go-micro的默认服务发现就是consul, 因此需要把consul起来
consul agent -dev -ui -client 0.0.0.0
或者
consul agent -server -bootstrap-expect=1 -data-dir=D:/consul/data -node=consul -bind=127.0.0.1 -ui -client=0.0.0.0
//注意
启动consul,然后打开ui是有讲究的。比如说,consul_1.5.3_windows_amd64和consul_1.4.2_windows_amd64的表现不一样。即1.5.3貌似不稳定,有时候ui能打开,有时候不能打开。1.4.2是老版本,但这个每次都能打开ui。感觉1.5.3可能是有bug
微服务向consul注册时的报文
上图红框处的数据格式化后,如下所示
{
"ID": "greeter-876bea4f-8337-4cff-a4b6-f61f9c9910aa",
"Name": "greeter",
"Tags": [
"t-789caa564a2acacf4e2d52b252ca28292950aa05040000ffff364d0600",
"t-789caa562a4e2d2a4b2d52b252ca2d4d2e50aa05040000ffff37200607",
"t-789caa562a4a4dcf2c2e29aa54b2524acecf2b2ecd51aa05040000ffff560f07c8",
"t-789caa562a28ca2fc94fcecf51b252ca2d4d2e50aa05040000ffff46a906e2",
"t-789caa562a294acc2b2ec82f2a51b252ca28292950aa05040000ffff4f930768",
"e-789c84cf41cac23010c5f1bbbc75f90e900b7caedd8a8b019f4598a4353311447277492d41ace02af0cf0b3ff240924804fc67d299ff76549d3020f35a688ed017cbcd7ecd03fc3e7fa937d1424338f467cbd1e7e6f992c6b7612aaaf5581b68f3948c5b71ed9f64cf5b736c9f79393fdd489793b834d73c532202cea246d4fa0c0000ffff256462b2",
"v-789cca492c492d2e01040000ffff08cc028e"
],
"Port": 45803,
"Address": "192.168.174.1",
"Check": {
"TTL": "30s",
"DeregisterCriticalServiceAfter": "1m5s"
},
"Checks": null
}
2. 安装依赖
//下载包并生成工具
go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/protoc-gen-go
go get -u github.com/micro/go-micro
go get -u github.com/micro/protoc-gen-micro
go get -u github.com/micro/micro
//注意
这里下载包,一定会失败。要注意姿势,科学上网,可以参考之前的文章
3.下载protoc工具
- 下好解压,把它丢入$GOPATH/bin目录下
- 如果protoc没有生效,需要加入环境变量
- Protocol Buffers源码
- Protocol Buffers二进制工具
4.下载go-micro官网例子
5.测试官方例子
5.1下载例子
cd C:\Users\wuxian\go\src\github.com\micro\examples
git clone https://github.com/micro/examples.git
5.2编译
C:\Users\wuxian\go\src\github.com\micro\examples\greeter //这是我实验的项目
protoc --proto_path=$GOPATH/src:. --micro_out=. --go_out=. hello.proto
5.3运行api
go run .\api.go --registry=consul //如果不加registry,会出行莫名奇妙的错误
5.4运行server和client
go run .\main.go --registry=consul //如果不加registry,会出行莫名奇妙的错误