hysryt / wiki

https://hysryt.github.io/wiki/
0 stars 0 forks source link

gRPC #165

Open hysryt opened 3 years ago

hysryt commented 3 years ago

https://grpc.io/ https://github.com/grpc/grpc https://ja.wikipedia.org/wiki/GRPC

hysryt commented 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 ファイルで行う。

RPC(Remote Procedure Call)

遠隔手続き呼び出し。 ネットワーク越しにプログラムを呼び出し、実行させるための手法、プロトコル。

クライアント側からサーバー側の関数を呼び出す場合、 クライアント側には関数のインターフェース、サーバー側には関数の実装が必要となる。 クライアント側とサーバー側で使用する言語が異なる場合、 IDL(インターフェース定義言語)という特定の言語に依存しない独自の言語でインターフェースを記述し、 それを基にクライアント側とサーバー側の言語に合わせたインターフェース及び実装を構築する。

Finagle

https://github.com/twitter/finagle Twitterが開発するRPCシステム。

Apache Thrift

https://thrift.apache.org/ Facebookが開発したRPCシステム。

Courier

https://dropbox.tech/infrastructure/courier-dropbox-migration-to-grpc Dropboxによる、gRPCベースのマイクロサービス間通信のインフラ。

Armeria

https://armeria.dev/ LINEによるマイクロサービスフレームワーク。 gRPCやThriftを使用できる。

hysryt commented 3 years ago

Protocol Buffers

brew install protobuf
protoc --proto_path ./echo/proto --go_out=plugins=grpc:./echo/proto/ ./echo/proto/echo.proto
hysryt commented 3 years ago

PHP

PHPはgRPCサーバーとしては不向き。 ドキュメントには他の言語を使うよう書いてある。

クライアント側

hysryt commented 3 years ago

Node.js

protoファイルを動的に読み込む方式と、事前にコンパイルする方式がある。

hysryt commented 3 years ago

負荷分散

https://christina04.hatenablog.com/entry/grpc-load-balancing