gRPC
2019-04-10
gRPC について勉強したメモ
情報源
公式
二次情報
- [2018-01] HTTP/2における双方向通信とgRPCとこれから - Qiita
- [2018-11] Go言語でgRPCを簡単なgRPCサーバを立てる | FOX HOUND TECH
- [2018-11] クックパッドがgRPCを採用するまで サービス間通信で抱えていた課題と、RubyでgRPCを運用するための工夫 - ログミーTech
- Ruby でやってる例
- [2018-12] gRPCを使ってPairsのchatを高速にしたお話 – Eureka Engineering – Medium
- [2019-02] Laravel JP ConferenceでPHPとgRPCサーバについて発表しました|開発ブログ|株式会社Nextat(ネクスタット)
- PHP で gRPC やるのは大変そう
- [2018-02] なぜPHPはgRPCサーバーがサポートされていないのか? - 恥知らずのウェブエンジニア
- [2019-01] gRPC WebがGAになったのでそろそろ理解してみる - Qiita
Protocol Buffers
- [2019-02] 今さらProtocol Buffersと、手に馴染む道具の話 - Qiita
Unity 関連
- [2018-04] UnityでgRPCを動かす - Qiita
- 実機で動かすところまでいくの苦労してそう
- [2019-02] Unity2018.2 + il2cppでgRPCアプリをAndroid/iOS向けにビルドする - Qiita
関連技術 : MagicOnion
概要
- gRPC とは、HTTP/2 上で RPC を行う規格。 Google が作った
- Protocol Buffers という IDL を書いて Server / Client のシリアライザのコードを生成する仕組みが用意されている
4 種類の通信方式
gRPC では 4 種類の通信方式(service method)を定義できる。
方式 | 内容 | 用途 | 備考 |
---|---|---|---|
Unary RPCs | 見慣れた 1 Request - 1 Response の形式。 関数呼び出しのように扱えてシンプル |
一般的なサービス | unary は「単項の」という意味 |
Server streaming RPCs | 1 Request に対し Server が複数 Response を返す | サーバープッシュ型の機能 | Server が最後に送信完了の信号を送る |
Client streaming RPCs | 複数 Request 後に Server が 1 Response を返す | データのアップロードなど | Server は Client の送信完了を待って Response を返す |
Bidirectional streaming RPCs | 双方向ストリーム通信。 それぞれのストリームは独立していて任意の順序でやり取りが可能 |
チャットなどのリアルタイム通信 | Duplex streaming とも呼ばれる。 各ストリームの送信順序は保証される |