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にクローズされました