IOSOR 知识库
从试点到生产的 API 限流:退避而不烧掉预付钱包
试点与生产限流、指数退避、幂等、沙箱与生产密钥、有界 webhook 重放窗口——重试不会掏空 prepaid。
429 不是把发送 API 砸到通过为止。Prepaid 上重试风暴是钱包事件:重复 OTP、堆叠告警、对不上的账本行。限流让产品、工程与财务共用一个天花板。从试点到生产不是「去掉上限」——是约定限流、尊重幂等的退避、分开的沙箱与生产密钥、不会二次借记的 webhook 重放窗口。对照 幂等、重试与资金安全。
IOSOR 是 white-label prepaid:鉴权调用、可对账借记、从不倾倒外品牌载荷的客户安全错误。目录 live / in setup 与你重试多狠无关——走廊仍 in setup 不会因为客户端循环而变成 Live。月用量接近 USD 1,000+ 时,重试预算与密钥切换进入商务复盘。同一本手册放 沙箱密钥切到生产 与 webhook 签名与重放窗口。
限流保护 prepaid,不是故障
限流约束每个窗口有多少被接受的意图打进钱包——不是负载均衡器做了多少 TCP 尝试。写明窗口(按密钥、账户、目的地类)、状态码与 Retry-After。把 429 当「再用力」的客户端在和财务赛跑。把限流拒绝与成功借记一起导出。目录 live 仍停在公布天花板;in setup 不是无限沙箱。
| 信号 | 工程 | 钱包 |
|---|---|---|
| 429 / Retry-After | 退避,遵守窗口 | 同一意图零额外借记 |
| 5xx / 超时 | 预算内用同一幂等键重试 | 若首次已落地则一笔借记 |
| 4xx 业务拒绝 | 不要盲目重试 | 无借记或具名拒绝行 |
退避且不二次借记:限流配幂等
没有幂等键的指数退避,会把抖动网络变成两条 OTP、两笔告警、两行对不上的账本。键按业务意图唯一,不是按 TCP 尝试,并在明确 TTL 内返回同一已接受结果。用户点「再发一次」是另一产品动作,走自己的限流,不得混进自动重试预算。低余额停止仍生效:重试不得打穿空钱包。把 429 与成功借记一起导出,而不是只看 HTTP 200 计数。
试点限流对比生产限流
试点密钥应更紧:低量、错误便宜、Retry-After 立刻可见。生产限流按你真正跑的走廊约定,提高天花板是带负责人的账户变更,不是客户端改超时。压测属于沙箱密钥;生产密钥做浸泡测试是烧掉 prepaid。走廊仍 in setup 时不要承诺生产 QPS。试点通过不等于生产去掉上限——是同一套幂等与拒绝语义,换成更高窗口。
密钥与 webhook 重放同一次切换
发送限流救不了二次处理 DLR 的 webhook 消费者。切换:冻结沙箱流量、签发生产密钥、把 webhook 指到生产消费者、校验签名、限定重放窗口,然后发一个真实意图。02:00 的重放回调应是空操作,不是第二笔借记。密钥分开;永远不要贴进工单。
危险信号
- 没有幂等键却「重试到 200」
- 把 429 当软 200
- 压测用生产密钥,或生产里用沙箱 webhook URL
- 重放窗口按周计,或「试点」接受未签名回调
- 用户重发混进自动重试预算
- 面向客户的错误倾倒原始上游代码
开始使用 IOSOR
写明限额窗口——按密钥、账户或目的地类别——以及你会遵守的 Retry-After。强制一次 429,退避,再用同一把 Idempotency-Key 重试同一意图。ledger 只能有一笔 debit。抬高上限之前,先把沙箱密钥换成生产密钥。
IOSOR 要点
要做:把 429 当成带 Retry-After 的暂停,不是软成功。每次退避都带上原来的键,让预付只看见一个已接受意图。
不要:用压测密钥去抬生产限额,或不带键一直打到 200,把钱包打成额外用量。
这篇指南有帮助吗?
相关指南
- 在本地集成测试中模拟 DLR 延迟与错误
学习如何在本地模拟异步交付回执、处理 DLR 延迟,并在推广 CPaaS 集成之前测试各种边缘情况。
- 平衡负载批处理与单请求 API 吞吐量
优化高容量通知分发的 API 并发策略,同时在您的白标 CPaaS 控制台中保持合规的速率限制。
- 多租户 API 密钥作用域与平台安全隔离
通过将 API 令牌进行作用域隔离,保护白标 CPaaS 子账户,防止跨账户消息泄漏并执行财务限额。