BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース gRPC 1.0は製品使用の準備ができている

gRPC 1.0は製品使用の準備ができている

原文(投稿日:2016/08/24)へのリンク

Googleは、安定しており製品に使用可能だと思われるgRPC 1.0をリリースした。

gRPCはStubbyと呼ばれるGoogleの内部プロジェクトとして開始し、Googleの内部サービス内の通信に使用された。Googleは18か月前にこのフレームワークをオープンソース化した。これはGoogle外部での採用や、Googleのサービスを使用する際に利用することを意図しており、インターネットもしくは内部の製品のために他のサービスと通信することができる。

gRPCはプラットフォーム独立のシステムであり、エンドポイントサービスと送信ペイロードの定義にProtocol Buffers IDLを用い、複数言語のスタブを生成する。gRPCは10の言語をサポートする。CC++C#GoJava (Java/Androidを含む)、Node.js, Objective-CPHPPython、それと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

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT