分布式系统设计之负载均衡算法
概述 在漫衍式体系计划傍边,一样平常会对处事举办集群陈设,集群中的多个节点提供沟通的处事,以是可以将对该处事的哀求分发给集群的恣意一个节点来处理赏罚。为了将哀求公道分发给集群的节点举办处理赏罚,即既要担保集群的每个节点都可以或许分派到哀求,又可以或许实现不会给某个节点分派过多哀求,导致高出节点处理赏罚手段,以是必要基于必然的法则来举办哀求分发,这个法则也称为负载平衡算法。以下具体说明几种常见的负载平衡算法的事变道理。 1.轮询 轮询算法首要是将客户端发送到负载平衡器的哀求依次轮番地转发给处事集群的某个节点,而不必要思量每个集群节点当前的毗连数和事变负载以及该节点的呆板机能。该算法的甜头是实现简朴,每个集群节点均匀分管全部的哀求,弱点是当集群节点对应的呆板存在机能差别时,也许会呈现机能低的呆板节点处理赏罚哀求慢,而机能好的呆板节点则存在空闲的体系资源没有充实操作,以是一样平常用作集群全部节点的呆板机能靠近的环境。 2.随机 随机算法首要是随机选取集群中的某个节点来处理赏罚该哀求,由概率论的常识可知,跟着哀求量的变大,随机算法会逐渐演变为轮询算法,即集群各个节点会处理赏罚差不大都量的哀求。以是优弱点也是与轮询算法相同。 3.加权轮询与加权随机 加权算法首要是按照集群的节点对应呆板的机能的差别,给每个节点配置一个权重值,个中机能好的呆板节点配置一个较大的权重值,而机能差的呆板节点则配置一个较小的权重值。然后可以继承基于轮询可能随机的算法来选取一个节点来处理赏罚哀求,只是权重大的节点可以或许被更多的选中。实现道理相同于在一个数组中选择一个元素,而权重值就是对应呆板节点在数组中一再呈现的次数,如两个节点{ a,b },个中a节点的权重值为3,b节点的权重值为1,则数组的构成为:[a, a, a, b],以是不管是轮询照旧随机选取都是a选择的次数更多。 4. 哈希与同等性哈希 哈希算法首要将对哀求的IP地点可能URL计较一个哈希值,然后与集群节点的数目举办取模来抉择将哀求分发给哪个集群节点。这种哈希算法实现简朴而且在集群节点数目稳固的环境下,可以或许将沟通IP地点的哀求分发给沟通的呆板处理赏罚。可是假如集群节点产生变革,则会对集群的全部节点举办影响,如也许导致某个呆板机能较低的节点溘然吸取到大量哀求,从而影响集群的整体不变性。 同等性哈希算法首要是基于同等性哈希函数来实现,同等性哈希函数会将给定的参数映射到由2的32次方个点构成的环形槽的某个槽点上。 在行使同等性哈希函数来举办负载平衡时,起首将集群的多个节点哈希到该环形槽的对应的某个槽点上,然后当负载平衡器吸取到哀求时,行使该哀求的IP地点可能URL来作为同等性哈希函数的参数,天生该哀求对应环形槽的某个槽点,最后从顺时针偏向找到第一个位于该环形槽的集群节点,则将该哀求转发给这个集群节点处理赏罚。 由同等性哈希算法的实现道理可知,假如集群节点的个数稳固,则沟通IP地点可能沟通URL的哀求城市转发到沟通的集群节点来处理赏罚;假如集群节点数目产生变革,则只会影响该增进可能删除的节点按顺时针偏向的后一个节点,以是可以或许很利便的实现集群的拓容和缩容。 5.起码毗连数 起码毗连数负载平衡算法是一种智能、动态的负载平衡算法,首要是按照集群的每个节点的当前毗连数来抉择将哀求转发给哪个节点,即每次都将哀求转发给当前存在起码并发毗连的节点。 这种负载平衡算法的甜头是可以按照集群节点的负载环境来举办哀求的动态分发,即呆板机能好,处理赏罚哀求快,积存哀求少的节点分派更多的哀求,反之则分派更少的哀求,从而实现集群的整体不变性和将哀求公道分发到每一个节点,停止某个节点由于处理赏罚高出自身所能遭受的哀求量而导致宕机可能相应过慢。 6.最快相应时刻 最快相应时刻负载平衡算法也是一种智能、动态的负载平衡算法,与起码毗连数相同,也是按照集群节点的负载环境来将哀求公道分发到各个节点,实现集群的整体不变性和呆板资源的一再操作。与起码毗连数差异的是,最快相应时刻是基于哀求与相应的时刻耽误来权衡呆板的负载环境的,即将哀求分发给当前处理赏罚哀求最快,负载平衡器从该节点获取相应耽误最小的节点,而相应时刻慢的节点则分派更少的哀求。
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |