APISIX 限流插件 `limit-count`
文章目录
- APISIX 限流插件 `limit-count`
- `limit-count` 是什么,不是什么
- 核心配置说明
- `count` 与 `time_window`:限流额度
- `key_type` + `key`:按什么维度计数
- 四种 policy 对比
- `policy: local`
- `policy: redis`:跨节点共享计数器
- `allow_degradation`:Redis 不可达时是否放行
- `rejected_code` + `rejected_msg`:拒绝时的响应
- `show_limit_quota_header`:是否回写额度头
- `group`:多个路由共享一个计数器
- 生产场景:双层 APISIX(前置网关 + 业务网关)
- 第 1 跳:客户端 → 前置 APISIX
- 第 2 跳:前置 APISIX → 业务 APISIX
- `keepalive_pool` 三个参数的真实含义
- 为什么是 per-worker?
- `idle_timeout: 6000` —— 空闲多久就关
- `requests: 100000` —— 一条连接最多服务多少请求
APISIX 限流插件limit-count
官方文档:https://apisix.apache.org/docs/apisix/plugins/limit-count/
limit-count插件是 Apache APISIX 中用于限制请求速率的工具,它基于固定窗口算法,通过配置在指定时间窗口内允许的最大请求数(count)来实施限流,超出配额的请求将被拒绝。该插件支持多种限流策略,包括基于本地内存、单机 Redis 或 Redis 集群的计数器存储,并提供了灵活的关键字(key)配置方式(如单个变量、变量组合或常量)以实现精细化的请求计数。此外,插件还支持在多个路由间共享配额(通过group属性)、在 APISIX 节点间同步限流状态(通过 Redis)、以及为已认证和匿名用户设置不同的限流阈值,有效地保障了 API 服务的稳定性和公平性。
APISIX 内置的limit-count插件实现的是固定窗口计数器(Fixed Window Counter)限流。它的工作模型只有一句话:
对于同一个
key,在每个time_window秒的固定时间窗口内,最多放行count个请求,超过后返回rejected_*code。
