项目描述
翻译对于算法,我们希望有一个令牌桶变体来平滑短暂的突发和一个滑动窗口计数器来在窗口内进行精确会计,可以在策略级别选择。计数器应存储在Redis中,以便多个API节点看到相同的消费情况而没有偏差,并且检查本身只增加一两毫秒的延迟。除了简单的限制,我们还需要完整的配额层次,具有每月或每日限制、每个密钥的消费跟踪以及一种将剩余配额返回给调用者的方法。当超过限制时,服务必须以状态429响应,返回标准限制头,包括限制、剩余和重置,并添加一个Retry-After提示,以便表现良好的客户端自行限流。
交付包括一个小型管理面板或配置格式,用于描述速率计划和密钥绑定,一个用于计费和分析的度量存储,以及清晰的文档。请解释您如何在Redis中规划原子操作,如何在高并发下避免竞争条件,以及您将如何在上线前对限流器进行负载测试。
— 每个密钥的策略,使用令牌桶和滑动窗口算法
— 具有每日和每月限制的配额层次
— 在Redis上共享计数器,增加的延迟最小
— 用于计费的消费跟踪和报告
— 正确的429响应,包含限制、剩余、重置和Retry-After头
— 用于速率计划和密钥绑定的管理配置、文档和负载测试