4. 主流网关产品:Kong、APISIX、Envoy、Nginx Plus的配额能力对比

在云原生架构中,API网关的配额管理能力直接决定了流量治理的精细度与可靠性。Kong、Apache APISIX、Envoy Proxy 和 Nginx Plus 是目前市场占有率最高的四款网关产品,它们在配额模型、性能开销、扩展方式上存在显著差异。本节从架构视角出发,围绕配额模型、限速算法、动态生效、分布式支持四个维度进行横向对比。

4.1 配额模型与核心能力矩阵

下表从配额作用域、算法支持、动态配置、集群一致性四个关键维度,梳理四款产品的核心能力差异:

对比维度 Kong (OSS/Enterprise) Apache APISIX Envoy Proxy Nginx Plus
配额作用域 Route / Service / Consumer Route / Service / Consumer / Plugin Listener / Route / Cluster Location / Server / Zone
限速算法 令牌桶 + 滑动窗口 令牌桶 + 漏桶 + 滑动窗口 + 并发限制 令牌桶 (全局/每路由) 漏桶 + 令牌桶 (通过模块)
动态生效 DB 变更 + 缓存刷新 (秒级) etcd 推送 + 热加载 (毫秒级) xDS 推送 (毫秒级) 配置重载 (秒级,需 reload)
分布式支持 Redis / 集群模式 Redis / etcd / 内置集群 全局服务 + 外部限速器 共享内存 + 外部模块
配额持久化 支持 (Enterprise) 支持 (通过插件) 需外部组件 需外部组件
配额预热 不支持 支持 (burst 预填充) 支持 (令牌桶初始容量) 不支持
架构选型提示: 如果团队追求毫秒级动态生效和丰富的算法组合,APISIX 的 etcd 驱动模型优势明显;如果已有 Nginx 生态且对动态性要求不高,Nginx Plus 的共享内存方案更易集成;Envoy 适合作为 Service Mesh 数据面,配额能力依赖外部限速器扩展;Kong 的 Consumer 级配额在 API 经济场景中最为成熟。

4.2 配额架构对比:中心化 vs 去中心化

四款产品在配额架构上分为两大流派:中心化存储型(Kong、APISIX)和 去中心化内存型(Envoy、Nginx Plus)。中心化方案依赖 Redis/etcd 做全局计数器,适合多节点强一致场景;去中心化方案使用共享内存或本地计数器,性能更高但跨节点协调复杂。

下图展示了两种架构的配额数据流差异:

中心化 vs 去中心化配额架构对比 中心化存储型 (Kong / APISIX) API 网关节点 1 API 网关节点 2 Redis / etcd 全局计数器,强一致性 配额变更秒级生效 支持配额持久化 去中心化内存型 (Envoy / Nginx Plus) 网关节点 1 (本地计数器) 网关节点 2 (本地计数器) 共享内存 本地计数器,高性能低延迟 跨节点协调需外部组件 配额变更需 reload 或 xDS

4.3 接口调用实战:四款产品的配额配置对比

以下通过一个相同的业务场景——对 /api/v1/orders 路由设置每分钟 100 次请求配额,展示四款产品的配置差异:

4.3.1 Kong (使用 rate-limiting 插件)

# 通过 Admin API 为路由绑定配额
curl -X POST http://localhost:8001/routes/{route_id}/plugins \
  -H "Content-Type: application/json" \
  -d '{
    "name": "rate-limiting",
    "config": {
      "minute": 100,
      "policy": "redis",
      "redis_host": "redis-cluster.example.com",
      "redis_port": 6379,
      "fault_tolerant": true
    }
  }'

4.3.2 Apache APISIX (使用 limit-req 插件)

# 通过 Admin API 为路由配置配额
curl -X PUT http://localhost:9180/apisix/admin/routes/1 \
  -H "X-: edd1c9f034335f136f87ad84b625c8f1" \
  -d '{
    "uri": "/api/v1/orders/*",
    "plugins": {
      "limit-req": {
        "rate": 100,
        "burst": 20,
        "rejected_code": 429,
        "key": "remote_addr",
        "redis_host": "127.0.0.1",
        "redis_port": 6379,
        "redis_timeout": 1000
      }
    },
    "upstream": {
      "type": "roundrobin",
      "nodes": {
        "order-service:8080": 1
      }
    }
  }'

4.3.3 Envoy Proxy (使用本地限速过滤器)

# Envoy 配置文件片段:HTTP 连接管理器中的本地限速
http_filters:
- name: envoy.filters.http.local_ratelimit
  typed_config:
    "@type": type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
    stat_prefix: http_local_rate_limiter
    _bucket:
      max_tokens: 100
      tokens_per_fill: 100
      fill_interval: 60s
    filter_enabled:
      default_value:
        numerator: 100
        denominator: HUNDRED
    filter_enforced:
      default_value:
        numerator: 100
        denominator: HUNDRED
    response_headers_to_add:
      - header:
          key: "X-RateLimit-Limit"
          value: "100"

4.3.4 Nginx Plus (使用 limit_req 模块)

# nginx.conf 配置片段
http {
    # 定义共享内存区域,大小 10MB
    limit_req_zone $binary_remote_addr zone=orders_zone:10m rate=100r/m;

    server {
        location /api/v1/orders/ {
            # 应用配额限制,burst 允许瞬时峰值
            limit_req zone=orders_zone burst=20 nodelay;
            limit_req_status 429;
            
            proxy_pass http://order_backend;
        }
    }
}
配置避坑指南: Kong 和 APISIX 的 Redis 策略在生产中必须配置哨兵或集群模式,避免单点故障导致配额失效;Envoy 的本地限速器不支持跨节点配额聚合,多副本场景需配合全局限速服务(如 Lyft 的限速器);Nginx Plus 的 limit_req_zone 在 reload 时会丢失计数器状态,高精度场景建议使用外部模块。

4.4 性能与扩展性对比

基于社区基准测试和官方数据,四款产品在配额场景下的性能表现如下:

  • Kong: 启用 rate-limiting 插件后,单节点 QPS 下降约 15%-20%(Redis 策略),集群模式下配额一致性较好,但 Redis 延迟会直接影响限速精度。
  • APISIX: 使用 limit-req 插件时,性能损耗约 5%-10%,得益于 etcd 推送和 LuaJIT 优化,动态配置生效时间在 50ms 以内。
  • Envoy: 本地限速器性能损耗极低(<3%),但全局限速场景需引入外部 gRPC 限速服务,增加架构复杂度。
  • Nginx Plus: 共享内存限速性能优秀(<5% 损耗),但配置变更需 reload,对长连接场景不友好。

4.5 选型决策树

根据团队技术栈和业务需求,可参考以下决策路径:

网关配额能力选型决策树 需要动态配额? 是 需要毫秒级生效 + 丰富算法? APISIX etcd + 多算法 + 低损耗 Kong Consumer 配额 + 企业特性 否 已有 Nginx 生态? Nginx Plus 共享内存 + 低损耗 Envoy Service Mesh + 外部限速
架构建议: 对于新建云原生平台,推荐 APISIX 作为 API 网关,其配额模型原生支持 etcd 驱动,动态生效快且算法丰富;如果团队已有 Envoy 网格基础设施,建议使用全局限速服务(如基于 Redis 的限速器)补充配额能力,避免引入第二个网关层。