参考文档:
https://go-zero.dev/docs/tutorials/proto/spec

视频地址:
https://space.bilibili.com/387126464/channel/series

编写roles.proto 描述文件

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

api和rpc服务连接的方式

  • 直连
    • Endpoints多节点直连模式
    • Target 地址解析模式
  • 注册发现
    • etcd
      • nacos
      • consul
  • 原生支持

如果是etcd方式和api通信,需要安装etcde服务,否则启动时会报错

搭建 ETCD 环境

  1. 命令行启动
# 参考如下,使用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
  1. docker-compose 方式启动

    参考以下文档
    http://haimait.top/docs/k8s/etcd-install

以下以Endpoints方式通信方式启动服务
用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...

流程图:

作者:海马  创建时间:2022-12-31 07:59
最后编辑:海马  更新时间:2024-12-22 19:32