Envoy を使えば rate limiting, retries, timeouts を実装しなくて済むようになります。この記事では client が障害と backpressure をどう扱うかを示します。
A Guide to Envoy’s Backpressure
まぁだいたいは Envoy での設定(rate limiting, retries, timeouts)でなんとかなるが、失敗し続けた際にどう振舞うかを client に実装する必要がある。
Envoy Failure Modes
へー。Envoy が Downstream(client)に、それらが失敗したときに返却する一覧。
- Rate Limiting Failure: 429 を返す
- Timeout Failure: 504 を返す
- Empty Cluster: 503 を返す
- Unresponsive Upstream: 503 を返す
- Circuit Breaker Failed Open: 503 を返し、
x-envoy-overloaded: true
header をつける。 - Maintenance mode:503 を返し、
x-envoy-overloaded: true
header をつける。 - Domain or Route not found: 404 を返す
- Upstream Connection Closed: downstream がデータを受信しはじめたかによって、reset か 503 になる
- Envoy is Overloaded: エラーなしでコネクションがブロックされる
おわりに
Back Pressure って問題起きた時に Envoy が Downstream に何を伝えるかって意味だったのね。
まぁでもどういうレスポンスコードが帰るかを知れるのは有益だった。