ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

LEARN ENVOY - Back Pressure

www.envoyproxy.io

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 に何を伝えるかって意味だったのね。

まぁでもどういうレスポンスコードが帰るかを知れるのは有益だった。