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...

流程图:

posted @ 2022-02-02 17:03  HaimaBlog  阅读(401)  评论(0编辑  收藏  举报