收藏 分享(赏)

分布式网络环境下的负载平衡原理及算法.doc

上传人:dzzj200808 文档编号:2285081 上传时间:2018-09-09 格式:DOC 页数:5 大小:109.50KB
下载 相关 举报
分布式网络环境下的负载平衡原理及算法.doc_第1页
第1页 / 共5页
分布式网络环境下的负载平衡原理及算法.doc_第2页
第2页 / 共5页
分布式网络环境下的负载平衡原理及算法.doc_第3页
第3页 / 共5页
分布式网络环境下的负载平衡原理及算法.doc_第4页
第4页 / 共5页
分布式网络环境下的负载平衡原理及算法.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、来源: 在 Internet/ Intranet 环境下一般采用 Web 服务器来集成共享的资源,但随着 Web 服务器连接数目的不断增长,开始面临 WWW 服务器超载的问题。为了增大吞吐能力 ,提高反应速度,人们不得不升级或更换服务器。这里有两种选择,一种是采用昂贵的高性能主机或 SMP 计算机,另一种则是把多台服务器用局域网络联结成一个集群,通过并行处理来扩展性能。比较这两种方案,后者的成本较低,并且具有较大的灵活性和较高的可靠性,目前有许多著名的WWW 站点已经转向此类计算平台。我们称这种平台为并行 WWW 服务器集群或工作站机群系统(Network of Workstations ,N

2、OW) 。它的特点是各节点独立运行自己的操作系统,灵活性高;节点处理能力强,资源为多用户共享。机群系统中,计算节点是面向多用户的,计算的核心机制在于如何进行任务的分配和调度 ,而任务的分配则取决于各计算节点负载信息的获取和处理技术。如何获取、使用收集本地节点的负载信息及任务调度就成为负载平衡系统的重要研究方向。1 动态负载平衡调度驱动策略在下面的讨论中,假定每个节点上的任务是动态产生的,每个节点的负载大小是动态变化的,因而不考虑静态负载平衡调度方法,只考虑动态负载平衡调度策略。一般说来,动态负载平衡调度可分为集中式调度和分布式调度两大类。前者是由一个调度服务器负责搜集系统负载信息,并由它来决定

3、负载平衡调度方案,它的主要优点在于实现比较简单;后者是根据局部范围内的一些负载信息来进行负载平衡操作,每台计算机定期把它的负载信息广播给其它计算机,去更新那些局部维护的负载向量,它的最大优点在于具有良好的可扩放性。限于篇幅,主要讨论集中式调度原理己算法2 集中式负载平衡调度策略2. 1 集中式负载平衡调度原理请求分配是并行 WWW 服务器集群中采用的一种典型技术。其主要原理 ,是由一台特殊的计算机(一般称为请求分配器 ) 集中接收所有的 HTTP 请求,然后依据一定的原则把它们分配到集群中的各台服务器上去进行处理。分配的主要目的是使各台服务器的负载分布比较均衡,从而获得较高的整体吞吐能力和较快

4、的反应速度。目前常用的请求分配算法主要有转轮法、最少连接法和最快连接法 3 种。第 1 种算法实现简单,但从本质上讲没有考虑负载均衡问题。第 2 种算法对各个服务器的性能不加区分 ,而且不考虑请求的强度 (请求文件的长度) 。第 3 种算法虽然考虑了服务器的性能 ,但没有考虑请求强度。这些局限性使这些算法无法真正做到负载的“均衡”分配,因而无法较好地发挥系统的并行处理能力。为了有效地提高请求分配算法的效率,并使算法能够适应异构服务器集群,应使请求分配器能够知道每一台服务器的处理能力,并且可对集中接收的每一个 HTTP 请求的内容进行分析,同时应能比较准确地跟踪各个服务器的负载情况。服务器的处理

5、能力可以事先通过实测获得,分析 HTTP 请求只需分析它的请求头部分,而负载跟踪则可以通过在请求分配器上记录各服务器的应答进度来实现。基于以上考虑,本文实现了一个异构 WWW 服务器集群,设计了一种综合考虑 HTTP 请求内容和各个服务器性能以及当前的负载情况的请求分配算法LTI(Least Time Increment) ,目标是使各个请求的应答时间总和尽可能短。为此,文中把应答总时间的增量作为 LTI 算法的优化对象。为了避免服务器在连接数接近阈值时性能急剧下降,还设计了一种请求延迟策略。2. 2 集中式负载平衡系统结构形式目前常见的并行 WWW 服务器集群主要有两种组成方式, 一种是以

