grpc流程

1. 定义 proto文件

  • 定义请求体 request
  • 定义返回体 response
  • 定义业务结构体
  • 定义常量
  • 定义服务 service

    2. 生成 rpc 服务文件

  • protoc 运行 proto 文件 生成 go 文件

    • go 文件包含定义的内容
  1. //proto3 版本的
  2. // go 包生成的目录
  3. go_package = "./;proto"
  4. protoc -I=. hello.proto --go_out=plugins=grpc:.
  5. protoc -I=. proto 文件 --go_out=plugins=grpc:.
  • 编译 proto文件遇到的问题

    proto protoc -I=. —go_out=plugins=grpc,paths=source_relative:gen/go trip.proto —go_out: protoc-gen-go: plugins are not supported; use ‘protoc —go-grpc_out=…’ to generate gRPC

  1. go get github.com/golang/protobuf/protoc-gen-go

3. 编写服务

  • 实现 定义的服务 service
    • 使用到了定义的request/response/常量/结构体来完成服务

4. 编写 grpc-gateway 实现 json-protobuf 交互

  • 编写 gateway 的yaml 文件

5. 生成 gateway 服务文件

  • protoc 运行 yaml 文件生成 go 文件
    • go 文件包含定义暴露到外部的方法

6. 编写 service 入口文件, 将 grpc-gateway 服务挂载上去