go-micro-入门示例
go-micro-入门示例
demo1
参考: Go Micro 入门指南 - https://erikjiang.github.io/2018/07/05/GoMicroGuide/
服务发现依赖项工具 Consul
首先 micro
这个框架需要且依赖于服务发现工具(service discovery),框架默认的服务发现工具是 Consul
,同时框架的插拔机制也可确保能够切换到其他的服务发现工具上,如Etcd、NATS等,详见 micro plugins
;
关于consul
的安装与运行:
Linux
1
2$ brew install consul # 安装
$ consul agent -dev # 运行windows
- 下载地址: https://www.consul.io/downloads.html, 所在目录配置到 环境变量 中
启用模块化
参考: https://micro.mu/docs/framework.html#installation
Making use of go modules will enable this.
1 | # enable go modules |
安装依赖包
1 | go get -v -u google.golang.org/grpc // gRPC |
其中有几个会生成可执行程序. micro.exe, protoc-gen-go.exe, protoc-gen-micro.exe (没错, 我是在 windows 中玩的)
安装其他依赖, 不然在 run 下面的 service.go 时会报找不到这些包的错误. ( 貌似安装了 go-plugins 插件包 会自动安装以下依赖 )
1
2
3
4
5
6
7go get -v -u github.com/hashicorp/go-cleanhttp
go get -v -u github.com/hashicorp/go-rootcerts
go get -v -u github.com/hashicorp/memberlist
go get -v -u github.com/hashicorp/serf/coordinate
go get -v -u github.com/lucas-clemente/quic-go
go get -v -u github.com/mitchellh/hashstructure
go get -v -u github.com/mitchellh/mapstructure
创建 proto 文件. user.proto
1 | syntax = "proto3"; |
然后生成 user.micro.go 和 user.pb.go 文件
1 | F:\a_link_workspace\go\GoWinEnv_Test01\src\GoMicro (master -> origin) |
创建服务端代码. service.go
1 | package main |
创建客户端代码. client.go
1 | package main |
打开 consul
命令:
consul agent -dev
1
2
3
4
5
6
7
8
9
10$ consul agent -dev
==> Starting Consul agent...
Version: 'v1.6.1'
Node ID: '700d980f-5e00-4595-c759-a54286dab099'
Node name: 'DESKTOP-B3461GK'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: false)
Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false可以通过网页访问到. http://127.0.0.1:8500/ui
运行 服务端/客户端
启动服务端.
go run service.go
1
2
3
4
5F:\a_link_workspace\go\GoWinEnv_Test01\src\GoMicro\test001\srv (master -> origin)
λ go run service.go
2019/09/28 02:04:58 Transport [http] Listening on [::]:53802
2019/09/28 02:04:58 Broker [http] Connected to [::]:53803
2019/09/28 02:04:58 Registry [mdns] Registering node: user-d9a8a8db-28c6-424f-ab2a-843f80049cea- 此时刷新:http://127.0.0.1:8500/ui/ 页面会发现新服务
user
;这个暂时没有看到.
- 此时刷新:http://127.0.0.1:8500/ui/ 页面会发现新服务
启动客户端.
go run client.go
. 会输出服务端返回的值1
2
3F:\a_link_workspace\go\GoWinEnv_Test01\src\GoMicro\test001\cli (master -> origin)
λ go run client.go
Hello World ^_^
列出服务
使用前面生成的工具 micro.exe, 可以查看到 service.go 起的服务 user ( micro.Name("user")
)
1 | F:\a_link_workspace\go\GoWinEnv_Test01 (master -> origin) |
web 界面
1 | F:\a_link_workspace\go\GoWinEnv_Test01 (master -> origin) |
然后打开 http://localhost:8082/registry 就能访问已有的服务
点击 user 查看服务的具体信息