Closed1

Goのgrpc生成まわり調べるメモ

ぱんだぱんだ

とりあえず整理

gRPC

RPCの一種。RPCの技術自体は古くからあり、少し前はHTTPベースの通信が主流でこれにはJSON-RPCやXML-RPCといったフォーマットが使用されていたが、テキストベースのためバイナリデータが扱いづらいなどの問題があった。googleが社内で使用していた仕組みにHTTP/2といった技術が出てきたためこれを組み込みOSSとして公開したものがgRPC。通信プロトコルにはHTTP/2、データシリアライズにはProtocol Bufferを使用してデータのやりとりを行うのがgRPCという理解。

protoc

Protocol Bufferのコンパイラ。現時点での最新メジャーバージョンは3系。macならbrewでインストールできる。

protocのインストールの加え各言語ごとにコンパイル用のプラグインなどが必要になる。

Goプラグイン

  • google.golang.org/protobuf/cmd/protoc-gen-go
  • google.golang.org/grpc/cmd/protoc-gen-go-grpc

google.golang.org/protobuf/cmd/protoc-gen-goはgRPCのサポートを現在含んでいない。
代わりにgoogle.golang.org/grpc/cmd/protoc-gen-go-grpcがgRPCのサポートを含んでいる。

github.com/golang/protobuf/protoc-gen-goはgRPCのサポートを含んでいる。これは分離前のオリジンでサポートは続くよう。(実行するとdeprecatedになるよう)

gRPCのコードを生成するには

  • Protocol Buffersのメッセージやシリアライズに protocolbuffers/protobuf-go のprotoc-gen-go
  • gPRCのサーバ/クライアントに grpc/grpc-goのprotoc-gen-go-grpc
    の二つが必要となっている。
このスクラップは2023/04/07にクローズされました