- 浏览: 1011052 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 1048调试jdk中的源码,查看jdk局部变量 2012-04 ... -
Eclipse快捷键 10个最有用的快捷键<转>
2013-04-11 23:28 1070Eclipse中10个最有用的快捷键组合 一个Eclip ... -
Lucene 3.6 中文分词、分页查询、高亮显示等
2012-12-09 23:35 18101、准备工作 下载lucene 3.6.1 : htt ... -
Maven实战(九)——打包的技巧(转)
2012-10-12 00:41 932“打包“这个词听起 ... -
基于Maven的web工程如何配置嵌入式Jetty Server开发调试环境(转)
2012-10-12 00:28 9161、首先在web工程的POM文件里添加依赖jar包如下: ... -
轻轻松松学Solr(1)--概述及安装[转]
2012-09-18 14:59 990概述 这段时间对企 ... -
分析Netty工作流程[转]
2012-09-04 19:02 883下面以Netty中Echo的例 ... -
让eclipse在ubuntu下面好看一点
2012-03-27 10:17 914<p> </p> <h1 cla ... -
zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)[转]
2012-01-12 17:59 1647安装和配置详解 本文 ... -
Jakarta-Common-BeanUtils使用笔记[转]
2012-01-10 14:13 1153Jakarta-Common-BeanUtils ... -
一个关于Java Thread wait(),notify()的实用例【转】
2012-01-07 16:05 1019///// // ProducerConsume ... -
Java基础:Java中的 assert 关键字解析【转】
2012-01-06 19:50 1056J2SE 1.4在语言上提供了 ... -
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发[转]
2012-01-06 15:02 1259六种异常处理的陋习 ... -
如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
2011-12-26 10:48 1574HP QC(Quantity Center) 是一款不错的测 ... -
JAVA读写文件,中文乱码 【转】
2011-12-19 23:43 2115最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。 ... -
Java 6 JVM参数选项大全(中文版)【转】
2011-12-19 19:51 965Java 6 JVM参数选项大全(中文版) 作者 ... -
使用assembly plugin实现自定义打包【转】
2011-12-13 01:58 965在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了 ... -
使用maven ant task实现非标准打包[转]
2011-12-13 01:56 1045maven很强大,但是总有些事情干起来不是得心应手,没有使用a ... -
Java日期转换SimpleDateFormat格式大全【转】
2011-12-08 20:22 130924小时制时间 显示: public clas ... -
使用Spring的表单标签库
2011-11-22 20:08 106713.9. 使用Spring的 ...
相关推荐
### 多出口链路负载均衡技术 #### 一、概述 多出口链路负载均衡技术是一种网络技术,它能够...未来,随着技术的不断进步,还可以进一步优化负载均衡算法,引入更多智能化的因素,以更好地适应日益复杂的网络环境。
2. 在upstream中定义后端服务器,配置不同权重或使用特定负载均衡算法。 3. 配置server块,定义端口和反向代理规则,将请求转发到相应的后端服务器。 Nginx支持多种负载均衡算法,包括内置策略和扩展策略: 1. 轮询...
3. **灵活的负载均衡策略**:支持多种算法如轮询、最少连接数、哈希等,可根据实际需求选择最合适的策略。 4. **健康检查机制**:自动检测后端服务器状态,当某个服务器出现故障时,可自动剔除,避免向故障节点发送...
负载均衡技术是网络架构中的关键组成部分,用于分发网络流量,提高系统可用性和响应速度。F5 Networks 是全球领先的负载均衡解决方案提供商,F5-101 考试是评估个人对F5产品和解决方案理解的一个标准。下面是对F5-...
本文将重点探讨Nginx中的两种常见负载均衡算法:轮询(Round Robin,简称RR)和基于IP的哈希(ip_hash)。 #### 二、Nginx简介 Nginx是一款由俄罗斯工程师Igor Sysoev开发的开源Web服务器软件,以其高性能、稳定性...
- **灵活性**:支持多种负载均衡算法,可以根据实际需求灵活配置。 - **稳定性**:经过多年的实践验证,Nginx在高并发场景下表现稳定可靠。 - **成本效益**:开源免费,降低了使用成本。 #### 三、负载均衡服务器...
总结来说,基于负载矢量最小化的下行LTE网络中的负载均衡方法,通过科学的算法设计和仿真验证,为LTE网络中负载不均的问题提供了一种优化解决方案。它能够提高网络的容量和负载均衡度,同时在保证服务质量的前提下,...
- **轮询(Round Robin)**:最简单的负载均衡算法,将请求轮流分发给后端服务器。 - **权重(Weight)**:根据服务器性能的不同,为每个服务器分配不同的权重值,从而实现更合理的负载分担。 - **IP Hash**:通过...
它不仅提供了多种内置的负载均衡策略,还允许用户自定义负载均衡算法。Ribbon能够帮助开发者轻松地实现对集群中多个服务实例的智能访问。下面将详细介绍Ribbon的几种常用负载均衡策略。 #### Ribbon的负载均衡策略 ...
用户可以根据需求设置负载均衡算法、健康检查、会话持久化等特性。启动haproxy时,通常通过命令行指定配置文件路径,如`haproxy.exe -f haproxy.cfg`。 **总结** haproxy在Windows下的部署利用了Cygwin环境,使得...
多链路负载均衡涵盖了出站流量负载均衡和入站流量负载均衡,并详细描述了链路负载算法以及链路健康检查的方法。服务器负载均衡则详细介绍了NAT方式和DR方式下的L4服务器负载均衡,以及L7服务器负载均衡。同时,还...
- **轮询**:这是默认的负载均衡算法,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器出现故障,则能自动剔除该服务器。 - **Weight**:根据后端服务器的权重进行分配,权重高的服务器获得更多的...
总结来说,GTM通过综合运用各种算法和机制,实现了智能的全球流量管理和负载均衡,确保了服务的高可用性、性能和安全性,同时考虑了用户的地理位置和网络环境,优化了用户体验。这种技术在大型互联网服务提供商和...
HAProxy是用C语言编写的,如果你对C语言和网络编程有深入的理解,可以通过阅读源码来学习其内部机制,如连接处理、负载均衡算法等。 “工具”标签则提示我们,HAProxy作为一个工具,可以与其他系统和服务集成,例如...
HAProxy提供了多种负载均衡算法,如轮询、最少连接等,并支持健康检查等功能,能够有效提高服务的稳定性和响应速度。 #### 二、HAProxy与软件负载均衡技术 **1. 软件负载均衡概述** 软件负载均衡技术一般有两种...
例如,可以使用负载均衡算法根据服务器负载情况分配请求,或者在检测到上游服务器故障时自动切换到备份源。 总结来说,用Darwin开发RTSP级联服务器涉及对`Device.xml`和`streamingserver.xml`的配置,以及测试和...
为了验证提出的演化博弈模型任务调度算法的有效性,实验中将其与传统的FCFS(先来先服务)调度算法以及基于贪心策略的负载调度算法进行了对比。实验结果显示,演化博弈模型的算法具有更高的执行效率和更强的适应性,...
- 硬件资源共享:允许多个用户共享昂贵设备,如处理器、存储和输入输出设备,降低成本并均衡负载。 - 软件资源共享:用户可以远程访问数据库,避免重复开发和存储。 - 用户间信息交换:提供通信手段,如电子邮件...