节流、缓存与使用计划
通过突发和稳态节流限制保护后端,启用响应缓存,并为合作伙伴创建带 API 密钥的使用计划。
节流、缓存与使用计划 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
限流为何必不可少
如果没有限流,单个行为异常的客户端或流量激增可能会压垮您的后端服务,例如 Lambda 并发数、RDS 连接或下游 API。API Gateway 中的限流会限制每秒请求数,同时允许短时间内的请求量超过稳定速率。被限流的请求会立即收到 429 Too Many Requests 响应,不会到达后端,从而保护下游资源免受过载影响。
账户级与阶段级限流
限流在多个层级运行。账户级限制为每秒 10,000 个请求(RPS),突发容量为 5,000 个请求(软限制,可以提高)。在阶段级别,您可以设置适用于该阶段所有方法的默认限流速率(RPS)和突发限制。在方法级别,您可以针对特定端点覆盖阶段默认值,例如,为读取请求较多的 GET 端点设置高于写入请求较多的 POST 端点的速率限制。
aws apigateway update-stage \
--rest-api-id 'abc123' \
--stage-name 'prod' \
--patch-operations \
'op=replace,path=/*/*/throttling/rateLimit,value=1000' \
'op=replace,path=/*/*/throttling/burstLimit,value=2000'令牌桶算法
API Gateway 限流使用令牌桶算法。令牌会在桶中累积,最多达到突发限制(瞬时最大容量)。每个请求消耗一个令牌。令牌按照速率限制(稳定状态下的 RPS)补充。如果桶为空,请求就会受到限流。例如:突发容量为 5000,速率为 1000 RPS。开始时可以处理 5000 个并发请求;令牌桶以每秒 1000 个令牌的速度补充。这既能吸收短暂的流量峰值,又能执行长期速率限制。
API Gateway 响应缓存
响应缓存(可用于 REST API 阶段)会将后端响应存储在由 API Gateway 管理的缓存中,因此相同请求可以直接从缓存提供服务,而无需访问后端。这可以降低后端负载和延迟,并显著减少读取请求较多的 API 的 Lambda 调用成本。缓存键由请求确定(具体包括方法、路径、查询字符串和标头,取决于配置)。缓存 TTL 可配置为 0 到 3600 秒(默认 300 秒)。
aws apigateway update-stage \
--rest-api-id 'abc123' \
--stage-name 'prod' \
--patch-operations \
'op=replace,path=/cacheClusterEnabled,value=true' \
'op=replace,path=/cacheClusterSize,value=0.5' \
'op=replace,path=/*/*/caching/ttlInSeconds,value=300'缓存键自定义
默认情况下,缓存键是完整的请求 URL。您可以自定义哪些元素参与生成缓存键:包括特定的查询字符串参数(例如 pageSize、filter),但排除无关参数(例如时间戳)。您还可以将特定标头加入缓存键。请从缓存键中排除敏感标头,以防止私有数据污染共享缓存条目。请通过调整缓存键,在确保不同逻辑请求获得不同缓存响应的同时,最大限度地提高缓存命中率。
缓存失效
客户端可以在请求中加入 Cache-Control: max-age=0 标头,使特定请求的缓存失效。您也可以从控制台或 API 刷新整个阶段缓存。请配置是否允许客户端使缓存失效——在生产环境中应限制此权限,以防止客户端故意绕过缓存。若要有选择地授予刷新权限,请附加资源策略,或使用 Lambda 授权器检查调用方是否具有刷新权限。
# Flush entire stage cache
aws apigateway flush-stage-cache \
--rest-api-id 'abc123' \
--stage-name 'prod'使用计划:每个客户端的速率限制
使用计划为一组 API 客户端定义节流限制和配额限制。请将 API 阶段与使用计划关联,然后将API 密钥与该计划关联。每个 API 密钥会独立执行计划限制。使用计划可以提供分级访问:免费计划为 100 RPM/每天 10,000 个请求,专业计划为 1,000 RPM/每天 100,000 个请求。这种模式适用于 API 商业化以及合作伙伴集成场景,因为不同客户端需要不同的速率限制。
# Create a usage plan
aws apigateway create-usage-plan \
--name 'ProTier' \
--throttle 'rateLimit=1000,burstLimit=2000' \
--quota 'limit=100000,period=DAY' \
--api-stages 'apiId=abc123,stage=prod'API 密钥与客户端识别
API 密钥是不透明的字符串令牌,客户端会将其加入 x-api-key 请求标头。API Gateway 会验证该密钥,并将请求与相应的使用计划关联。API 密钥不是安全机制——它们仅用于节流和配额目的的客户端识别。为确保安全,请始终将 API 密钥与适当的授权机制(IAM、Lambda 授权器或 Cognito)结合使用。未与使用计划关联的 API 密钥不会应用节流限制。
# Create an API key and associate with usage plan
aws apigateway create-api-key \
--name 'PartnerABC-Key' \
--enabled
aws apigateway create-usage-plan-key \
--usage-plan-id 'uvw321' \
--key-id 'xyz789' \
--key-type API_KEY使用计划中的配额限制
除了每秒节流速率之外,使用计划还支持配额限制:在一段时间内允许的最大请求数(DAY、WEEK 或 MONTH)。客户端用尽配额后,后续请求将返回 429,直到配额重置。配额限制适用于执行免费层级限制、防止 API 滥用,以及使 API 使用量与计费保持一致。配额计数器最终会达到一致状态,因此客户端在被阻止之前可能会略微超过配额。
用于节流和缓存的 CloudWatch 指标
请使用以下 CloudWatch 指标监控 API Gateway 的运行状况:
- Count:API 调用总数
- 4XXError:包括 429 节流响应在内的客户端错误
- 5XXError:后端错误
- Latency:端到端请求耗时
- IntegrationLatency:等待后端的时间
- CacheHitCount / CacheMissCount:缓存有效性
请针对 4XXError 峰值设置警报,以便在节流问题影响用户之前发现问题;同时针对 CacheMissCount 设置警报,以识别缓存配置问题。
何时启用缓存,何时进行节流
对于读取量大且响应很少变化的 API,请使用缓存,例如产品目录查询、参考数据和静态配置。对于特定于用户或变化非常频繁的数据,缓存可能适得其反。请始终使用节流,即使是内部 API 也不例外,以保护后端服务免于过载。请结合使用两者:缓存常用数据以减少后端负载,并采取严格的节流措施,防止任何单个客户端占用过多 API 资源。对于 SAA-C03 考试,请记住:缓存可以降低成本和延迟;节流可以确保可用性。
快速检查
请测试您对本课 AWS 解决方案架构师(SAA-C03)概念的理解。
课程回顾
在本课中,您学习了以下内容:在账户、阶段和方法级别实施的节流,通过可配置的速率和突发限制以及令牌桶算法来保护后端;响应缓存,按可配置的 TTL 存储后端响应,以减少读取量大端点的后端负载和延迟;以及结合 API 密钥的使用计划,执行每个客户端的节流速率和配额,从而为合作伙伴 API 和公共 API 提供分级访问控制。接下来,我们将学习用于容器化工作负载的 ECS 集群、任务定义和服务。
常见问题解答
「节流、缓存与使用计划」课时是免费的吗?
是的 — 「节流、缓存与使用计划」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「节流、缓存与使用计划」这节课中我会学到什么?
通过突发和稳态节流限制保护后端,启用响应缓存,并为合作伙伴创建带 API 密钥的使用计划。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「节流、缓存与使用计划」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。