赞
踩
在计算机硬件价格下降、计算机网络拓扑发展的情况下,分布式计算机系统给用户提供了一个丰富的资源集合。人们在研究分布式系统时,就注意到了这样一个问题:在一个由网络连接起来的多计算机环境中,在某一时刻,一些计算机的负载比较重,而另外一些计算机的负载却比较轻。平衡各计算机之间的负载是任务分配与调度的一个主要目标,它能够提高整个系统的性能。 为了改善系统的性能,通过在多台计算机之间合理地分配负载,使各台计算机的负载基本均衡,这种计算能力共享的形式,通常被称为负载平衡或负载共享。一般来说,"负载平衡"要达到的目标是使各台计算机之间的负载基本均衡,而"负载共享"意味着只是简单的负载的重新分配。 负载平衡包括两种,一种是静态负载平衡,一种是动态负载平衡。只是利用系统负载的平均信息,而忽视系统当前的负载状况的方法被称为静态负载平衡。根据系统当前的负载状况来调整任务划分的方法被称为动态负载平衡。 导致负载不平衡主要是由于:
考察这三个原因,对第一种情况可在编译时估计各迭代的工作量,按照处理节点的处理能力分布迭代,这就是静态负载平衡的方法。对第二、三种情况来说,必须采用动态负载平衡的手段,在运行过程中根据各个处理节点完成任务的情况,动态地迁移任务,实现动态负载平衡。进行动态负载平衡需要考察处理节点的处理能力,它的基本依据是根据处理节点先前的处理速度预见未来的处理速度。 一个负载平衡算法都包含以下三个组成部分:
负载平衡的上述三个部分之间是以不同的方式相互作用的。放置策略利用信息策略提供的负载信息,仅当任务被传送策略判断为适于传送之后才行动。总之,负载平衡的目标是:提供最短的平均任务响应时间;能适于变化的负载;是可靠的负载平衡机制。
人们用来描述负载信息采用的参数有:
为了简单起见,在选用传送策略时,多选用阀值策略。例如,Eager等人的方法是:在判断是否要在本地处理一个任务时,无需交换计算机之间的状态信息,一旦服务队列或等待服务队列的长度大于阀值时,就传送这个任务,而且传送的是刚刚接收的任务。而进程迁移能够迁移正在执行的任务,是对这种只能传送刚刚接收的任务的一种改进。 Zhou在模拟研究七个负载平衡算法时,其传送策略都采用阀值策略。它的阀值策略基于两个阀值∶计算机的负载阀值Load和任务执行时间阀值TCPU。如果计算机的负载超过Load并且任务的执行时间超过TCPU时,就把此任务传送到其它计算机执行。
经过总结,共有以下四种放置策略。
Zhou的论文中,比较了(2)和(3)三种策略,结论是:以简单(计算不昂贵)的方式,利用少量状态信息,第(2)中方法往往获得比第(3)种方法更好的效果。第(3)中方法比较复杂,它必须用性能的改善来补偿额外花费,所以取得的效果会稍差一些[2]。 目前,常见的算法有:中心任务调度策略、梯度模型策略、发送者启动策略和接收者启动策略。
随着网络硬件设备的飞速进步,网络带宽的瓶颈效应日趋减弱,WEB服务器的性能问题逐渐显现出来。单一的服务器系统处理客户请求的能力有限,如何处理快速增长的客户请求,是当前研究人员关注的重要问题。从目前的研究方向看,服务器方向的研究可以归结为两个方面:
就某一商业Web站点而言,人们通常会认为,日访问人数越多,说明销售的潜力越大,潜在的购买者越多。但统计结果向我们显示的却是另一种结果。随着日访问人数的增加,销售量上升到一定程度后,反而下降。图1给出的是某汽车销售网站网上销售的模拟计算结果。注意,当网站日查询业务量为正常的120%或更高时,访问的服务时间明显增长,使得日收益反而比正常情况下降很多。
究其原因,我们不难发现,服务器的性能是导致这种现象的最根本的原因。当服务器负载接近边界时,负载的一个小小的增长都有可能使服务器陷入象死锁那样的一种境地。由此可以得出,如何优化Web服务器性能将是今后一段时间研究的一个热点。许多服务器制造商都在努力推出性能更加优良的服务器,但是单一服务器结构有一个致命的缺陷,那就是由于服务器的处理能力有限,有可能会出现死锁的情况。死锁的产生是由于新请求的到达率大于系统服务率,系统没有能力在短期内处理所有的请求,导致等待队列溢出,系统稳定状态转为不稳定状态,最后崩溃。集群服务器具有良好的可扩展性,可以随着负载的增大动态地向集群中增加服务器,从而就避免了由于处理能力不足而导致的系统崩溃。 在集群系统中,粒度指的是负载调度和迁移的单位。集群系统中的粗粒度指的是调度和迁移的单位是服务,而细粒度指的是进程。目前,关于集群式服务器的研究主要集中在体系结构和负载平衡策略的研究上,其中负载平衡策略的研究又是体系结构研究的基础。早期的集群式服务器系统常采用Round-Robin DNS算法实现客户请求的分发。实际上是一种粗粒度的负载分配策略。 正常情况下,域名服务器将主机名映射为一个IP地址,为了改善负载平衡状况,早期的集群服务器系统采用RR-DNS(Round-Robin DNS)调度算法将一个域名映射为一组IP地址,允许客户端链接到服务器集群中的某一台服务器上,由此提供了服务器站点的伸缩性。一些可伸缩Web服务器(例如Eddie和NCSA的Scalable Web Server)采用RR-DNS实现负载平衡,一些高吞吐率的站点(Yahoo)也继续采用这种简单应用。图2为这类服务器结构的工作原理图。 RR-DNS在解析域名时,附加一个生存期(TTL:Time-To-Live),这样一个请求生成后TTL时间内没有获得应答信息,可以向RR-DNS获取不同的IP地址。
在一个TTL时期内,多个域名请求将被映射到相同的IP地址,这样大量的客户端请求可能出现在同一服务器上,导致明显的负载失衡。如果TTL很小,又会明显增加域名解析的网络负载。 另一个相关问题是由于客户端缓存域名-IP地址解析结果,客户端可以在未来的任意时刻发送请求,导致服务器的负载无法得到控制,出现服务器负载失衡。 为解决请求的负载分布均衡问题,研究者对RR-DNS算法进行了多种改进,这些改进依据TTL的设定形式可分为TTL恒定算法和自适应TTL算法。 TTL恒定算法 TTL恒定算法根据用户使用系统状态信息的情况又可分为系统无状态算法、基于服务器状态算法、基于客户状态算法和基于服务器/客户状态算法。
自适应TTL算法[20] 为平衡多服务器节点的负载,特别是异构服务器的负载,人们提出了自适应的TTL算法。这类算法使用基于服务器/客户状态DNS策略选择节点服务器,并动态调整TTL值。在异构服务器集群中,根据各服务器容量不同,设置的TTL值也不完全相同,由此控制因负载不对称造成的超载问题。 自适应TTL算法使用两步表决机制:首先DNS选择服务器的方法和基于客户状态算法相似;第二步,DNS根据负载分布情况、服务器处理能力和服务器的繁忙程度选择合适的TTL值,服务器越忙,设定的TTL值越小。 另外,自适应TTL算法的可扩展性很强,算法实现中的数据都可以动态获得。使用自适应TTL算法可以使服务器集群比较容易地从局域网拓展到广域网。 由于客户端和中间域名服务器缓存URL-IP地址映射,使用服务器状态信息的DNS算法不能保证负载平衡[15],每个地址缓存都有可能引发大量的客户请求阻塞集群中的某个服务器节点。因此,合理地预测客户请求的到达率对于选择服务器更加有效。 使用客户到达率信息和服务器监听的调度算法可以获得更高可用性的服务器。但是这种算法明显不适于异构型集群服务器。 为平衡分布系统的请求负载,自适应TTL算法是最可靠、有效的。但是,这种算法忽略了客户-服务器距离的重要性。
为实现客户请求的集中调度和完全路由控制,采用细粒度负载分配策略的服务器结构中必须包含一个路由器节点──平衡器(可能是一个硬件路由器或集群服务器中配置专用软件的节点)接收发向Web站点的所有请求,根据某种负载平衡算法将请求转发到不同的服务器节点上。 与基于DNS的体系结构不同的是,平衡器采用单一的、虚拟IP地址IP-SVA(single virtual IP adress),这个IP地址是众所周知的一个IP地址,而节点服务器的实际地址对用户是透明的。由于此机制是在URL层进行请求的处理,Web页中包含的多个目标,可以由集群中的不同节点提供,这样提供了比RR-DNS更细粒度的控制策略。 根据路由机制的不同,细粒度负载分配策略又可分为报文重写(单向重写或双向重写)、报文转发和HTTP重定向。 PDR采用集中调度方式完成客户请求的路由控制,服务器系统的平衡器负责客户请求的接收、分发和结果的返回工作。与RR-DNS策略不同,平衡器在IP层进行地址重写,使用动态地址映射表,实现客户请求的重定向。采用单一的虚拟IP地址(IP-SVA),用户可见的只是平衡器,节点服务器是透明的。在选择节点服务器时采用的调度策略主要有:Round Robin(轮转)、Weighted Round Robin(加权轮转)、Least Connection(最少连接)和Weighted Least Connection(加权最少连接)。平衡器将客户和节点服务器的映射添加到映射表中,这样就保证了同一客户的所有请求都发送到同一台节点服务器上,从而保证了访问的持续性。采用PDR策略的典型代表是Cisco的Local Director,从路由机制上看,Local Director当前采用最少连接数策略。图1-3给出了Local Director处理客户请求的原理图。 工作流程
性能分析 与粗粒度负载平衡策略不同,PDR在IP级进行负载平衡分配,这样就省去了从应用层到IP层的通讯开销,因此有效缩短了服务器处理时间。较DNS机制,性能提高很大。但是这种策略也存在如下问题:
在某些体系结构中,平衡器对接收的客户请求进行二次路由,将客户报文的目的IP地址改写为实际处理节点的IP地址,例如基本的TCP路由机制[15]。 在TCP路由机制中,服务器集群由一组节点服务器和一个TCP路由器组成,TCP路由器充当IP地址平衡器。当客户请求到达TCP路由器时,由于IP-SVA是唯一公开的IP地址,平衡器将请求报文中的目标IP地址重写为节点服务器的私有IP地址。由于一个客户请求可能是由多个报文构成,TCP路由器在地址表中记录客户(具有相同的源IP地址)与执行服务器的地址映射,保证来自同一客户的所有报文都能到达同一台节点服务器。服务器在发送应答报文给客户时,将平衡器的IP-SVA写入源IP地址,这样客户并不知道请求是由隐藏的执行服务器完成。图4给出了服务器使用报文单向重写策略时,客户请求的执行过程。 工作流程:
性能分析 使用报文单向重写机制可以提高系统可用性程度,当平衡器节点出现故障时,路由表可以由原平衡器迁移到新的服务器上,服务器的结构也可以从局域网拓展到广域网。但是这种机制导致服务器结构透明性较差,而且执行服务器和平衡器在判断客户请求是否结束上存在困难。 由于报文重写增加了平衡器处理请求的复杂度,导致平衡器负载加重,研究者提出了报文转发策略(PF)。采用PF策略,平衡器和执行服务器共用一个IP-SVA地址,客户请求报文到达平衡器后,平衡器根据调度选择执行服务器,利用执行服务器的物理地址(MAC)将报文转发给执行节点。转发过程中不需要进行地址解析,所以不必改动客户请求报文。采用PF策略的典型代表是IBM的Network Dispatcher。 局域网内部的Network Dispatcher集群处理客户请求的原理与图5相似,其工作流程如下:
为了将服务器集群从局域网拓展到广域网,Network Dispatcher采用两级平衡器机制,图5显示了广域网服务器集群的原理图。一级平衡器到二级服务器之间采用类似报文单向重写策略,平衡器将客户请求报文的目的地址(IP-SVA)改写为二级平衡器的IP地址,选择二级平衡器的原则是根据客户-服务器间的距离,将客户请求分发到最近的服务器子群上。二级平衡器将客户请求报文的目的地址改回IP-SVA,然后将报文转发到执行服务器上,服务器子群要求必须在同一局域网中。 在广域网环境下,实现客户请求报文处理的流程是:
随着负载数量的增长,相应的处理变得越来越复杂(每个服务器节点每秒处理的请求数量有限),目前路由器只负责接收报文,但链接的复杂性、每个请求的返回数据量都限制了路由器的可伸缩性。 集中式平衡器接收所有客户请求,使用HTTP重定向机制将客户请求分发到不同的执行服务器上。平衡器根据特殊的响应状态码,指明客户请求文件在服务器上的位置,因此重定向机制是高度透明的。与其他分发机制不同的是,HTTP重定向机制不需要对通讯报文的IP地址进行修改,HTTP重定向机制可以由以下两种技术实现。 2.4.1 基于服务器状态分发 在分布式服务器集群体系结构中,修正现有的HTTP协议,增加新方法实现对Web服务器的管理,改变平衡器与执行服务器间的信息交换。由于平衡器需要考虑服务器的负载情况,每个执行服务器必须周期性地报告处理进程数量和客户请求到达率。平衡器选择负载最轻的执行服务器处理新的客户请求。 2.4.2 基于位置的分发 Cisco的Distributed Director提供了两种分发模式,第一种是基于DNS的SCSB策略,第二种为HTTP重定向策略。Distributed Director评估客户-服务器距离和节点可用性,将客户请求重定向到最合适的执行服务器。 基于平衡器的报文双向重写机制的问题是,平衡器必须对应答报文进行重写,而应答报文的数量明显超过请求报文的数量。 使用TCP路由器结构的报文单向重写机制,由于执行服务器处理众多的应答报文,减轻了平衡器的负载。广域网环境下的Network Dispatcher仅对请求报文进行两次重写,因而执行效率更高。 报文转发机制可以有效避免报文重写带来的开销,然而共享单IP地址导致静态调度策略失效(服务器状态不决定路由)。基于路由的平衡器需要对每个报文进行二次路由,基于广播的平衡器需要把报文广播到每个执行服务器,这样明显加重了服务器负载。 局域网环境下的Network Dispatcher结构避免了共享IP地址、TCP路由和双向重写的开销等问题,但是它只能在同一网段内实现,可伸缩性很差。HTTP重定向可以很好地应用于局域网和广域网中,但必须复制一定数量的TCP连接。 基于DNS机构的实现机制可以明显减轻服务器的瓶颈效应,可伸缩能力得到加强,服务器环境从局域网拓展到广域网。但是,使用这种结构,服务器的数量不能超过32台(受UDP报文长度的限制)。基于DNS结构的服务器通过地址映射决定客户请求的目的地址,然而,这种粗粒度负载平衡机制要求TTL必须大于0,由于客户端对服务器地址进行缓存,导致服务器负载平衡不能保证,人们提出了基于状态信息算法和自适应TTL算法对DNS策略的性能进行改进。总的来说,单纯基于DNS策略的服务器适合于小规模的同构型服务器集群,但不适于异构性服务器结构。 基于平衡器结构的服务器由于受到单仲裁入口的限制,客户请求迅速增长可能导致平衡器成为系统瓶颈;由于平衡器对客户请求报文重写或转发,增加了客户等待延迟,降低了服务器性能;另外使用集中调度策略,若平衡器当机,则整个系统都会崩溃。从另一方面讲,平衡器实现的细粒度负载平衡策略,共享服务器IP地址又克服客户端网络层地址缓存问题。基于服务器拓扑结构实现的报文重写和转发策略是目前局域网或高速广域网中集群服务器实现的主要策略。 改进执行服务器处理过程将原有的请求集中控制改为部分分布控制,是服务器结构研究的一种进步,与平衡器结构服务器相同,这种技术也是一种细粒度负载平衡策略,但它带来的客户等待延迟要比其他策略增加很多。 从目前集群式服务器结构研究的现状分析可以看出,今后服务器集群的发展趋势将是面向广域网的分布控制的服务器集群研究。 |
讲述负载平衡策略,并对各种负载平衡策略作了比较。
近年来,Internet的发展步入黄金时期,网上信息交换的数量正在呈指数形式的增长。特别是,由于电子商务的蓬勃发展,人们已经预计在下一世纪,网上消费将成为日常生活的重要形式。
随着网络硬件设备的飞速进步,网络带宽的瓶颈效应日趋减弱,WEB服务器的性能问题逐渐显现出来。单一的服务器系统处理客户请求的能力有限,如何处理快速增长的客户请求,是当前研究人员关注的重要问题。从目前的研究方向看,服务器方向的研究可以归结为两个方面:
体系结构研究 | 软件技术研究 |
单机服务器 | 协议分析 |
缓存机制Caching | |
预取技术Pre-fetching | |
请求调度 | |
集群服务器 | 节点分发 |
就某一商业Web站点而言,人们通常会认为,日访问人数越多,说明销售的潜力越大,潜在的购买者越多。但统计结果向我们显示的却是另一种结果。随着日访问人数的增加,销售量上升到一定程度后,反而下降。图1给出的是某汽车销售网站网上销售的模拟计算结果。注意,当网站日查询业务量为正常的120%或更高时,访问的服务时间明显增长,使得日收益反而比正常情况下降很多。
| 正常 | 正常+10% | 正常+20% | 正常+30% |
日查询业务量 | 92448 | 101693 | 110938 | 120182 |
服务器响应时间 | 2.86 | 3.80 | 5.67 | 11.28 |
损失交易比例 | 0 | 0 | 60% | 95% |
每日交易量 | 4622 | 5085 | 2219 | 300 |
日收入 | 83203 | 91524 | 39938 | 5408 |
可能的日收益 | 83203 | 91524 | 99844 | 108164 |
损失的日收益 | | | 59906 | 102756 |
究其原因,我们不难发现,服务器的性能是导致这种现象的最根本的原因。当服务器负载接近边界时,负载的一个小小的增长都有可能使服务器陷入象死锁那样的一种境地。由此可以得出,如何优化Web服务器性能将是今后一段时间研究的一个热点。许多服务器制造商都在努力推出性能更加优良的服务器,但是单一服务器结构有一个致命的缺陷,那就是由于服务器的处理能力有限,有可能会出现死锁的情况。死锁的产生是由于新请求的到达率大于系统服务率,系统没有能力在短期内处理所有的请求,导致等待队列溢出,系统稳定状态转为不稳定状态,最后崩溃。集群服务器具有良好的可扩展性,可以随着负载的增大动态地向集群中增加服务器,从而就避免了由于处理能力不足而导致的系统崩溃。
在集群系统中,粒度指的是负载调度和迁移的单位。集群系统中的粗粒度指的是调度和迁移的单位是服务,而细粒度指的是进程。目前,关于集群式服务器的研究主要集中在体系结构和负载平衡策略的研究上,其中负载平衡策略的研究又是体系结构研究的基础。早期的集群式服务器系统常采用Round-Robin DNS算法实现客户请求的分发。实际上是一种粗粒度的负载分配策略。
正常情况下,域名服务器将主机名映射为一个IP地址,为了改善负载平衡状况,早期的集群服务器系统采用RR-DNS(Round-Robin DNS)调度算法将一个域名映射为一组IP地址,允许客户端链接到服务器集群中的某一台服务器上,由此提供了服务器站点的伸缩性。一些可伸缩Web服务器(例如Eddie和NCSA的Scalable Web Server)采用RR-DNS实现负载平衡,一些高吞吐率的站点(Yahoo)也继续采用这种简单应用。图2为这类服务器结构的工作原理图。
图 2 基于DNS机制的集群服务器结构RR-DNS在解析域名时,附加一个生存期(TTL:Time-To-Live),这样一个请求生成后TTL时间内没有获得应答信息,可以向RR-DNS获取不同的IP地址。
在一个TTL时期内,多个域名请求将被映射到相同的IP地址,这样大量的客户端请求可能出现在同一服务器上,导致明显的负载失衡。如果TTL很小,又会明显增加域名解析的网络负载。
另一个相关问题是由于客户端缓存域名-IP地址解析结果,客户端可以在未来的任意时刻发送请求,导致服务器的负载无法得到控制,出现服务器负载失衡。
为解决请求的负载分布均衡问题,研究者对RR-DNS算法进行了多种改进,这些改进依据TTL的设定形式可分为TTL恒定算法和自适应TTL算法。
TTL恒定算法 TTL恒定算法根据用户使用系统状态信息的情况又可分为系统无状态算法、基于服务器状态算法、基于客户状态算法和基于服务器/客户状态算法。
系统无状态算法指DNS服务器按固定时间间隔将客户请求分发到不同服务器上。例如时刻 的客户接受服务器k1的服务,时刻
的客户接受服务器k2的服务,式中的为TTL值。客户获取服务器地址后,将地址缓存在客户端,然后根据需要,向服务器发请求。
使用系统无状态算法,DNS只能控制部分请求的流向,由于不考虑服务器的容量和可用性,以及客户请求到达的不确定性,导致服务器超载或将请求发送到不可用服务器上,此算法性能很差,没有实用价值。
获取服务器状态的目的是为了选择可用性更高的服务器处理客户请求,防止服务器阻塞或服务失败。服务器状态算法需要使用简单的服务器侦听机制(例如心跳协议等)对服务器状态进行定时跟踪。当客户请求到达时,将负载最轻的服务器地址映射给客户端。SUN-SCALR在实现上就是采用这种机制。
来自客户端的信息可归结为客户访问的平均负载状况和客户分布情况。如果不考虑客户的优先级高低,CSB算法使用HLW(hidden load weight)参量描述新客户的到达率(TTL周期内,访问服务器的新客户数量),根据新客户到达率,进行服务器分配,这类算法的典型代表是MRRP(multitier round-robin policy)。
另外,Cisco的Distributed Director在实现上也采用CSB策略,Distributed Director在服务器集群中充当主域名服务器,根据客户-服务器的拓扑距离和新客户到达率,选择最适合的服务器分发给客户。
在DNS算法中,同时使用服务器状态和客户状态信息时,获得的性能往往是最高的。例如Distributed Director的DNS算法以服务器可用信息和客户的距离信息为指标分配处理服务器。当节点服务器超载,服务器发送异步警报反馈信息给DNS控制器,控制器将此服务器从可用服务器表中剔除,根据客户状态信息选择最有利的服务器处理客户请求。使用此算法需要对服务器状态进行动态分析和预测。
根据各台实际服务器的处理能力给它们分配不同的权重,使具有相同权重的服务器获得链接的概率相同,高权重的服务器获得链接的概率比低权重服务器获得链接的概率大。
自适应TTL算法[20] 为平衡多服务器节点的负载,特别是异构服务器的负载,人们提出了自适应的TTL算法。这类算法使用基于服务器/客户状态DNS策略选择节点服务器,并动态调整TTL值。在异构服务器集群中,根据各服务器容量不同,设置的TTL值也不完全相同,由此控制因负载不对称造成的超载问题。
自适应TTL算法使用两步表决机制:首先DNS选择服务器的方法和基于客户状态算法相似;第二步,DNS根据负载分布情况、服务器处理能力和服务器的繁忙程度选择合适的TTL值,服务器越忙,设定的TTL值越小。
另外,自适应TTL算法的可扩展性很强,算法实现中的数据都可以动态获得。使用自适应TTL算法可以使服务器集群比较容易地从局域网拓展到广域网。
由于客户端和中间域名服务器缓存URL-IP地址映射,使用服务器状态信息的DNS算法不能保证负载平衡[15],每个地址缓存都有可能引发大量的客户请求阻塞集群中的某个服务器节点。因此,合理地预测客户请求的到达率对于选择服务器更加有效。
使用客户到达率信息和服务器监听的调度算法可以获得更高可用性的服务器。但是这种算法明显不适于异构型集群服务器。
为平衡分布系统的请求负载,自适应TTL算法是最可靠、有效的。但是,这种算法忽略了客户-服务器距离的重要性。
算法名称 | 优点 | 缺点 | |
固定 TTL 算法 | 系统无状态算法 | 简单 | 不实用 |
基于服务器状态算法 | 提高服务器可用性 | 不能保证负载均衡 | |
基于客户状态算法 | | | |
基于服务器/客户状态算法 | 可以获得更高可用性的服务器 | 不适于异构型集群服务器 | |
自适应TTL算法 | DNS算法中可靠性最好、效率最高的算法 | 忽略了客户-服务器距离的重要性 |
为实现客户请求的集中调度和完全路由控制,采用细粒度负载分配策略的服务器结构中必须包含一个路由器节点──平衡器(可能是一个硬件路由器或集群服务器中配置专用软件的节点)接收发向Web站点的所有请求,根据某种负载平衡算法将请求转发到不同的服务器节点上。
与基于DNS的体系结构不同的是,平衡器采用单一的、虚拟IP地址IP-SVA(single virtual IP adress),这个IP地址是众所周知的一个IP地址,而节点服务器的实际地址对用户是透明的。由于此机制是在URL层进行请求的处理,Web页中包含的多个目标,可以由集群中的不同节点提供,这样提供了比RR-DNS更细粒度的控制策略。
根据路由机制的不同,细粒度负载分配策略又可分为报文重写(单向重写或双向重写)、报文转发和HTTP重定向。
PDR采用集中调度方式完成客户请求的路由控制,服务器系统的平衡器负责客户请求的接收、分发和结果的返回工作。与RR-DNS策略不同,平衡器在IP层进行地址重写,使用动态地址映射表,实现客户请求的重定向。采用单一的虚拟IP地址(IP-SVA),用户可见的只是平衡器,节点服务器是透明的。在选择节点服务器时采用的调度策略主要有:Round Robin(轮转)、Weighted Round Robin(加权轮转)、Least Connection(最少连接)和Weighted Least Connection(加权最少连接)。平衡器将客户和节点服务器的映射添加到映射表中,这样就保证了同一客户的所有请求都发送到同一台节点服务器上,从而保证了访问的持续性。采用PDR策略的典型代表是Cisco的Local Director,从路由机制上看,Local Director当前采用最少连接数策略。图1-3给出了Local Director处理客户请求的原理图。
图 3 LocalDirector原理图工作流程
性能分析 与粗粒度负载平衡策略不同,PDR在IP级进行负载平衡分配,这样就省去了从应用层到IP层的通讯开销,因此有效缩短了服务器处理时间。较DNS机制,性能提高很大。但是这种策略也存在如下问题:
在某些体系结构中,平衡器对接收的客户请求进行二次路由,将客户报文的目的IP地址改写为实际处理节点的IP地址,例如基本的TCP路由机制[15]。
在TCP路由机制中,服务器集群由一组节点服务器和一个TCP路由器组成,TCP路由器充当IP地址平衡器。当客户请求到达TCP路由器时,由于IP-SVA是唯一公开的IP地址,平衡器将请求报文中的目标IP地址重写为节点服务器的私有IP地址。由于一个客户请求可能是由多个报文构成,TCP路由器在地址表中记录客户(具有相同的源IP地址)与执行服务器的地址映射,保证来自同一客户的所有报文都能到达同一台节点服务器。服务器在发送应答报文给客户时,将平衡器的IP-SVA写入源IP地址,这样客户并不知道请求是由隐藏的执行服务器完成。图4给出了服务器使用报文单向重写策略时,客户请求的执行过程。
工作流程:
性能分析 使用报文单向重写机制可以提高系统可用性程度,当平衡器节点出现故障时,路由表可以由原平衡器迁移到新的服务器上,服务器的结构也可以从局域网拓展到广域网。但是这种机制导致服务器结构透明性较差,而且执行服务器和平衡器在判断客户请求是否结束上存在困难。
由于报文重写增加了平衡器处理请求的复杂度,导致平衡器负载加重,研究者提出了报文转发策略(PF)。采用PF策略,平衡器和执行服务器共用一个IP-SVA地址,客户请求报文到达平衡器后,平衡器根据调度选择执行服务器,利用执行服务器的物理地址(MAC)将报文转发给执行节点。转发过程中不需要进行地址解析,所以不必改动客户请求报文。采用PF策略的典型代表是IBM的Network Dispatcher。
局域网内部的Network Dispatcher集群处理客户请求的原理与图5相似,其工作流程如下:
为了将服务器集群从局域网拓展到广域网,Network Dispatcher采用两级平衡器机制,图5显示了广域网服务器集群的原理图。一级平衡器到二级服务器之间采用类似报文单向重写策略,平衡器将客户请求报文的目的地址(IP-SVA)改写为二级平衡器的IP地址,选择二级平衡器的原则是根据客户-服务器间的距离,将客户请求分发到最近的服务器子群上。二级平衡器将客户请求报文的目的地址改回IP-SVA,然后将报文转发到执行服务器上,服务器子群要求必须在同一局域网中。
图 5:广域网实现的报文转发在广域网环境下,实现客户请求报文处理的流程是:
随着负载数量的增长,相应的处理变得越来越复杂(每个服务器节点每秒处理的请求数量有限),目前路由器只负责接收报文,但链接的复杂性、每个请求的返回数据量都限制了路由器的可伸缩性。
集中式平衡器接收所有客户请求,使用HTTP重定向机制将客户请求分发到不同的执行服务器上。平衡器根据特殊的响应状态码,指明客户请求文件在服务器上的位置,因此重定向机制是高度透明的。与其他分发机制不同的是,HTTP重定向机制不需要对通讯报文的IP地址进行修改,HTTP重定向机制可以由以下两种技术实现。
2.4.1 基于服务器状态分发 在分布式服务器集群体系结构中,修正现有的HTTP协议,增加新方法实现对Web服务器的管理,改变平衡器与执行服务器间的信息交换。由于平衡器需要考虑服务器的负载情况,每个执行服务器必须周期性地报告处理进程数量和客户请求到达率。平衡器选择负载最轻的执行服务器处理新的客户请求。
2.4.2 基于位置的分发 Cisco的Distributed Director提供了两种分发模式,第一种是基于DNS的SCSB策略,第二种为HTTP重定向策略。Distributed Director评估客户-服务器距离和节点可用性,将客户请求重定向到最合适的执行服务器。
基于平衡器的报文双向重写机制的问题是,平衡器必须对应答报文进行重写,而应答报文的数量明显超过请求报文的数量。
使用TCP路由器结构的报文单向重写机制,由于执行服务器处理众多的应答报文,减轻了平衡器的负载。广域网环境下的Network Dispatcher仅对请求报文进行两次重写,因而执行效率更高。
报文转发机制可以有效避免报文重写带来的开销,然而共享单IP地址导致静态调度策略失效(服务器状态不决定路由)。基于路由的平衡器需要对每个报文进行二次路由,基于广播的平衡器需要把报文广播到每个执行服务器,这样明显加重了服务器负载。
局域网环境下的Network Dispatcher结构避免了共享IP地址、TCP路由和双向重写的开销等问题,但是它只能在同一网段内实现,可伸缩性很差。HTTP重定向可以很好地应用于局域网和广域网中,但必须复制一定数量的TCP连接。
基于DNS机构的实现机制可以明显减轻服务器的瓶颈效应,可伸缩能力得到加强,服务器环境从局域网拓展到广域网。但是,使用这种结构,服务器的数量不能超过32台(受UDP报文长度的限制)。基于DNS结构的服务器通过地址映射决定客户请求的目的地址,然而,这种粗粒度负载平衡机制要求TTL必须大于0,由于客户端对服务器地址进行缓存,导致服务器负载平衡不能保证,人们提出了基于状态信息算法和自适应TTL算法对DNS策略的性能进行改进。总的来说,单纯基于DNS策略的服务器适合于小规模的同构型服务器集群,但不适于异构性服务器结构。
基于平衡器结构的服务器由于受到单仲裁入口的限制,客户请求迅速增长可能导致平衡器成为系统瓶颈;由于平衡器对客户请求报文重写或转发,增加了客户等待延迟,降低了服务器性能;另外使用集中调度策略,若平衡器当机,则整个系统都会崩溃。从另一方面讲,平衡器实现的细粒度负载平衡策略,共享服务器IP地址又克服客户端网络层地址缓存问题。基于服务器拓扑结构实现的报文重写和转发策略是目前局域网或高速广域网中集群服务器实现的主要策略。
改进执行服务器处理过程将原有的请求集中控制改为部分分布控制,是服务器结构研究的一种进步,与平衡器结构服务器相同,这种技术也是一种细粒度负载平衡策略,但它带来的客户等待延迟要比其他策略增加很多。
从目前集群式服务器结构研究的现状分析可以看出,今后服务器集群的发展趋势将是面向广域网的分布控制的服务器集群研究。
集线器--集线器也叫Hub,工作在物理层(最底层),没有相匹配的软件系统,是纯硬件设备。集线器主要用来连接计算机等网络终端。集线器为共享式带宽,连接在集线器上的任何一个设备发送数据时,其他所有设备必须等待,此设备享有全部带宽,通讯完毕,再由其他设备使用带宽。正因此,集线器连接了一个冲突域的网络。所有设备相互交替使用,就好象大家一起过一根独木桥一样。 集线器不能判断数据包的目的地和类型,所以如果是广播数据包也依然转发,而且所有设备发出数据以广播方式发送到每个接口,这样集线器也连接了一个广播域的网络。 交换机--交换机Switch,工作在数据链路层(第二层),稍微高端一点的交换机都有一个操作系统来支持。和集线器一样主要用于连接计算机等网络终端设备。交换机比集线器更加先进,允许连接在交换机上的设备并行通讯,好比高速公路上的汽车并行行使一般,设备间通讯不会再发生冲突,因此交换机打破了冲突域,交换机每个接口是一个冲突域,不会与其他接口发生通讯冲突。并且有系统的交换机可以记录MAC地址表,发送的数据不会再以广播方式发送到每个接口,而是直接到达目的接口,节省了接口带宽。但是交换机和集线器一样不能判断广播数据包,会把广播发送到全部接口,所以交换机和集线器一样连接了一个广播域网络。字串2 高端一点的交换机不仅可以记录MAC地址表,还可以划分VLAN(虚拟局域网)来隔离广播,但是VLAN间也同样不能通讯。要使VLAN间能够通讯,必须有三层设备介入。 路由器--路由器Router,工作在网络层(第三层),所有的路由器都有自己的操作系统来维持,并且需要人员调试,否则不能工作。路由器没有那么多接口,主要用来进行网络与网络的连接。 简单的说路由器把数据从一个网络发送到另一个网络,这个过程就叫路由。路由器不仅能像交换机一样隔离冲突域,而且还能检测广播数据包,并丢弃广播包来隔离广播域,有效的扩大了网络的规模。在路由器中记录着路由表,路由器以此来转发数据,以实现网络间的通讯。路由器的介入可以使交换机划分的VLAN实现互相通讯。 集线器:纯硬件、用于连接网络终端、不能打破冲突域和广播域。 交换机:拥有软件系统、用于连接网络终端、能够打破冲突域,但是不能分割广播域。 路由器:拥有软件系统、用于连接网络、可以打破冲突域也可以分割广播域,是连接大型网络的比备设备 MODEM其实是取MOdulatorDEModulator两个英文的缩写合并而成,译成中文就是"调制解调器"。MODEM的主要功能就是将数据在数字信号和模拟信号之间转换,以实现在电话线上的传输。现在的MODEM基本上都带有传真和语音功能,所以通常叫做Fax/Voice/Modem。在日常生活使用的电话线路中,所有信息都是以连续性的模拟信号,也就是音频信号来表示和传送,而对电脑来说,只认识0和1两个数字,所有信息都是以不连续的数字信号来表示和传送,这下MODEM就派上用场了!电脑先把数据交给MODEM,MODEM把数字信号转为音频模拟信号,送进电话线里这个过程叫"调制";在接收一方MODEM收到音频模拟信号,将其还原为数字信息交给电脑处理,这个过程叫"解调"。MODEM的作用打个比方,就好比是网络这座桥梁两端的桥头堡。至于电脑与MODEM之间又是如何进行沟通的呢?著名通讯设备生产商Hayes为此制定了一套指令,专门用于电脑(主要是通过其中的通讯软件)控制MODEM的各项操作,也就是我们常说的"AT指令"。除去"A/"外的每个指令都是以"AT"("ATtention"的缩写)开头来表示,似乎是提醒MODEM注意。 MODEM上有几个很抢眼的面板灯,当MODEM正常工作时,它们会显得格外的忙碌一闪一闪地按照连线时的实际传输速率传送数据。我们当然应该知道每个灯所代表的意义,以便及时掌握MODEM当前所处的状态。当然,现在市面上也有一些产品,在每个灯的旁边设有简单的提示标识,对用户来说真是非常体贴。 |
中文名称:吞吐量英文名称:throughput
定义:对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。
应用学科:通信科技(一级学科);通信网络(二级学科)
对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。
IT168术语详解,《计算机网络系统方法》(美)Larry L.Peterson Bruce S.Davie 叶新铭 贾波 等译
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。