【发布时间】:2013-02-08 16:23:18
【问题描述】:
假设我想要发送到远程主机的请求池非常大。与任何服务器一样,远程主机的容量有限。所有的消息最终都必须被传递,及时性是可取的,但并不重要。除了监视我发送的请求的响应时间和/或失败率之外,我无法知道远程主机的这个容量。
我需要开发一种算法,以在不使远程主机崩溃的情况下以最大化吞吐量的速率发送请求。
最好的输出变量似乎是请求之间的时间间隔,这样请求 N 在请求 N-1 之后 M 纳秒分派。
我应该如何解决确定最佳费率的问题?有没有我可以建立的论文?或者有人能想出一些神奇的算法吗?以前有人做过吗?
注意:令牌桶也不是我要寻找的答案。我已经在使用非常类似于令牌桶的东西,但我正在寻找一种方法来确定应将令牌添加到桶中的速率。
【问题讨论】:
-
这将取决于服务器在过载时会做什么。它会摔倒并死去,还是只是没有响应然后在一段时间(未知)后恢复?如果你太频繁地超过限制,服务器会切断你吗?
-
在这种情况下,这取决于。实际上,我正在为大约 9000 个单独的远程主机管理不同的池,我无法控制这些池。编辑:输入太早——有些会超时,有些会拒绝连接,有些会返回 HTTP 50x。我真的没有预见到除此之外的许多其他结果。
-
另外,我应该提一下,多次发送同一个请求不是问题。
标签: algorithm distributed