---
title: API网关限流与配额策略对比实践
keywords: [API网关, 限流, 配额, Kong, Envoy, APISIX]
description: 对比Kong、Envoy与APISIX的限流与配额策略,提供可验证的配置片段与命令,确保公正与稳定的流量治理。
date: 2025-11-26
categories:
- 文章资讯
- 技术教程
---
概述
- 目标:以统一指标与策略,在不同网关实现速率限制与配额,防止滥用与保证公平分配。
- 范畴:每秒请求限流、突发容量、每日配额计数、基于凭证/客户端维度的限流键。
核心与实战
- Kong(decK声明式):
_format_version: "3.0"
services:
- name: api
url: http://api:8080
routes:
- name: api-v1
service: api
paths: ["/v1"]
plugins:
- name: rate-limiting
config:
second: 100
policy: local
limit_by: consumer
fault_tolerant: true
- name: request-transformer
config:
add:
headers:
- "X-Rate-Key:consumer"
- Envoy(本地限流过滤器):
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
token_bucket:
max_tokens: 100
tokens_per_fill: 100
fill_interval: 1s
filter_enabled:
runtime_key: local_rate_limit_enabled
default_value: true
- APISIX(limit-count与limit-req):
{
"uri": "/v1/*",
"plugins": {
"limit-count": {
"count": 1000,
"time_window": 60,
"key": "consumer_name",
"policy": "local"
},
"limit-req": {
"rate": 100,
"burst": 50,
"key": "consumer_name"
}
}
}
示例
- Kong应用配置:
deck sync -s kong.yaml
- Envoy加载配置:
envoy -c envoy.yaml --drain-time-s 2
- APISIX路由创建:
curl -X PUT http://apisix:9080/apisix/admin/routes/1 -H 'X-API-KEY: xxxxx' -d @route.json
验证与监控
- 观测命中率与拒绝比例:
- Kong:Admin API 或 Prometheus
kong_http_status。 - Envoy:
listener.downstream_rq_1xx/2xx/4xx与token_bucket相关指标。 - APISIX:
limit-count与limit-req插件指标。 - 键维度与公平性:
- 校验限流键是否按
consumer或client_id生效,避免所有流量共享单键造成不公平。
常见误区
- 只做全局限流而缺乏维度键,导致热点客户端吞噬配额;应按消费者或凭证维度限流。
- 本地内存策略在多节点集群下不一致;需考虑Redis/一致性哈希或集中式限流服务。
- 忽视突发容量与响应头暴露,客户端无法自适应;应暴露
X-RateLimit-*头并提供重试策略。
结语
- 不同网关都能实现稳定的限流与配额,关键在统一指标、维度键与监控验证,以保障业务公平与高可用。

发表评论 取消回复