6、Cisco 的 Local Director 为代表的隔离式,采用最少连接法或最快连接法进行请求分配;另一种则是以 NCSA 的Scalable Web Server 为代表的非隔离式 ,采用转轮法进行请求分配。无论哪一种方式,都要求各台服务器上所有 Web 信息的访问路径和内容要完全一样( 这一点可以通过网络文件系统或专用的文件服务器来实现) 。二者的区别在于这些服务器是否直接连接在 Internet 上,对用户可见。隔离式集群采用类似于 Proxy 的技术,只有请求分配器具有一个虚拟的 IP 地址,所有的请求都发向此 IP 地址,由请求分配器分配到集群中的各台服务器上去处理,返回的结果也经

7、由请求分配器传回给用户;非隔离式集群中的每一台服务器都有独立的 IP 地址,请求分配是通过动态 DNS ,HTTP Redi2rect 等技术实现的,服务器对请求的应答不通过请求分配器,而是由各台服务器直接传回给用户。图 1 是两种不同结构集群的组成示意图。图 1 WWW 服务器集群的组成结构2. 3 性能评价参数和影响性能的因素目前,评价 WWW 服务器的性能主要采用吞吐率和平均应答延迟两个参数。吞吐率 RPS 定义为平均每秒处理的请求个数,平均应答延迟 MRD 定义为从建立网络连接到应答结束拆除连接之间的时间的平均值。所采用的测试集由若干个大小不一的请求按照一定的分布规律组成。所谓请求的大

8、小,是指请求读取的文件的长度或请求执行的 Script 等程序在独占处理机时的执行时间。HTTP 协议是一种无状态协议,每个请求都由客户程序发起建立一个独立的网络连接,应答结束后由服务器拆除该连接。请求由请求头和请求体两部分组成,请求头是一种具有行结构的文本,请求体是一种称为 MIME 格式的复合文本。请求头指明该请求的目的,如,向服务器请求读取文件、验证文件是否更新或执行服务器上的 Scripts 程序等。不同的 HTTP 请求对服务器产生的负载存在着很大的差异。 RPS 和 MRD 由服务器的处理能力决定。对于 WWW 服务器集群来说,MRD 还和请求分配策略有密切的联系。下面来分析这些联

9、系。完成一个应答的时间主要由以下 3 部分组成:1) 请求分配器与服务器建立网络连接所需的时间 TC 。在 Intranet 企业网内部,这个时间一般可以忽略;2) 读取并传输文件的时间 TF。这段时间取决于文件读取和传输的速度 。如果在一段时间内,网络连接数 N 保持不变,则在这段时间内, 可以近似地认为与 N 成反比,即 = / N 。这里, 为只有一个连接时的文件读取和传输速度。称 为应答速度, 为机器速度;3) 在服务器上执行 Scripts 程序的时间 TE。由于情况比较复杂,这段时间很难事先估计。为了简化问题,在下面的讨论中暂时不考虑 TE。这里需要说明:当网络连接数 N 超过某一

10、阈值 NMax (取决于服务器的性能 , 对不同的服务器, 数值可能不同) 时, TC 会突然直线上升,同时 会突然急剧下降。我们称这种状态为临界状态, 称 NMax 为此服务器的临界连接数。这种现象可以这样来理解:这些处理要消耗服务器的缓冲区资源,当缓冲区总数接近或超过系统内存限度时,系统开始大量使用“换存”,如果此时仍不断有请求到来,则势必产生一种恶性循环,于是系统效率急剧下降。所以,为了保证系统的 RPS 和 MRD ,应设法避免N 达到 NMax。下面分析有一台服务器时的应答时间。设在某一时刻该服务器共有 N 个网络连接在同时传输文件, 这些文件的剩余长度分别为 L1 ,L2 , .

11、. . , LN 。此时,一个新的 HTTP 请求到达该服务器,请求的文件长度为 L 。不妨设 L1 . . . L K L L K+1 . . . LN , 采用连续模型(传输文件的时间与文件的长度成正比 , 与机器速度成反比) 可以计算由于 L 的引入而产生的应答时间的增量:3 请求分配算法的实现为了实现算法,在请求分配器上设置几个表。第 1 个称为 FLT ,其中的内容为服务器上 WWW 空间中所有文件的路径和长度。第 2 个称为 TST ,其中存放的是各个服务器的机器速度。第 3 个称为 RCT ,存放各个服务器正在应答的请求个数。设集群中共有 M 个服务器,为每个服务器设置一个表 C

12、FT( i) ,1 i M , 用来存放此服务器当前正在应答的各个请求所传输文件的长度和剩余长度。请求分配算法 LTI 采用多线程技术,算法主干部分由两个线程组成,一个用于跟踪各服务器的应答进度,一个用于请求分配。1) 请求分配算法 LTI 线程 1 :负载跟踪每隔一个固定的小时间段 进行如下操作:根据 TST 和 RCT 计算各个服务器的应答速度 ;将所有 CFT( i) 中各个文件的剩余长度域减少 3,1 i M;如某文件的剩余长度0 ,则删除相应 CFT ( i )的对应项,并更新 RCT 中此服务器的当前请求个数。线程 2 :请求分配如果有请求到达,从请求头中的 URL 部分取出请求文

