gRPCとは
- Googleが開発した通信プロトコルの1つ
- プロトコルバッファを使ってシリアライズ化し、HTTP/2が使って高速に通信する
- protoファイルと呼ばれるIDL(Interface Definition Language)にAPI仕様を記述する
通信方式
gRPCはサービスを定義するという考えに基づいており、パラメーターと戻り値に静的な型を使用してリモートで呼び出すことができるメソッドを指定する
gRPCは次の4種類のサービス方法を定義できる
①通常の関数呼び出しと同じように、クライアントがサーバーに1つのリクエストを送信し、1つのレスポンスを返すRPC
rpc SayHello(HelloRequest) returns (HelloResponse);
②クライアントがサーバーにリクエストを送信し、一連のメッセージを読み戻すためのストリームを取得するサーバーストリーミングRPC
クライアントは、メッセージがなくなるまで、返されたストリームを読み取る
rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);
③クライアントが提供されたストリームに連続したメッセージを書き込み、サーバーに送信するクライアントストリーミングRPC
クライアントはメッセージの書き込みを終了すると、サーバーがメッセージを読み取って応答を返すのを待つ
rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);
④ 両側が読み取り/書き込みストリームを使用して連続したメッセージを送信する双方向ストリーミングRPC
2つのストリームは独立して動作するため、クライアントとサーバーは任意の順序で読み取りと書き込みを行うことができる
rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);