`
wb284551926
  • 浏览: 556765 次
文章分类
社区版块
存档分类
最新评论

负载均衡的基本(常用)算法(转载)

 
阅读更多
 平衡算法设计的好坏直接决定了集群在负载均衡上的表现,设计不好的算法,会导致集群的负载失衡。一般的平衡算法主要任务是决定如何选择下一个集群节点,然后将新的服务请求转发给它。有些简单平衡方法可以独立使用,有些必须和其它简单或高级方法组合使用。而一个好的负载均衡算法也并不是万能的,它一般只在某些特殊的应用环境下才能发挥最大效用。因此在考察负载均衡算法的同时,也要注意算法本身的适用面,并在采取集群部署的时候根据集群自身的特点进行综合考虑,把不同的算法和技术结合起来使用。

3.1 轮转法:

    轮转算法是所有调度算法中最简单也最容易实现的一种方法。在一个任务队列里,队列的每个成员(节点)都具有相同的地位,轮转法简单的在这组成员中顺序轮转选择。在负载平衡环境中,均衡器将新的请求轮流发给节点队列中的下一节点,如此连续、周而复始,每个集群的节点都在相等的地位下被轮流选择。这个算法在DNS域名轮询中被广泛使用。

    轮转法的活动是可预知的,每个节点被选择的机会是1/N,因此很容易计算出节点的负载分布。轮转法典型的适用于集群中所有节点的处理能力和性能均相同的情况,在实际应用中,一般将它与其他简单方法联合使用时比较有效。

3.2 散列法

    散列法也叫哈希法(HASH),通过单射不可逆的HASH函数,按照某种规则将网络请求发往集群节点。哈希法在其他几类平衡算法不是很有效时会显示出特别的威力。例如,在前面提到的UDP会话的情况下,由于轮转法和其他几类基于连接信息的算法,无法识别出会话的起止标记,会引起应用混乱。

    而采取基于数据包源地址的哈希映射可以在一定程度上解决这个问题:将具有相同源地址的数据包发给同一服务器节点,这使得基于高层会话的事务可以以适当的方式运行。相对称的是,基于目的地址的哈希调度算法可以用在Web Cache集群中,指向同一个目标站点的访问请求都被负载平衡器发送到同一个Cache服务节点上,以避免页面缺失而带来的更新Cache问题。

3.3 最少连接法

    在最少连接法中,平衡器纪录目前所有活跃连接,把下一个新的请求发给当前含有最少连接数的节点。这种算法针对TCP连接进行,但由于不同应用对系统资源的消耗可能差异很大,而连接数无法反映出真实的应用负载,因此在使用重型Web服务器作为集群节点服务时(例如Apache服务器),该算法在平衡负载的效果上要打个折扣。为了减少这个不利的影响,可以对每个节点设置最大的连接数上限(通过阈值设定体现)。

3.4 最低缺失法

    在最低缺失法中,平衡器长期纪录到各节点的请求情况,把下个请求发给历史上处理请求最少的节点。与最少连接法不同的是,最低缺失记录过去的连接数而不是当前的连接数。

3.5 最快响应法

    平衡器记录自身到每一个集群节点的网络响应时间,并将下一个到达的连接请求分配给响应时间最短的节点,这种方法要求使用ICMP包或基于UDP包的专用技术来主动探测各节点。

    在大多数基于LAN的集群中,最快响应算法工作的并不是很好,因为LAN中的ICMP包基本上都在10ms内完成回应,体现不出节点之间的差异;如果在 WAN上进行平衡的话,响应时间对于用户就近选择服务器而言还是具有现实意义的;而且集群的拓扑越分散这种方法越能体现出效果来。这种方法是高级平衡基于拓扑结构重定向用到的主要方法。

3.6 加权法

    加权方法只能与其他方法合用,是它们的一个很好的补充。加权算法根据节点的优先级或当前的负载状况(即权值)来构成负载平衡的多优先级队列,队列中的每个等待处理的连接都具有相同处理等级,这样在同一个队列里可以按照前面的轮转法或者最少连接法进行均衡,而队列之间按照优先级的先后顺序进行均衡处理。在这里权值是基于各节点能力的一个估计值。

 

原帖地址:http://blog.chinaunix.net/uid-20437338-id-1946450.html

分享到:
评论

相关推荐

    几种负载均衡算法

    轮询是最基本的负载均衡策略,它按照顺序将请求依次分配给各个服务器。这种方式简单易行,但在服务器硬件配置不一致的情况下可能导致负载不均。 #### 比率(Ratio) 比率算法允许根据服务器的能力为其分配不同的...

    hbase负载均衡算法分析

    HBase 负载均衡算法分析 HBase 作为一个非关系型列式数据库,对其负载均衡算法进行深入分析是非常重要的。本文将详细介绍 HBase 负载均衡算法的实现原理和工作流程。 Region 初始分配策略 在 HBase 中,Region 的...

    MMOG中的一种负载均衡算法

    当前,游戏开发者通常采取三种基本的负载均衡策略: 1. **静态玩家分配**:这种策略简单易行,通过将玩家均匀分配到各服务器上来实现负载均衡。然而,随着游戏世界的动态变化,如玩家集中活动导致某服务器负载突然...

    负载均衡原理及算法解析

    最小连接数算法是另一种常用的负载均衡算法。它根据每台服务器当前正在处理的连接数来进行请求分配。具体而言,新的请求将被分配给当前连接数最少的服务器,以此来均衡各服务器间的负载。这种方法的一个优势是它能够...

    任务分配负载均衡算法

    结合上述文章内容和负载均衡算法的一般知识,我们可以认识到,高效的负载均衡算法能够大幅提升系统性能,并且实现节能效果。对于5G移动网络这样的系统,尤其是在采用虚拟基站架构的情况下,如何设计出既能够满足延迟...

    F5负载均衡算法标准详解

    【F5负载均衡算法标准详解】 在IT领域,负载均衡是一种关键的技术,它确保网络流量在多台服务器间均匀分布,提高系统可用性和性能。F5作为业界领先的应用交付控制器(ADC)提供商,其负载均衡解决方案以其高效和...

    异构分布式系统的负载均衡调度算法.pdf

    传统的负载均衡算法,如轮询(RoundRobin)算法,虽然简单快速,但由于没有考虑到节点间不同的处理能力和负载情况,因此很容易导致负载不均衡。遗传算法(Genetic Algorithm,GA)是一种启发式搜索算法,它模拟了...

    Web集群系统的负载均衡算法

    常用的动态负载均衡算法包括加权最小连接算法和最快连接算法等。这类算法更加灵活,可以根据实际情况做出快速反应,但同时也面临着一定的挑战,比如短时间内大量请求集中到某一台服务器上可能导致的负载不均等问题。...

    F5负载均衡算法详解

    F5负载均衡算法是应用交换技术中四个主要技术之一,它相对其它三个技术来说,更为重要些,在应用交换领域里,主要的技术是负载均衡的算法,完整的、完善的、可控的、灵活的负载均衡算法无疑决定着负载均衡厂商在应用...

    基于CPU和内存利用率的负载均衡算法的研究.pdf

    "基于CPU和内存利用率的负载均衡算法的研究" 基于CPU和内存利用率的负载均衡算法的研究.pdf文章旨在解决当前采用的最少连接数算法无法解决因不同业务请求消耗资源差异大而导致的平均响应时间长的问题。作者提出了CM...

    基于排队论综合指标评估的动态负载均衡算法.pdf

    "基于排队论综合指标评估的动态负载均衡算法" 这个动态负载均衡算法基于排队论综合指标评估,旨在解决互联网通信、计算机集群和云环境中的负载失衡问题。该算法的提出是为了解决传统负载均衡策略的缺陷,即以 CPU、...

    基于lua的nginx自定义负载均衡

    基于lua的nginx自定义负载均衡基于lua的nginx自定义负载均衡

    高可用:负载均衡的常见算法有哪些?

    本文将深入探讨负载均衡的常见算法,帮助你理解和应用这些知识,以提升系统设计的水平。 ### 简介 负载均衡是一种策略,用于在多个计算资源之间分配工作负载,这些资源可以是服务器、网络设备或应用程序实例。通过...

    论文研究-基于负载均衡的Mesh路由算法研究与实现 .pdf

    对于Mesh网络,一个优秀的路由算法需要能够处理网络中的负载均衡问题,即在节点间合理分配流量,避免出现网络拥塞,从而提高网络资源的使用效率。 负载均衡在Mesh网络中至关重要,因为网络流量往往不是均匀分布的。...

    面向云服务平台的弹性负载均衡算法.pdf

    具体来说,这种弹性负载均衡算法能够在云计算环境中动态地调整资源分配,适应不同时间点和工作负载的变化,从而实现资源的最优化使用。通过这种方式,算法可以保证在资源需求突然增加时,能及时增加相应的资源分配;...

    服务器负载均衡的基本功能和实现原理

    本文将深入探讨服务器负载均衡的基本功能以及其实现原理。 **基本功能** 1. **流量分发**:负载均衡器接收来自客户端的请求,然后根据预设策略将这些请求转发到不同的服务器,避免单点过载。 2. **健康检查**:...

Global site tag (gtag.js) - Google Analytics