一次请求两次访问_更少的信息做出更好的决策:两次随机选择(Two Random Choices)的力量...

负载均衡算法,相信大家都不陌生,它几乎存在于任何一个大型的系统或服务中。在许多大型Web服务中,负载平衡器将多层无状态服务和有状态服务分开;可以使用DNS技巧或客户端中的负载平衡机制,使用专用硬件,专用软件负载平衡器来完成负载平衡。在大型系统中,每一层的资源和约束条件都可能相差很大。有些层是无状态的,可以轻松地水平扩展到许多机器;有些则由于需要访问状态或某些其他共享资源的争用,其他层可能会受到更多限制。

集中式负载平衡解决方案可以很好地在一组机器上分配负载。他们跟踪要发送给每台计算机的负载量(通常基于简单的度量,例如连接数)。由于负载均衡器是集中式的,因此通常无需担心其他来源发送的负载。他们可以完全控制负载的分配。

尽管有这个优点,专用的负载平衡器通常还是不理想的。它们增加了成本,延迟,复杂性,并可能引入单点故障。将负载平衡的任务交给每个上游客户端也是可能的,但是带来了公平平衡多个位置的负载的挑战。在具有大量客户端和相当齐次调用的大型系统中,纯随机系统(例如DNS循环)可以很好地工作。在较小的系统中,每个下游服务只能处理少量或并发请求的系统,以及请求是异构的系统,通常希望负载均衡比随机负载更好。

至少在可接受的情况下,可以通过在所有客户端上分配有关系统负载的信息来实现完美的分布式负载平衡。在不同源之间不断共享确切的负载信息的开销可能会很高,因此很容易使每个源都在缓存的副本上工作。可以定期从下游或其他客户端刷新此数据。

事实证明,这不是一个好主意。

Mitzenmacher等人在《两个随机选择的力量:技术和结果概览》中。等 调查一些与此问题非常相关的研究。整个调查报告都不错,但是最有趣的结果之一是延迟数据(如上述缓存的负载结果)对负载平衡的影响。回想起来,结果是合乎逻辑的,但可能不符合大多数工程师的最初期望。

使用过时的数据进行负载平衡会导致产生“群居”行为,在这种行为中,请求将批量地发送到以前安静的主机的时间要比使该主机确实非常繁忙所需的时间长得多。下一次刷新缓存的负载数据时,服务器将使负载列表处于较高位置,并且将再次变得安静。然后又忙了,下一个请求看到它很安静、繁忙、安静、繁忙、安静等等。

一种可能的解决方案是完全放弃负载平衡,而只是随机选择一个主机。根据负载系数,这可能是一个好方法。但是,在许多典型负载下,选择一个随机主机会浪费服务器上的资源,从而降低延迟并降低吞吐量,而服务器最终会宕机而安静。

Mitzenmacher调查的研究采取的方法是尝试两台主机,然后选择负载最小的主机。这可以直接完成(通过查询主机),但是在缓存的负载数据上也可以很好地工作。

为了说明其工作原理,我们对一个非常简单的系统进行了仿真。每秒钟就有一个请求到达具有10个服务器的系统。每隔8秒,最早的请求(如果有的话)从服务器上的队列中删除。负载平衡是通过每N秒更新一次服务器队列长度的缓存副本来完成的。考虑了四种方法:选择一个随机服务器、选择最佳服务器、两个随机选择中的最佳选择和三个随机选择中的最佳选择。

f626882747af4687395dbf07a259a8a3.png

如您所料,选择最佳方法在可获得完美无延迟信息的情况下效果最佳。在同一情况下,随机选择方法的效果很差,导致所有方法中最差的排队时间。随着数据年龄的增长,选择最佳方法会因放牧而变得越来越差,并很快超过随机方法成为最差方法。

三个随机选择中的最佳选择排在第二位,并且表现出色。它获得了第一名,但随着延迟的增加,它仅次于两个随机选择中的最佳选择。显然,k最佳行为将随着k接近服务器数量而接近最佳行为。一直到模拟结束,两个随机选择中的最佳选择始终是强有力的领导者。给定这些参数,它将在刷新间隔70附近开始失去随机方法。它是10到70范围内间隔的明显领导者,对于这种简单方法而言,这是令人印象深刻的性能。

两个随机选择中的最佳选择,因为它结合了两全其美的优点:它使用有关负载的真实信息来选择主机(与随机值不同),但是比其他两种方法更强烈地拒绝了“群居”行为。


两次随机选择策略出自论文 《The Power of Two Random Choices: A Survey of Techniques and Results》 ,主要思想是:

1,从可用节点列表中做两次随机选择操作,得到节点 A、B
2,比较 A、B 两个节点,选出负载最低(一般是正在处理的连接数/请求数最少)的节点作为被选中的节点

了解更强大的数学论证,还有一些更令人惊讶的地方,该算法非常有效。

可以参考下面的伪代码:

总结


两次随机选择,使用了更少的信息达到了更好的决策。目前它应用在业界的各种系统中,例如NGINX、Haproxy等。当然,该算法也可以应用在集群调度、资源调度之中,在成本和收益达到一个均衡。

参考:

The power of two random choices​brooker.co.za
4c49c59aa44c46f6d7386b648821f4ce.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值