0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

gRPCとは?

Posted at

gRPCとは

  • サービス間でHTTP/2を利用してやり取りするための技術
  • gRPCとはRPCを実現するためのGoogleが開発したプロトコルの1つ。オープンソースのRPCのフレームワーク
  • サーバ上に登録されている関数を、クライアントに応じて呼び出す
    →RPC(Remote Procedure Call)

gRPCの特徴

  • 特定の言語やプラットフォームに依存しない

  • クライアント-サーバ間の通信にはデフォルトではHTTP/2を使用、データシリアライズにはProtocol Buffersを使用して、高速通信を実現している
    →Protocol Buffersはやり取りするデータの型や構造を事前に定義する仕組みが用意されている(protoファイル)
    これを利用して各言語に対応する、サーバ/クライアント用ソースコードのコード自動生成が可能に

  • 通信規格がHTTP/2ということは、対応していないブラウザやロードバランサはリクエストを受けることが出来ない


メリット

・Request/Response はバイナリデータの形で、送信データサイズは普段利用しているHTTP/1.x JSON/XMLより小さい
・HTTP/2の双方向通信活用して、4パターンの通信方法ある
・Restfulのようなパスを定義することが必要ない、ローカルメソッドとほぼ同じの方法で使う
・開発言語の制限なし(GoogleからgRPC自動作成ツールを提供する、いくつの言語をサポートしている)

デメリット

  • Restfulのような明確に定義したリクエストメソッドがない(CRUD)
  • HTTP/1.Xのサポートしていない
  • 事前にメソッドの名前、Request/Response内容を定義するが必要
  • Request/Responseの定義を変更する場合、もう一度compileが必要

protocol buffersとは?

  • 言語やプラットフォームに依存しない、構造化されたデータをシリアライズする拡張可能なインターフェース記述言語(IDL)
  • protoという拡張子のファイルで定義して、それをもとにgRPCと通信するclientを作成する。主流はversion3
  • Request/Responseのフォーマットを指定できる

protoファイルのサンプル

syntax = "proto3";
 
option go_package = "./hello";
package hello;
 
service Hello {
  rpc GetHelloWorld (StringRequest) returns (StringResponse) {}
}
 
message StringRequest {
  string RequestMassage = 1;
}
 
message StringResponse {
  string ResponseMassage = 1;
}

protoファイルの説明

 
Ta DescriptionRemarks
syntax バージョン定義 執筆時点ではproto3 が最新?
package パッケージの定義 複数の.protoファイルを利用するケースなどで、名前の衝突を避けるためにパッケージ名を設定できます
service gRPCに登録するサービス名を指定 class みたいなもの?
rpc 関数の定義 今回の例では、GetHelloWorldという関数を作成し、StringRequest という引数を受け取り、StringResponse という返り値を定義しています。
message 型の定義左から順に型 型の名前 = タグナンバー 1つのmessageに複数定義する事もできます
import 他の.protoファイルで定義したメッセージ型を使いたい場合にインポートして利用することができます 今回は使用していません
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?