供应商速率限制是你从未编写过的容量计划
· 阅读需 10 分钟
当你的应用程序第一次从模型供应商那里收到 429 错误时,发生了一些重要的事情,但几乎没人注意到。并不是错误本身,而是接下来执行的那行代码。也许你的 HTTP 客户端会以指数退避进行重试。也许它会降级到更小的模型。也许它会将请求排队,或者直接丢弃,又或者显示一个永远无法解决的加载动画。无论它做什么,这种行为现在就是你的容量策略。它决定了当供不应求时,哪些用户能获得服务,哪些用户的体验会降级。
而且,几乎可以肯定你并没有亲自制定过这个策略。它是由编写 SDK 封装的人、重试装饰器,或者是某人从教程中复制的三行 try/except 代码决定的。在负载下,你的系统中最重要的决策——当无法兼顾所有任务时该怎么办——正由一段没人审视过的代码作为容量决策来执行。
这篇文章的观点是,你应该把这段代码视为它的真实面貌:一个负载削减策略和一个容量计划,而不是一个错误处理器。429 并不是问题所在。问题在于你已经将系统在资源竞争下的行为设计,外包给了库的默认设置。
