软件架构中,负载均衡有哪些调度算法?

软件架构中,负载均衡有哪些调度算法?,第1张

谢邀!
负载均衡调度算法也叫负载均衡方法有很多种,下面以使用比较广的nginx为例说说软件负载均衡的调度算法:
nginx默认的调度算法,按照时间顺序逐一分配后台服务器
在server后加weigth,weight值越高,后台服务器分配概率越大,下图是说ip为102的后台服务分配概率是ip为101后台服务的两倍
按照访问ip的hash分配,增加ip_hash关键字,同一ip访问相同的后台服务
按照访问url的hash分配,增加url_hash关键字,同一url访问相同的后台服务
按照最少连接数方式分配,增加least_conn关键字,哪个后台服务连接数少就分配哪个
按照最短响应时间分配,增加fair关键字,响应时间短的后台服务优先分配

默认实现:

ZoneAvoidanceRule(区域权衡策略):复合判断Server所在区域的性能和Server的可用性,轮询选择服务器。

其他规则:

BestAvailableRule(最低并发策略):会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务。逐个找服务,如果断路器打开,则忽略。

RoundRobinRule(轮询策略):以简单轮询选择一个服务器。按顺序循环选择一个server。

RandomRule(随机策略):随机选择一个服务器。

AvailabilityFilteringRule(可用过滤策略):会先过滤掉多次访问故障而处于断路器跳闸状态的服务和过滤并发的连接数量超过阀值得服务,然后对剩余的服务列表安装轮询策略进行访问。

WeightedResponseTimeRule(响应时间加权策略):据平均响应时间计算所有的服务的权重,响应时间越快服务权重越大,容易被选中的概率就越高。刚启动时,如果统计信息不中,则使用RoundRobinRule(轮询)策略,等统计的信息足够了会自动的切换到WeightedResponseTimeRule。响应时间长,权重低,被选择的概率低。反之,同样道理。此策略综合了各种因素(网络,磁盘,IO等),这些因素直接影响响应时间。

RetryRule(重试策略):先按照RoundRobinRule(轮询)的策略获取服务,如果获取的服务失败则在指定的时间会进行重试,进行获取可用的服务。如多次获取某个服务失败,就不会再次获取该服务。主要是在一个时间段内,如果选择一个服务不成功,就继续找可用的服务,直到超时。

参考链接: >

WEB服务器流量超负载问题解决方法

Web应用服务器集群系统,是由一群同时运行同一个web应用的服务器组成的集群系统,在外界看来,就像是一个服务器一样。为了均衡集群服务器的负载,达到优化系统性能的目的,集群服务器将众多的访问请求,分散到系统中的不同节点进行处理。从而实现了更高的有效性和稳定性,而这也正是基于Web的企业应用所必须具备的特性。

一、计算WEB服务器负载量的两种方法

web应用服务器集群系统,是由一群同时运行同一个web应用的服务器组成的集群系统,在外界看来,就像是一个服务器一样。为了均衡集群服务器的负载,达到优化系统性能的目的,集群服务器将众多的访问请求,分散到系统中的不同节点进行处理。从而实现了更高的有效性和稳定性,而这也正是基于Web的企业应用所必须具备的特性。

高可靠性可以看作为系统的一种冗余设定。对于一个特定的请求,如果所申请的服务器不能进行处理的话,那么其他的服务器能不能对之进行有效的处理呢?对于一个高效的系统,如果一个Web服务器失败的话,其他的服务器可以马上取代它的位置,对所申请的请求进行处理,而且这一过程对用户来说,要尽可能的透明,使用户察觉不到!

稳定性决定了应用程序能否支持不断增长的用户请求数量,它是应用程序自身的一种能力。稳定性是影响系统性能的众多因素的一种有效的测量手段,包括机群系统所能支持的同时访问系统的最大用户数目以及处理一个请求所需要的时间。

在现有众多的均衡服务器负载的方法中,广泛研究并使用的是以下两个方法:

DNS负载平衡的方法RR-DNS(Round-Robin Domain Name System)

负载均衡器

以下,我们将就这两种方法进行讨论。

二、DNS轮流排程的优势及缺点

域名服务器(Domain Name Server)中的数据文件将主机名字映射到其IP地址。当你在浏览器中键入一个URL时(例如:解释。基于所读出的这些信息,负载均衡器就可以重写报头并将请求发往集群中合适的节点上,该节点维护着相应客户端请求的会话信息。在>在服务器端进行负载均衡算法分配。

例如:Nginx,浏览器访问网站时,通过Nginx进行负载均衡。
step 1 浏览器发送请求,
step 2 NGINX 捕获到请求,通过其负载均衡算法,在已经注册的多个服务器之间选择一个进行相应;

即在客户端就进行负载均衡算法分配。

例如spring cloud中的ribbon。
客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;

1Nginx默认的算法是轮询算法:
即每两次请求,将下一次的请求分发给下一个服务器

2随机算法

3源地址哈希

4加权轮询


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10300496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存