【发布时间】:2012-10-23 22:01:36
【问题描述】:
我有一个请求队列(其中不断有请求)。我必须一个一个地处理这些请求并将这些请求发送到两台服务器,以便 x% 的请求发送到第一台服务器,而 100-x% 的请求发送到第二台服务器。我需要实现 java 函数,它告诉应该将特定请求发送到哪个服务器。
我尝试生成一个介于 1-100 之间的随机数,并将 1 到 x 之间的请求发送到服务器 1,将其他请求发送到服务器 2。但这不能正常工作。 有没有更好的方法来处理这个问题?
【问题讨论】:
-
是的,买一个硬件负载均衡器。我不会在代码中做这样的事情:hardwareloadbalancer.com
-
我只需要使用代码即可。
-
然后向我们展示您到目前为止所获得的信息,或者更准确地解释问题。您的解决方案听起来可行。
-
上述解决方案的问题是:-假设我想将 90% 的调用发送到机器 1 和 10% 到机器 2。如果我考虑前 100 个请求,我得到的随机数总是低于 90 ,所以我将所有请求发送到机器1。所以9:1的比例没有保持。
-
重定向请求是否足够?粘性会话呢?你想让用户连接到同一台服务器吗?如果可能的话,我会选择开箱即用的解决方案。这里有大量信息:serverfault.com/questions/174097/…
标签: java probability