13、件的路径,从 FLT 中查得其请求文件的长度 L ;对每个服务器 i ,根据 TST ,RCT 和 CFT( i) ,采用式(1) 的方法计算将 L 引入该服务器所引起的应答总时间的增量 i ,1 i M;设 K = Min (i) ,1 i M ,分配请求 L 到第 K 个服务器,同时更新 RCT 中此服务器当前请求个数,并在 CFT( i) 中增加一项,其中文件长度域和剩余长度域均为 L 。LTI 算法把应答总时间的增量作为优化的对象,关于它的性能,有以下定理。定理:对于优化 MRD 来说,LTI 算法是一个局部最优算法。证明:设一个测试集共有 n 个请求,由式(1) 和 MRD 的定义,

14、有其中, TC ( i) 为各个请求的连接建立时间,按上文讨论为固定值;( i) 为各个请求在以前所有请求的基础上引起的应答总时间的增量。在 LTI 算法中,分配新到达的每一个请求时,都使相应的 ( i) 取得了当前状态下可能的最小值,从局部意义上讲,该算法是最优的。但当连接数 N 接近或超过某一阈值 NMax 时,服务器的性能会急剧下降。上述算法没有考虑这个问题,其结果是在负载很重时,应答时间将大大超过预计值,于是算法的准确性就得不到保证。解决这个问题可以有几种方法。第 1 种方法是拒绝新连接,直到有服务器退出临界状态。第 2 种方法是将新到达的请求分配到另外一台服务器上去。第 3 种方法是

15、将新到达的请求延迟,等到有服务器退出临界状态时再予以处理。上述第 1 种方法因为用户很难接受,在实际中是不可行的,故不予考虑。对第 2 种按照 LTI 算法选出的服务器达到连接阈值时,其他服务器也基本上都接近临界状态,因此这种方法效果不明显。因此结合第 2 和第 3 种方法,对 LTI 算法进行如下改进。修改表 RCT ,其中除了存放各个服务器正在应答的请求个数 N 以外,还存放它们的临界连接数。增加队列 DRQ ,存放因临界状态而延迟的请求及其请求文件的长度。一个服务器接近临界状态是指它的连接数 N 接近但还未达到临界连接数 NMax ,此时,服务器的性能还没有急剧下降。2) 请求分配算法

16、LTI +线程 1 :负载跟踪,与 LTI 算法相同。线程 2 :请求分配如果有请求到达,从请求头中取出请求文件的路径,从 FLT 中查得其请求文件的长度 L 。如果此时所有服务器都已接近临界状态,则将这个请求放入延迟队列 DRQ 的队尾,并填入其请求文件的长度;否则:对所有未接近临界状态的服务器 i , 根据 TST ,RCT 和 CFT( i) ,采用(1) 式的方法计算将 L 引入该服务器引起的应答总时间的增量 i ,1 i M;设 K = Min (i) ,1 i M ,分配请求 L 到第 K 个服务器,同时更新 RCT 中此服务器当前请求个数,并在 CFT( i) 中增加一项,其中文

17、件长度域和未传长度域均为 L 。线程 3 :处理被延迟的请求如果延迟队列 DRQ 非空,每隔时间 检查是否有服务器退出临界状态。如果有,则进行如下操作:取出 DRQ 队首的请求,设其请求文件的长度为 L ;对所有未接近临界状态的服务器 i ,根据 TST ,RCT 和 CFT( i) ,采用式(1) 的方法计算将 L 引入该服务器所引起的应答总时间的增量 i ,1 iM;设 K = Min (i) ,1 i M ,分配请求 L 到第 K 个服务器,同时更新 RCT 中此服务器当前请求个数,并在 CFT( i) 中增加一项,其中文件长度域和未传长度域均为 L 。算法LTI + 增设了一个线程处理

18、被延迟的请求。当服务器集群未接近临界状态时,该算法与算法LTI 完全相同。当服务器集群接近临界状态时,该算法通过延迟新到达的请求避免集群进入临界状态。对于具有间隙性突发特性的请求序列,该算法实际上是将突发流量均衡到以后的时间中去处理。4 结 论分析了集中式调度系统组成和工作原理,给出了评价其性能的两个参数,并分析了影响性能的因素,特别是分析了应答总时间的增量与请求强度以及服务器当前状态之间的关系。在此基础上,提出了以应答总时间的增量为优化目标的请求分配算法 LTI ,并证明了该算法的局部最优性。为了解决集群在接近临界状态时性能急剧下降的问题,并对 LTI 算法进行了改进,得到算法 LTI + ,该算法能够判别和避免集群进入临界状态。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报