gpt4 book ai didi

java - 在多台机器上实现单一速率限制的好方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 06:49:58 26 4
gpt4 key购买 nike

我有一个带有负载均衡器的 Web 服务,可以将请求映射到多台机器。这些请求中的每一个最终都会向外部 API 发送一个 http 调用,因此我想对发送到外部 API 的请求数量进行速率限制。

我目前的设计:

  • 服务在内存中有一个队列,用于存储所有接收到的请求
  • 我限制我们从队列中获取请求并处理它的频率。

这在我使用多台机器时不起作用,因为每台机器都有自己的队列和速率限制器。例如:当我将我的速率限制器设置为 10,000 个请求/天,并且我使用 10 台机器时,我最终将在满负载情况下处理 100,000 个请求/天,因为每台机器每天处理 10,000 个请求。我想设置速率限制,以便每天仅处理 10,000 个请求,同时仍然对这 10,000 个请求进行负载平衡。

我正在使用 Java 和 MYSQL。

最佳答案

  1. 使用 memcached 或 redis 保持每个客户端的 api 请求计数器。检查每个请求是否超出速率限制。
  2. 如果您认为每次请求都检查太昂贵,您可以尝试使用 storm 来处理请求日志,并异步计算请求计数器。

关于java - 在多台机器上实现单一速率限制的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22699930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com