tldr
勉強がてらにEnvoyのドキュメントを邦訳してみました。ベースはGoogle Translateで、ところどころ不自然な箇所を直しています。
原文としたのEnvoyのドキュメントはこちらのディレクトリ以下にあります(ライセンス:Apache License 2.0, NOTICE)。
グローバルレート制限
分散型回路遮断は、分散型システムのスループットを制御する上で一般的に非常に効果的ですが、それほど効果的ではなくグローバルなレート制限が望まれる場合があります。最も一般的なケースは、多数のホストが少数のホストに転送しており、平均リクエスト待ち時間が短い場合(例えば、データベースサーバへの接続/リクエスト)である。ターゲットホストがバックアップされると、ダウンストリームホストがアップストリームクラスタに負担をかけます。このシナリオでは、システムが通常の要求パターンの間は正常に動作するが、それでもシステムに障害が発生したときのカスケード障害を防止するように、各ダウンストリームホストに十分な回路遮断制限を設定することは非常に困難です。グローバルレート制限はこの場合のためのよい解決策です。
Envoyは、グローバルなgRPCレート制限サービスと直接統合しています。定義されたRPC / IDLプロトコルを実装する任意のサービスを使用することができますが、LyftはRedisバックエンドを使用するGoで書かれた参照実装を提供します。 Envoyのレート制限統合には、次の機能があります。
- ネットワークレベルレート制限フィルタ:Envoyは、フィルタがインストールされているリスナー上の新しい接続ごとにレート制限サービスを呼び出します。この設定では、レート制限をオンに設定する特定のドメインと記述子を指定しています。これは、リスナーを通過する1秒あたりの接続数をレート制限するという最終的な効果があります。構成の参照
- HTTPレベルレート制限フィルタ:Envoyは、フィルタがインストールされていて、ルートテーブルがグローバルレート制限サービスを呼び出すように指定しているリスナ上の新しいリクエストごとにレート制限サービスを呼び出します。ターゲットアップストリームクラスタへのすべての要求、および発信元クラスタからターゲットクラスタへのすべての要求はレート制限できます。構成の参照
レート制限サービスの設定