常用速率限制組件 (proto)
extensions.common.ratelimit.v3.RateLimitDescriptor
[extensions.common.ratelimit.v3.RateLimitDescriptor proto]
RateLimitDescriptor 是一個階層式條目的清單,服務會使用這些條目來判斷最終的速率限制金鑰和整體允許的限制。以下是一些範例,說明如何將它們用於網域「envoy」。
["authenticated": "false"], ["remote_address": "10.0.0.1"]
作用:限制 IP 位址 10.0.0.1 的所有未驗證流量。組態會為 *remote_address* 金鑰提供預設限制。如果希望提高 10.0.0.1 的限制或完全封鎖它,則可以直接在組態中指定。
["authenticated": "false"], ["path": "/foo/bar"]
作用:針對特定路徑 (或如果服務中以此方式組態,則為字首) 全域限制所有未驗證流量。
["authenticated": "false"], ["path": "/foo/bar"], ["remote_address": "10.0.0.1"]
作用:限制特定 IP 位址的特定路徑的未驗證流量。與 (1) 類似,如果我們想要使用覆寫組態,則可以提高/封鎖特定 IP 位址。
["authenticated": "true"], ["client_id": "foo"]
作用:限制已驗證用戶端「foo」的所有流量。
["authenticated": "true"], ["client_id": "foo"], ["path": "/foo/bar"]
作用:限制已驗證用戶端「foo」的特定路徑的流量。
此 API 背後的想法是,如果需要,可以在 1 個請求中傳送 (1)/(2)/(3) 和 (4)/(5)。這能夠使用通用後端建置複雜的應用程式案例。
或者,描述子可以在「limit」金鑰下包含限制覆寫,該金鑰指定每個單位要使用的請求數,而不是速率限制服務中組態的數目。
{
"entries": [],
"limit": {...}
}
- entries
(repeated extensions.common.ratelimit.v3.RateLimitDescriptor.Entry, 必要) 描述子條目。
- limit
(extensions.common.ratelimit.v3.RateLimitDescriptor.RateLimitOverride) 要提供給速率限制服務的選擇性速率限制覆寫。
extensions.common.ratelimit.v3.RateLimitDescriptor.Entry
[extensions.common.ratelimit.v3.RateLimitDescriptor.Entry proto]
{
"key": ...,
"value": ...
}
- key
(字串, 必要) 描述子金鑰。
- value
(字串, 必要) 描述子值。
extensions.common.ratelimit.v3.RateLimitDescriptor.RateLimitOverride
[extensions.common.ratelimit.v3.RateLimitDescriptor.RateLimitOverride proto]
覆寫速率限制以套用至此描述子,而不是速率限制服務中組態的限制。如需詳細資訊,請參閱速率限制覆寫。
{
"requests_per_unit": ...,
"unit": ...
}
- requests_per_unit
(uint32) 每個時間單位的請求數。
- unit
(type.v3.RateLimitUnit) 時間單位。
extensions.common.ratelimit.v3.LocalRateLimitDescriptor
[extensions.common.ratelimit.v3.LocalRateLimitDescriptor proto]
{
"entries": [],
"token_bucket": {...}
}
- entries
(repeated extensions.common.ratelimit.v3.RateLimitDescriptor.Entry, 必要) 描述子條目。
- token_bucket
(type.v3.TokenBucket, 必要) 用於本機速率限制的符記儲存區演算法。
extensions.common.ratelimit.v3.LocalClusterRateLimit
[extensions.common.ratelimit.v3.LocalClusterRateLimit proto]
組態用於啟用本機叢集層級的速率限制,其中符記儲存區將在本地叢集中的所有 Envoy 執行個體之間共用。將根據本機叢集的成員資格動態計算共用,以及組態。當限制器重新填滿符記儲存區時,將會套用共用。根據預設,符記儲存區會平均共用。
如需有關本機叢集的詳細資訊,請參閱本機叢集名稱。
列舉 extensions.common.ratelimit.v3.XRateLimitHeadersRFCVersion
[extensions.common.ratelimit.v3.XRateLimitHeadersRFCVersion proto]
定義用於 X-RateLimit 標頭的標準版本。
- OFF
(預設) 已停用 X-RateLimit 標頭。
- DRAFT_VERSION_03
使用 草案 RFC 版本 03,其中將新增 3 個標頭
X-RateLimit-Limit
- 表示目前時間視窗中與用戶端相關聯的請求配額,後接配額原則的描述。該值由符記儲存區的最大符記傳回。X-RateLimit-Remaining
- 表示目前時間視窗中剩餘的請求。該值由符記儲存區中剩餘的符記傳回。X-RateLimit-Reset
- 表示到目前時間視窗重設為止的秒數。該值由符記儲存區的剩餘填入間隔傳回。
列舉 extensions.common.ratelimit.v3.VhRateLimitsOptions
[extensions.common.ratelimit.v3.VhRateLimitsOptions proto]
- OVERRIDE
(預設) 除非路由具有速率限制原則,否則請使用虛擬主機速率限制。
- INCLUDE
即使路由具有速率限制原則,仍使用虛擬主機速率限制。
- IGNORE
即使路由沒有速率限制原則,仍忽略虛擬主機速率限制。