
gRPC
Protocol Buffers、gRPC サービス、ストリーミング、interceptor、エラー処理、メタデータ
1gRPC とは何ですか?
gRPC とは何ですか?
回答
gRPC は Google が開発したオープンソースの RPC(Remote Procedure Call)フレームワークで、トランスポートプロトコルとして HTTP/2 を、デフォルトのシリアライズ形式として Protocol Buffers を使用します。JSON と HTTP/1.1 を使う REST とは異なり、gRPC は Protocol Buffers のバイナリ形式と HTTP/2 の高度な機能(multiplexing、ヘッダー圧縮、server push)によってより高いパフォーマンスを提供します。gRPC は双方向ストリーミング、クライアント/サーバーのコード生成、強い型付けをネイティブにサポートするため、マイクロサービス間の通信で広く利用されています。
2gRPC における Protocol Buffers の主な役割は何ですか?
gRPC における Protocol Buffers の主な役割は何ですか?
回答
Protocol Buffers(protobuf)は gRPC でデフォルトに使われるインターフェース定義言語(IDL)かつバイナリシリアライズ形式です。.proto ファイルでメッセージとサービスの構造を定義でき、それをコンパイルすることで複数の言語のクライアント/サーバーコードを自動生成します。protobuf のバイナリ形式は JSON より 3〜10 倍コンパクトで、シリアライズ/デシリアライズのパフォーマンスが格段に優れています(最大 20 倍高速)。これにより gRPC はマイクロサービス間の高頻度通信に特に適しています。
3gRPC の Unary 呼び出しと Server Streaming 呼び出しの違いは何ですか?
gRPC の Unary 呼び出しと Server Streaming 呼び出しの違いは何ですか?
回答
Unary 呼び出しは最もシンプルな gRPC 呼び出しタイプで、クライアントは 1 つのリクエストを送り、1 つのレスポンスを受け取ります。これは従来の HTTP REST リクエストに似ています。Server Streaming 呼び出しでは、クライアントは 1 つのリクエストを送りますが、サーバーから複数のレスポンスのストリームを受け取れます。たとえば、通知 API は Server Streaming を使って、クライアントがポーリングすることなく複数の更新を送信できます。これは繰り返しの Unary 呼び出しに比べてレイテンシとネットワーク負荷を削減します。
gRPC サーバーを作成するために使用される Go パッケージはどれですか?
.proto ファイルで gRPC サービスを定義するにはどうしますか?
+19 面接問題