aidy.v2.plugin.upstream_rate_limit
Messages & Enums
message HeaderBucket
按请求 Header 划分限流桶。
message HeaderBucket { // Header 名称,例如 `X-Tenant-ID`。 string name = 1;}message HeaderCondition
基于请求 Header 的匹配条件。
message HeaderCondition { // Header 名称。 string name = 1; // 等于指定值。 string equals = 11; // 以前缀命中。 string starts_with = 12; // 包含指定值。 string contains = 13; // 通过正则匹配。 string regex = 14; // 要求该 Header 存在,必须设置为 true。 bool exists = 15;}message RateLimitBucket
用于生成限流 key 的维度。
message RateLimitBucket { // 按请求 Header 划分限流桶。 // 按客户端 IP 划分限流桶。}message RateLimitCondition
只有在条件满足时才执行限流检查。
message RateLimitCondition { // 基于请求 Header 的匹配条件。 // 基于客户端 IP 的匹配条件。}message RateLimitQuota
限流配额。
message RateLimitQuota { // 可消耗的总额度。 int64 limit = 1; // 滑动窗口时间,例如 1s、1m、1h、24h。 google.protobuf.Duration window = 2; // 计量单位。}enum RateLimitUnit
配额使用的计量单位。
enum RateLimitUnit { // 未显式指定。 RATE_LIMIT_UNIT_UNSPECIFIED = 0; // 按 token 数计量。 RATE_LIMIT_UNIT_TOKENS = 1; // 按字符数计量。 RATE_LIMIT_UNIT_CHARACTERS = 2;}message SourceAddrBucket
按客户端 IP 划分限流桶。
message SourceAddrBucket { // no fields}message SourceAddrCondition
基于客户端 IP 的匹配条件。
message SourceAddrCondition { // 等于指定 IP。 string equals = 1; // 以前缀命中,例如 `192.168.1.`。 string starts_with = 2; // 通过 CIDR 网段匹配,例如 `192.168.0.0/16`。 string cidr = 3; // 要求当前请求存在可解析的客户端 IP,必须设置为 true。 bool exists = 4;}message UpstreamRateLimitPluginConfig
route 级上游限流配置。
message UpstreamRateLimitPluginConfig { // 规则列表;为空时插件不会生效。}message UpstreamRateLimitRule
单条上游限流规则。
message UpstreamRateLimitRule { // 用于生成限流 key 的维度。 // 每条规则会自动追加 `route:{RouteID}:rule:{RuleIndex}` 前缀。 // 只有在全部条件满足时才执行限流检查;为空时表示始终检查。 // 配额定义。}