根据我们的经验,我们认为轮询可能不是一种有效的负载平衡算法,因为它不能在所有节点之间平均分配流量。 您可能想知道这怎么可能? 是的,有可能

循环算法如何工作?

循环算法按接收请求的顺序在节点之间发送请求。 这是一个简单的例子。 假设您有3个节点:节点A,节点B和节点C。

•第一个请求发送到节点A。

•第二个请求发送到节点B。

•第三个请求发送到节点C。

负载平衡器继续根据此顺序将请求发送到服务器。 听起来,流量将在节点之间平均分配。 但这不是事实。

循环算法有什么问题?

负载平衡:轮循可能不是正确的选择
图:具有2个节点的负载均衡器(循环)

让我们举一个简单的例子。 假设您使用负载均衡器启动了Web应用程序,它后面有两个节点(node-A,node-B)。 负载平衡器配置为使用循环算法运行,并且启用了粘性会话负载平衡。 假设当前有200个用户在使用您的应用程序。 由于在负载均衡器中启用了循环算法,因此每个节点将获得100个用户请求。

负载平衡:轮循可能不是正确的选择
图:添加了新节点。 新增节点的轮询算法流量减少

几分钟后,您将添加节点C。 假设现在有另外100个用户开始使用该应用程序。 由于是循环算法,负载均衡器会将新用户的请求平均分配给所有3个节点(即,每个节点33个用户的请求)。 但是请记住,节点A和节点B已经分别处理100个用户请求。 因此,现在节点A和节点B最终将分别处理133个用户请求(即100个原始用户请求+ 33个新用户请求),而节点C将仅处理33个(新)用户请求。 现在,您是否明白为什么循环调度不会平均分配流量? 在循环算法中,池中总是较旧的节点最终将处理更多的请求。 新添加的节点最终将处理更少的流量。 负载永远不会平均分配。 为了维护,打补丁和安装,您必须不断地从负载均衡器池中添加和删除节点。 如果您安装了自动缩放功能,问题将进一步恶化。 因为在自动缩放中,节点更加动态。 它们被添加和删除的频率更高。

使用什么算法?

负载平衡:轮循可能不是正确的选择
图:添加了新节点。 流量在最少连接中平均分配

负载平衡算法有多种:加权轮循,随机,源IP,URL,最少连接,最少流量,最少延迟。 鉴于轮询机制的缺点,您可以考虑尝试其他选择。 您可能会考虑的一种选择是:“ 最少连接 ”算法。 根据此算法,连接数最少的节点将获得下一个请求。 因此,按照我们前面的示例,当新的100个用户开始使用该应用程序时,所有新用户的请求都将发送到节点C。 因此,负载将在所有节点之间平均分配。

翻译自: https://www.javacodegeeks.com/2019/11/load-balancing-round-robin-may-not-be-the-right-choice.html

相关文章:

  • 2022-12-23
  • 2021-07-19
  • 2022-02-13
  • 2021-09-06
  • 2021-11-19
  • 2022-02-10
  • 2021-07-14
猜你喜欢
  • 2022-12-23
  • 2021-07-09
  • 2021-12-07
  • 2022-12-23
  • 2022-01-07
  • 2021-05-31
  • 2021-12-03
相关资源
相似解决方案