gRPC
gRPC は Google が開発 した高性能 オープンソースの RPC フレームワーク。
概要
gRPC フレームワークはクライアント・サーバーモデルのリモートプロシージャ呼 び出 しに基 づく。クライアントアプリケーションはサーバーアプリケーションのメソッドを直接 呼 び出 せる。
Protocol Buffers
gRPC は Protocol Buffers を IDL とメッセージ交換 形式 として使用 。
syntax = "proto3";
message HelloRequest {
string name = 1;
}4つの通信タイプ
| タイプ | 説明 | モード |
|---|---|---|
| Unary | 1 対 1 | 1 request → 1 response |
| Client-side streaming | 多 対 1 | N requests → 1 response |
| Server-side streaming | 1 対 多 | 1 request → N responses |
| Bidirectional | 多 対 多 | 双方向 ストリーミング |
gRPC vs REST
| 特性 | gRPC | REST |
|---|---|---|
| プロトコル | HTTP/2 | HTTP/1.1 or HTTP/2 |
| データ形式 | Protocol Buffers | JSON/XML |
| ストリーミング | ネイティブ対応 | 限定的 |
| 性能 | 高 | 中 |
適用シナリオ
- マイクロサービス間 の通信
- 低遅延 ・高 スループットシステム
- 双方向 ストリーミングアプリ