んだ日記

ndaDayoの技術日記です

gRPC Go for Professionals の読書録 Chapter 1

gRPC Go for Professionalsのchapter01-chapter05を読み終わったので、いつものように読書録を書いていきます。

いやー久しぶりの投稿です。

まずは、Chapter 1から

Chapter 1: Networking Primer

Chapter 1の主なトピックとしては、4つ

  • HTTP/2
  • RPC operations
  • RPC types
  • The life cycle of an RPC

Chapter 1では、gRPCのlower levelな話題について触れている。

HTTP/2

まずは、HTTP/2についてざっくりと解説している。HTTP/1.1との違いの解説から始めているのですが、gRPCに触れる上では、3つを押さえておけと。

  • we can send structured binary messages over the wire instead of text
  • we can have streams where the server can send multiple responses for one response
  • we do that in an efficient way because we only create one TCP connection and it will handle multiple requests and responses.

RPC operations

続いては、RPCがどんなオペレーションを行うことで、通信しているのか?について、が説明されている。

  • Send Header
  • Send Message
  • Send Half Close
  • Send Trailer

Send Trailerだけが馴染みがないが、これは、for terminating an entire RPC.ですね。つまり、RPCを終了するという操作ですね。

イメージについては、次のRPC typesのセクションで見ていきます。

RPC types

続いて、RPC typesについて。

Unary

A unary RPC is an RPC that performs one request and returns one response

1リクエスト、1レスポンスという一般的な通信。イメージ図としては、こんな感じ。

本書から Figure 1.3 – Unary RPC flow

前章に登場したオペレーション、Send Trailerがサーバーから最後に送信されているのがわかりますね。

Server streaming

本書からServer streaming flow

1リクエストに対して、複数のレスポンスをサーバー側から返す。 ユースケースとしては、本書では株価のチャートを上げている。

自分が見たい企業を選択、クライアントから1回リクエストすれば、サーバー側から選択した企業の株価をリアルタイムで複数回送信して、クライアント側に表示するという感じ。

Client streaming

server streamingのClientバージョン。

ユースケースとしては、本書では例としてセンサーを上げている。

なんかのセンサーが何かの値をリアルタイムで測定しているとして、測定値をサーバーに複数回投げつけて、サーバーの状態を更新するというユースケース

Bidirectional streaming

最後は、双方向のストリーム通信。

ユースケースとしては、タクシーの配車サービスを本書では例として上げています。

タクシーの配車を行うにあたって、サーバー側はクライアントにタクシーの位置情報を、クライアント側はユーザーの位置情報を送信する、そんな感じ。

まとめ

Chapter 1では、gRPCの概観とHTTP/2について紹介されていました。次回はChapter 2 Protobuf Primerについて読んでいきます。

僕から以上。あったかくして寝ろよ。