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について読んでいきます。
僕から以上。あったかくして寝ろよ。