Open2

gRPCについて学ぶ

Ryota OnumaRyota Onuma

Overview

  • RPCの一種であるので、あたかも自分のローカルリソースを使うかのごとく、他マシンの関数を呼び出せる仕組み
  • gRPCに対応している言語ならよしなにgRPCクライアントとgRPCサーバーを構築でき、お互いの言語を気にせずやり取りできる
  • Google の APIはgRPCインターフェースを提供するので、簡単に GoogleのAPIをアプリケーションに組み込める
  • デフォルトでは Interface Definition Language (IDL) としてProtocol Buffersを使う
    • 他のシリアライズ形式(jsonなど)を使うことも可能ではある

Protocol Buffers

  • .protoファイルにシリアライズしたいデータの構造を定義して使用する。
  • サービスとメッセージを定義する
    • サービス: API定義のこと。RPCメソッドの定義を書く
    • メッセージ: key value形式のデータ構造である
// The greeter service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}
  • protocと呼ばれるgRPCコンパイラを使って、protoファイルから好きな言語のデータアクセス用コードを自動生成できる
  • proto2とproto3があるが、proto3を使っておけばOK

参考

https://grpc.io/docs/what-is-grpc/introduction/

https://qiita.com/Captain_Blue/items/b7a1f4a42f48559fac0c#サービスとrpcメソッド