APISIX 限流插件 `limit-count`

📅 2026/7/23 11:35:09 👁️ 阅读次数 📝 编程学习
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