Googleは、安定しており製品に使用可能だと思われるgRPC 1.0をリリースした。
gRPCはStubbyと呼ばれるGoogleの内部プロジェクトとして開始し、Googleの内部サービス内の通信に使用された。Googleは18か月前にこのフレームワークをオープンソース化した。これはGoogle外部での採用や、Googleのサービスを使用する際に利用することを意図しており、インターネットもしくは内部の製品のために他のサービスと通信することができる。
gRPCはプラットフォーム独立のシステムであり、エンドポイントサービスと送信ペイロードの定義にProtocol Buffers IDLを用い、複数言語のスタブを生成する。gRPCは10の言語をサポートする。C、C++、C#、Go、Java (Java/Androidを含む)、Node.js, Objective-C、PHP、Python、それとRubyであり、Linux、Mac、Windowsがサポートされる。ネイティブ実装はC、GoとJavaであり、他の言語用にCライブラリのラッパが用意される。Googleはパフォーマンスダッシュボードを用意しており、同じデータセンタ内の2つのVMインスタンス間の様々なgRPC通信の遅延を見ることができる。単一のセキュアな同期メッセージの場合、約100usとなっているNetperfの結果を基準として、C++、Java、C#の実装は約200-300usであり、Ruby、Python、Node.jsはそれぞれ700、900、1100usである。
送信メッセージはProtocol Buffers 3.0のバイナリ形式でシリアライズされており、テキスト形式よりパフォーマンスが良くなっている。JSONに比較して、Protobufはメッセージサイズを半分に、シリアライズ/デシリアライズの時間を3分の1に削減できるとGoogleエンジニアのKelsey Hightower氏は述べている。
1つのリクエストとそれに続くレスポンスから構成される単一のRPCの代わりに、gRPCはクライアントとサーバ間で単方向もしくは双方向のストリーミングを提供するのにHTTP/2を使用している。通信には同期・非同期の両方が使用でき、SSL/TLSもしくは(Google APIによる)OAuth2による認証をサポートしている。
インストールは単純化されており、CocoaPods、gem、Gradle、Maven、npm、NuGet、pecl、pip、それからDockerイメージによりgRPCのバイナリが提供されている。
Googleによると、Cisco、CoreOS、Juniper、Netflix、そしてSquareが内部的にgRPCを使用している。
Rate this Article
- Editor Review
- Chief Editor Action