02 go-zero入门--微服务demo
参考文档:
https://go-zero.dev/cn/docs/advance/rpc-call
视频地址:
https://space.bilibili.com/387126464/channel/series
cd /d/code/go/src/go-zero/go-mindoc/roles/rpc/pb-desc/roles.proto
创建 /d/code/go/src/go-zero/go-mindoc/roles/rpc/pb-desc/roles.proto 文件
syntax = "proto3";
package role;
///pb-desc/types/role/roles.pb.go 和types/role/roles_grpc.pb.go 和包名
option go_package = "./role";
message IdReq{
int64 id = 1;
}
message RolesInfoReply{
int64 id = 1;
string name = 2;
}
//对外暴露的方法包名 如果和go_package同名会在加roleclient做区分 如 roleclient
service role {
rpc getRoles(IdReq) returns(RolesInfoReply);
}
生成服务代码
goctl rpc protoc roles.proto --go_out=./types --go-grpc_out=./types --zrpc_out=../ --style go_zero
查看生成的文件目录
Administrator@haima-PC MINGW64 /d/code/go/src/go-zero/go-mindoc/roles/rpc/pb-desc
$ cd ..
Administrator@haima-PC MINGW64 /d/code/go/src/go-zero/go-mindoc/roles/rpc
$ tree
.
|-- etc
| `-- roles.yaml
|-- internal
| |-- config
| | `-- config.go
| |-- logic
| | `-- get_roles_logic.go
| |-- server
| | `-- roles_server.go
|-- pb-desc
| |-- roles.proto
| `-- types
| `-- roles
| |-- roles.pb.go
| `-- roles_grpc.pb.go
|-- roles.go
`-- rolesclient
`-- roles.go
10 directories, 10 files
下载依赖
$ cd /d/code/go/src/go-zero/go-mindoc/roles/rpc
$ go mod tidy
启动服务
如果没有安装etcd服务,启动时会报错
解决方式
1.搭建 ETCD 环境
# 参考如下,使用Docker安装ETCD
docker run -d --name Etcd-server \
--network app-tier \
--publish 2379:2379 \
--publish 2380:2380 \
--env ALLOW_NONE_AUTHENTICATION=yes \
--env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \
bitnami/etcd:latest
2.用Endpoints方式调用rpc服务
a. 注释 roles/rpc/etc/roles.yaml
配置中的代码
#Etcd:
# Hosts:
# - 127.0.0.1:2379
# Key: roles.rpc
b. api配置里使用Endpoints调用rpc服务
#rpc service
UserRpcConf:
Endpoints:
- 127.0.0.1:8080
NonBlock: true
$ go run roles.go -f etc/roles.yaml
Starting rpc server at 127.0.0.1:8080...
流程图:
[Haima的博客]
http://www.cnblogs.com/haima/