标准答案

  1. 单机内存限流延迟低、实现简单,适合单实例或作为本地保护,但多实例下计数不全,扩缩容会改变实际配额。
  2. 网关适合按 IP、API Key、租户、路径和全局入口做统一粗粒度限流,能在流量进入业务前保护集群。
  3. 缓存集群适合跨实例共享配额和窗口计数,但会增加网络依赖与热点 Key 风险,故障时要明确是降级放行、拒绝还是使用本地兜底。
  4. 业务服务最了解用户状态、订单类型、风控等级和资源成本,适合做精细业务配额;数据库、消息和下游也应各自有并发或容量上限。

题目解析

限流不是只为了防攻击。它还用于公平分配资源、保护慢下游、避免队列无限积压。一个请求可能经过多层限制,因此要避免每一层都长时间排队或重复重试。

策略需要配套返回语义、观测和客户端退避。没有区分可重试的 429 与业务拒绝,客户端很容易形成更大的重试风暴。

常见误区

  • 只在业务最深层限流,入口流量已经耗尽连接和线程。
  • 所有维度共享一个 Key,导致一个大客户或攻击 IP 影响全部用户。

作者信息