gRPC demo 代码生成

概述

在完成了 goctl 安装 后,我们可以通过 goctl 创建一个最小化的 gRPC 服务来了解 goctl 的 go-zero gRPC 服务的概况。

任务目标

  1. 学会如何使用 goctl 创建一个最小化的 gRPC 服务
  2. 初步了解 go-zero 的项目结构
  3. 初步掌握 gRPC 本地调试的方法

准备条件

  1. 完成 golang 安装
  2. 完成 goctl 安装

代码生成

  1. # 创建工作空间并进入该目录
  2. $ mkdir -p ~/workspace/rpc && cd ~/workspace/rpc
  3. # 执行指令生成 demo 服务
  4. $ goctl rpc new demo
  5. Done.

执行完指令后,会在当前目录下生成一个 demo 目录,该目录下包含了一个最小化的 gRPC 服务,我们来查看一下该服务的目录结构。

  1. # 进入 demo 服务目录
  2. $ cd ~/workspace/rpc/demo
  3. # 查看文件列表
  4. $ ls
  5. demo demo.go demo.proto democlient etc go.mod internal
  6. # 查看目录接口
  7. $ tree
  8. .
  9. ├── demo
  10. ├── demo.pb.go
  11. └── demo_grpc.pb.go
  12. ├── demo.go
  13. ├── demo.proto
  14. ├── democlient
  15. └── demo.go
  16. ├── etc
  17. └── demo.yaml
  18. ├── go.mod
  19. └── internal
  20. ├── config
  21. └── config.go
  22. ├── logic
  23. └── pinglogic.go
  24. ├── server
  25. └── demoserver.go
  26. └── svc
  27. └── servicecontext.go
gRPC demo 代码生成 - 图1注意

API、RPC、Job 服务目录结构大同小异,go-zero 项目结构详情可参阅 《项目结构》

编写简单的逻辑代码

在完成上述代码生成后,我们可以找到 ~/workspace/rpc/demo/internal/logic/demologic.go 文件,编辑该文件,将 29 行替换为如下代码:

  1. return &demo.Response{
  2. Pong:"pong",
  3. }, nil

然后把你一下配置文件 ~/workspace/rpc/demo/etc/demo.yaml,删除 37 行内容,然后在追加内容 Mode: dev 至末尾,使配置文件内容为:

  1. Name: demo.rpc
  2. ListenOn: 0.0.0.0:8080
  3. Mode: dev
gRPC demo 代码生成 - 图2注意

goctl 生成最小化 gRPC 服务默认启动会向 ETCD 注册中心注册当前服务的信息,本次演示就不需要注册中心,所以删除了配置文件中的注册中心配置。

启动服务

在完成上述代码编写后,我们可以通过如下指令启动服务:

  1. # 进入服务目录
  2. $ cd ~/workspace/rpc/demo
  3. # 整理依赖文件
  4. $ go mod tidy
  5. # 启动 go 程序
  6. $ go run demo.go

当你看到有如下输出 Starting rpc server at 0.0.0.0:8080...,说明服务已经启动成功,接着我们来访问一下该 gRPC 服务。

  • grpcurl 访问
  • grpcui 访问
  • Postman 中访问
  1. $ grpcurl -plaintext 127.0.0.1:8080 demo.Demo/Ping

当你在终端看到如下输出内容时代表你的服务已经成功启动。

  1. {
  2. "pong": "pong"
  3. }
gRPC demo 代码生成 - 图3注意

grpcurl 是一个命令行工具,用于访问 gRPC 服务,详情可参阅 《grpcurl》

首先在终端启动 grpcui 服务:

  1. $ grpcui -plaintext 127.0.0.1:8080

然后在浏览器中访问 Ping 接口,当你看到如下输出内容时代表你的服务已经成功启动。

  1. {
  2. "pong": "pong"
  3. }

postman

grpcui 中访问

gRPC demo 代码生成 - 图5注意

grpcui 是一个gRPC UI 调试工具,用于访问 gRPC 服务,详情可参阅 《grpcui》

postman

在 Postman 中访问

当你在 Postman 中看到如下输出内容时,代表你的服务已经成功启动。

  1. {
  2. "message": "me"
  3. }

当你按照文档步骤走到这里,恭喜你 🎉 🎉 🎉 ,你已经完成了最简单的 go-zero gRPC 服务的创建和启动了,如需了解 goctl 工具的使用说明请参阅 《CLI 工具》,如需了解完整 go-zero gRPC Server 服务的使用说明请参阅 《gRPC Server》