- 浏览: 990766 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
本文把所有的负载均衡算法进行了总结和归纳,并且有英文注释,这些都是帮助大家进行记忆的一些窍门。希望对这方面有所兴趣的朋友能得到帮助。
AD:
负载均衡算法多种多样,我们在学习的时候,首先是对它的这些方法进行一个概念上的认识。但是很多朋友总觉得记不住,所以,我们就在此为大家总结一下。可能内容有些重复,但是总结的方式有所不同,看一看哪一种适合您的记忆呢。
服务器负载均衡算法有很多(持续性的和非持续性的),包括轮循算法、最少连接算法、响应时间算法、散列算法、最少连接失误算法,链路带宽算法等等。 此外实际服务器(Real Server)可以被分配不同的加权值来调整被分配的流量。比如性能高的大型服务器可配置较大的加权值,而为性能较低的小型服务器设置较小的加权值。为了 避免服务器因过载而崩溃,可为实际服务器指定最大连接阈值来避免该服务器过载。任何服务器可被指定为另一台服务器的备份服务器或溢出服务器,从而进一步保 证了应用可用性。
非持续性算法(Non-Persistent):
一个客户端的不同的请求可能被分配到一个实际服务组中的不同的实服务器上进行处理。主要有轮循算法、最少连接算法、响应速度算法等。
-轮循算法(Round Robin):
说明:
每一次来自网络的请求轮流分配给内部中的每台服务器,从1至N然后重新开始。
举例:
此种负载均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况;
-最少连接算法(Least Connection):
说明:
客户端的每一次请求服务在服务器停留的时间都可能会有较大的差异,随着工作时间的加长,如果采用简单的轮循或随机负载均衡算法,每一台服务器上的连 接进程可能会产生极大的不同,这样的结果并不会达到真正的负载均衡。最少连接数均衡算法对内部中有负载的每一台服务器都有一个数据记录,记录的内容是当前 该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。
举例:此种负载均衡算法适合长时间处理的请求服务。
-响应速度算法(Response Time):
说明:
负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。
举例:
此种负载均衡算法能较好地反映服务器的当前运行状态,但最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。
持续性算法(Persistent):
从一个特定的客户端发出的请求都被分配到一个实服务组中的同一个实服务器上进行处理。主要包括:
A.基于IP的算法
-Persistent IP (pi):基于用户IP地址来选择服务器。
-Hash IP (hi) :基于用户IP地址的HASH值,来选择服务器
-Consistent Hash IP (chi):
B.基于报头/请求的算法
-Hash Header (hh):基于用户请求报中HTTP报头来选择服务器;
-Persistent Hostname (ph) :基于用户请求报中HTTP报头的Hostname的HASH值,来选择服务器;
-Persistent URL (pu):基于对URI Tag 和值的静态对应关系来选择服务器。
-SSL Session ID (sslsid):基于SSL会话ID来选择服务器。
C.基于Cookie的算法
-Persistent Cookie (pc) : 选择服务器基于用户请求包用Cookie Name / Value 的静态对应关系;
-Hash Cookie (hc) :选择服务器基于用户请求包用Cookie Name / Value 的Hash 值对应关系;
-Insert Cookie (ic) :选择服务器基于负载均衡器 向服务器响应包中插入Cookie;
-Re-write Cookie (rc):选择服务器基于负载均衡器向服务器响应包中重写Cookie值。
(必须为重写指定Cookie值的偏移量)
负载均衡的基本算法
平衡算法设计的好坏直接决定了集群在负载均衡上 的表现,设计不好的算法,会导致集群的负载失衡。一般的平衡算法主要任务是决定如何选择下一个集群节点,然后将新的服务请求转发给它。有些简单平衡方法可 以独立使用,有些必须和其它简单或高级方法组合使用。而一个好的负载均衡算法也并不是万能的,它一般只在某些特殊的应用环境下才能发挥最大效用。因此在考 察负载均衡算法的同时,也要注意算法本身的适用面,并在采取集群部署的时候根据集群自身的特点进行综合考虑,把不同的算法和技术结合起来使用。
1 轮转法:
轮转算法是所有调度算法中最简单也最容易实现的一种方法。在一个任务队列里,队列的每个成员(节点)都具有相同的地位,轮转法简单的在这组成员中顺 序轮转 选择。在负载平衡环境中,均衡器将新的请求轮流发给节点队列中的下一节点,如此连续、周而复始,每个集群的节点都在相等的地位下被轮流选择。这个算法在 DNS域名轮询中被广泛使用。
轮转法的活动是可预知的,每个节点被选择的机会是1/N,因此很容易计算出节点的负载分布。轮转法典型的适用于集群中所有节点的处理能力和性能均相同的情况,在实际应用中,一般将它与其他简单方法联合使用时比较有效。
2 散列法
散列法也叫哈希法(HASH),通过单射不可逆的HASH函数,按照某种规则将网络请求发往集群节点。哈希法在其他几类平衡算法不是很有效时会显示 出特别 的威力。例如,在前面提到的UDP会话的情况下,由于轮转法和其他几类基于连接信息的算法,无法识别出会话的起止标记,会引起应用混乱。
而采取基于数据包源地址的哈希映射可以在一定程度上解决这个问题:将具有相同源地址的数据包发给同一服务器节点,这使得基于高层会话的事务可以以适 当的方式运行。相对称的是,基于目的地址的哈希调度算法可以用在Web Cache集群中,指向同一个目标站点的访问请求都被负载平衡器发送到同一个Cache服务节点上,以避免页面缺失而带来的更新Cache问题。
3 最少连接法
在最少连接法中,平衡器纪录目前所有活跃连接,把下一个新的请求发给当前含有最少连接数的节点。这种算法针对TCP连接进行,但由于不同应用对系统 资源的消耗可能差异很大,而连接数无法反映出真实的应用负载,因此在使用重型Web服务器作为集群节点服务时(例如Apache服务器),该算法在平衡负 载的效果上要打个折扣。为了减少这个不利的影响,可以对每个节点设置最大的连接数上限(通过阈值设定体现)。
4 最低缺失法
在最低缺失法中,平衡器长期纪录到各节点的请求情况,把下个请求发给历史上处理请求最少的节点。与最少连接法不同的是,最低缺失记录过去的连接数而不是当前的连接数。
5 最快响应法
平衡器记录自身到每一个集群节点的网络响应时间,并将下一个到达的连接请求分配给响应时间最短的节点,这种方法要求使用ICMP包或基于UDP 包的专用技术来主动探测各节点。
在大多数基于LAN的集群中,最快响应算法工作的并不是很好,因为LAN中的ICMP包基本上都在10ms内完成回应,体现不出节点之间的差异;如 果在 WAN上进行平衡的话,响应时间对于用户就近选择服务器而言还是具有现实意义的;而且集群的拓扑越分散这种方法越能体现出效果来。这种方法是高级平衡基于 拓扑结构重定向用到的主要方法。
6 加权法
加权方法只能与其他方法合用,是它们的一个很好的补充。加权算法根据节点的优先级或当前的负载状况(即权值)来构成负载平衡的多优先级队列,队列中 的每个 等待处理的连接都具有相同处理等级,这样在同一个队列里可以按照前面的轮转法或者最少连接法进行均衡,而队列之间按照优先级的先后顺序进行均衡处理。在这 里权值是基于各节点能力的一个估计值。
发表评论
-
调试jdk中的源码,查看jdk局部变量
2013-06-15 23:30 1021调试jdk中的源码,查看jdk局部变量 2012-04 ... -
Eclipse快捷键 10个最有用的快捷键<转>
2013-04-11 23:28 1022Eclipse中10个最有用的快捷键组合 一个Eclip ... -
Lucene 3.6 中文分词、分页查询、高亮显示等
2012-12-09 23:35 17851、准备工作 下载lucene 3.6.1 : htt ... -
Maven实战(九)——打包的技巧(转)
2012-10-12 00:41 906“打包“这个词听起 ... -
基于Maven的web工程如何配置嵌入式Jetty Server开发调试环境(转)
2012-10-12 00:28 8791、首先在web工程的POM文件里添加依赖jar包如下: ... -
轻轻松松学Solr(1)--概述及安装[转]
2012-09-18 14:59 958概述 这段时间对企 ... -
分析Netty工作流程[转]
2012-09-04 19:02 855下面以Netty中Echo的例 ... -
让eclipse在ubuntu下面好看一点
2012-03-27 10:17 887<p> </p> <h1 cla ... -
zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)[转]
2012-01-12 17:59 1625安装和配置详解 本文 ... -
Jakarta-Common-BeanUtils使用笔记[转]
2012-01-10 14:13 1127Jakarta-Common-BeanUtils ... -
一个关于Java Thread wait(),notify()的实用例【转】
2012-01-07 16:05 994///// // ProducerConsume ... -
Java基础:Java中的 assert 关键字解析【转】
2012-01-06 19:50 985J2SE 1.4在语言上提供了 ... -
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发[转]
2012-01-06 15:02 1228六种异常处理的陋习 ... -
如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
2011-12-26 10:48 1547HP QC(Quantity Center) 是一款不错的测 ... -
JAVA读写文件,中文乱码 【转】
2011-12-19 23:43 2083最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。 ... -
Java 6 JVM参数选项大全(中文版)【转】
2011-12-19 19:51 933Java 6 JVM参数选项大全(中文版) 作者 ... -
使用assembly plugin实现自定义打包【转】
2011-12-13 01:58 934在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了 ... -
使用maven ant task实现非标准打包[转]
2011-12-13 01:56 1013maven很强大,但是总有些事情干起来不是得心应手,没有使用a ... -
Java日期转换SimpleDateFormat格式大全【转】
2011-12-08 20:22 127124小时制时间 显示: public clas ... -
使用Spring的表单标签库
2011-11-22 20:08 103913.9. 使用Spring的 ...
相关推荐
基于动态反馈的负载均衡算法基于动态反馈的负载均衡算法基于动态反馈的负载均衡算法基于动态反馈的负载均衡算法
负载均衡技术可以分为静态负载均衡和动态负载均衡两种。静态负载均衡是根据服务器的静态信息来分配任务的,而动态负载均衡是根据服务器的实时负载信息来分配任务的。 在Linux集群系统中,负载均衡算法的选择对系统...
"基于CPU和内存利用率的负载均衡算法的研究" 基于CPU和内存利用率的负载均衡算法的研究.pdf文章旨在解决当前采用的最少连接数算法无法解决因不同业务请求消耗资源差异大而导致的平均响应时间长的问题。作者提出了CM...
MMOG中的一种负载均衡算法 MMOG中的一种负载均衡算法
几种负载均衡算法
基于P2P的MMOG中动态负载均衡算法基于P2P的MMOG中动态负载均衡算法
在介绍Hadoop,HDFS的原理的基础上,分析了Hadoop的数据负载均衡算法.Hadoop负载均衡算法只是根据空间使用率对各个结点的负载进行均衡,这种均衡方法没有考虑结点的处理能力、带宽、文件访问频度等因素,因此,造成了基本...
详解hbase负载均衡算法分析, hbase是一个非关系型列式数据库。
应用交换技术的负载均衡算法 应用交换技术里主要包括四项关键的技术: 截获和检查流量 服务器监控健康检查 负载均衡算法 会话保持 截获和检查流量保证只有合适的数据包才能通过; 服务器监控和健康检查随时了解...
一种基于服务类型的web集群负载均衡算法一种基于服务类型的web集群负载均衡算法
F5负载均衡算法详解:静态负载均衡算法和动态负载均衡算法
面向异构水声传感网的分布式负载均衡算法.pdf,水声传感网中节点能量有限,大多采用多跳通信。为解决通信过程中的负载均衡问题,提出了一种基于质距优化机制的水声传感器网络多跳通信策略,设计自适应负载均衡算法,...
终端管理服务器负载均衡算法,周毅,李文璟,本文介绍了一种终端管理服务器负载均衡算法,并详细介绍了构架设计和算法设计。本文提出的算法提升了终端管理服务器的响应时间和
Web集群系统的负载均衡算法Web集群系统的负载均衡算法Web集群系统的负载均衡算法
面向云服务平台的弹性负载均衡算法.pdf
该文章能够提供一个任务分配的框架,基于该框架实现任务负载均衡,里面的算法思想较为适用。
其中介绍了负载均衡的原理及相关算法,能够帮助你快速理解负载均衡
基于排队论综合指标评估的动态负载均衡算法.pdf
基于拍卖策略的SDN多控制器负载均衡算法,袁宁,李莉,针对当前SDN多控制器负载均衡算法存在的调整策略单一以及交换机多次迁移问题,提出一种基于拍卖策略的SDN多控制器负载均衡算法(ASLB)
首先根据排队论理论给出了一个理想的负载均衡模型。...实验结果表明,相比于轮转法和加权轮转法这两种普遍采用的负载均衡算法,该算法可以提供更加稳定的请求响应时间,并在负载波动较大时明显提高集群的吞吐率。