/go-rpc-demo

protocol buffers 生成rpc

Primary LanguageGo

A branch for protobuf & gRPC demo.

安装protoc和protoc-gen-go

protoc

Github的Release下载:

https://github.com/protocolbuffers/protobuf/releases

下载对应平台的压缩包(win/Linux);

解压之后将bin目录下的protoc复制到系统环境变量的路径下:

  • win: C:\Windows\System32
  • Linux: /bin

等等;

然后测试:

protoc --version
libprotoc 3.19.4

protoc-gen-go

Github的Release下载:

https://github.com/golang/protobuf/releases

下载压缩包并解压;

解压后在protoc-gen-go目录下编译:

go build

然后将生成的二进制文件protoc-gen-go复制到系统环境变量的路径下

全部安装完成!


目录结构

tree /F                                       
.                                             
│  go.mod                                       
│  go.sum                                       
│                                               
├─hello_client                                  
│      main.go                                  
│                                               
├─hello_server                                  
│      main.go                                  
│                                               
└─proto                                         
        hello.pb.go                             
        hello.proto                             

编写proto

本例子使用proto3语法;

hello.proto

// 指定proto版本
syntax = "proto3";

package proto;
option go_package=".;proto";

// 定义请求结构
message HelloRequest{
    string name = 1;
}

// 定义响应结构
message HelloResponse{
    string message = 1;
}

// 定义Hello服务
service Hello{
    // 定义服务中的方法
    rpc SayHello (HelloRequest) returns (HelloResponse);
}

编写完成之后使用protoc生成.pb.go文件:

protoc -I . --go_out=. --go-grpc_out=. .\hello.proto

即可生成hello.pb.go文件


初始化gomod项目

使用go mod init protobuf_grpc_demo初始化项目;

生成go.mod文件;

然后使用go mod tidy初始化;