你如何使用许多 Heroku dynos 来限制 REST API?
How do you throttle a REST API using many Heroku dynos?
我配置了我的 REST API 节流,每分钟最多接受 10 个请求。
它在本地环境中按预期工作。
但是,在 Heroku 上部署时,此限制是在动态基础上应用的。
由于到 select 测功机的路由是随机的,这意味着例如如果我有 2 个测功机,
在第 11 次和第 20 次请求之间可能会发生错误(实际上通常发生在 16 或 17 次请求左右)。
如何在 Heroku 上使用确定性速率进行干净的节流,当 dyno 配置更改时它不会改变?
您当前必须将节流数据存储到内存中。您需要将其存储在共享数据库中,例如 Redis。
如果您每次都读取和写入该数据库的值 to/from,它将在 dynos 之间共享,您将拥有更可靠的东西。
我配置了我的 REST API 节流,每分钟最多接受 10 个请求。 它在本地环境中按预期工作。
但是,在 Heroku 上部署时,此限制是在动态基础上应用的。 由于到 select 测功机的路由是随机的,这意味着例如如果我有 2 个测功机, 在第 11 次和第 20 次请求之间可能会发生错误(实际上通常发生在 16 或 17 次请求左右)。
如何在 Heroku 上使用确定性速率进行干净的节流,当 dyno 配置更改时它不会改变?
您当前必须将节流数据存储到内存中。您需要将其存储在共享数据库中,例如 Redis。 如果您每次都读取和写入该数据库的值 to/from,它将在 dynos 之间共享,您将拥有更可靠的东西。