【问题标题】:how to divide continous requests among 2 servers with x% requests being sent to one & 100-x to other如何在 2 台服务器之间划分连续请求,其中 x% 的请求被发送到一个服务器,100-x 的请求被发送到另一个服务器
【发布时间】: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


【解决方案1】:

您正在寻找的是Weighted Round Robin 或动态循环,它们都已发布了众所周知的实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多