Open hysryt opened 3 years ago
オープンソースのリモートプロシージャコール (RPC) システム。 開発を開始したのがGoogleなのでgをつけてgRPC(多分)。 → バージョンごとにgに意味をつけている(https://grpc.github.io/grpc/core/md_doc_g_stands_for.html) Google社内で使われていたStubbyが前身となっている。 HTTP/2を使用する。
IDL(インターフェース定義言語)には Protocol Buffers を使用する。
Protocol Buffers ではプロトコルの定義を .proto
ファイルで行う。
遠隔手続き呼び出し。 ネットワーク越しにプログラムを呼び出し、実行させるための手法、プロトコル。
クライアント側からサーバー側の関数を呼び出す場合、 クライアント側には関数のインターフェース、サーバー側には関数の実装が必要となる。 クライアント側とサーバー側で使用する言語が異なる場合、 IDL(インターフェース定義言語)という特定の言語に依存しない独自の言語でインターフェースを記述し、 それを基にクライアント側とサーバー側の言語に合わせたインターフェース及び実装を構築する。
https://github.com/twitter/finagle Twitterが開発するRPCシステム。
https://thrift.apache.org/ Facebookが開発したRPCシステム。
https://dropbox.tech/infrastructure/courier-dropbox-migration-to-grpc Dropboxによる、gRPCベースのマイクロサービス間通信のインフラ。
https://armeria.dev/ LINEによるマイクロサービスフレームワーク。 gRPCやThriftを使用できる。
brew install protobuf
protoc --proto_path ./echo/proto --go_out=plugins=grpc:./echo/proto/ ./echo/proto/echo.proto
PHPはgRPCサーバーとしては不向き。 ドキュメントには他の言語を使うよう書いてある。
protoファイルを動的に読み込む方式と、事前にコンパイルする方式がある。
https://grpc.io/ https://github.com/grpc/grpc https://ja.wikipedia.org/wiki/GRPC