结合随机抽样和虚拟化技术的负载均衡方法

文档序号:7802679阅读:290来源:国知局
结合随机抽样和虚拟化技术的负载均衡方法
【专利摘要】本发明提供了一种结合随机抽样和虚拟化技术的负载均衡方法,包括随机抽样步骤和虚拟化步骤。本发明通过结合随机抽样和虚拟化技术,做出全局负载(网络带宽)的均衡选择,也能够保证局部负载(CPU、内存)的均衡选择,从而可以显著提高整个分布式系统(云计算)的所有资源(网络带宽、CPU、内存)的利用率。使得用户的满意度最大化,减少响应时间,增加资源的利用率,减少任务被驳回的数量,提高整个分布式系统的性能。全局管控和局部管控的分离使得整个系统节省能源、更易于扩展和维护,从而使得这样的负载均衡方法更有实际应用价值。
【专利说明】结合随机抽样和虚拟化技术的负载均衡方法
【技术领域】
[0001]本发明属于计算机【技术领域】,尤其是应用于分布式系统(比如云计算)中让所有的结点的资源都能够充分被应用,具体涉及一种结合随机抽样和虚拟化技术的负载均衡方法。
【背景技术】
[0002]从1961年图灵奖得主约翰.麦卡锡提出“效用计算”让计算能力将像水和电一样提供给用户使用开始,人们就一直希望能够更容易地获得IT服务,但是当时并未得到实际应用。直到2004年,Amazon推出EC2服务(弹性计算云,Elastic Compute Cloud),云计算作为一种简单的、直观的IT资源提供模式才开始走进不同用户的视野。随后的2006年,Google首席执行官埃里克.施密特在搜索引擎大会上首次提出了“云计算”(CloudComputing)的概念。自此之后,云计算作为一种新的IT服务名词被广泛传播。
[0003]目前普遍认同的云计算概念是:云计算是一种由大规模商业利益驱动的计算模式,它能够满足用户的需求,通过Internet从一个抽象的可动态扩展的虚拟化资源池中提供计算能力存储资源以及平台服务。
[0004]云计算中一个重要的问题就是负载均衡,这是云计算调度的一个重要目标和指标。
[0005]负载均衡(Load balancing)是一种计算机技术,用来在多个计算机(虚拟机、计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到优化资源使用、最大化吞吐率、最小化响应时间,同时避免过载的目的。使用带有负载均衡的多个服务组件,取代单一的组件,可以通过冗余提高可靠性。
[0006]负载均衡的起源是随着互联网信息的日益普及,无论在局域网、广域网还是在以太网上,业务量和用户访问次数都呈现指数级增长,面对应用或工作负载的突发状况,单一的服务器节点会出现热点问题,无法承担突发的工作流,出现节点过载问题。目前针对节点过载问题的研究中,主要存在两种解决办法:其一是对服务器进行更新换代,淘汰掉功能较弱的服务器,添置新型的更高性能的服务器来应对增长的工作负载,这是一种纵向处理方法;第二种方法是进行横向处理,将多个服务性能一般的服务器组合起来构成一个集群,多台并行执行,使其处理能力相当于一台高性能的处理机。然而这两种方法都具有各自的局限性:
[0007]第一种方案一方面比较浪费,被淘汰掉的服务器一般都不能再利用,并且在进行这种更替的过程中,必须要停掉服务,会形成业务中断,从而影响正常的工作。另一方面,这种解决方式的扩展性并不好,每次更新都淘汰旧的服务器,重新换上更好的服务器。
[0008]第二种方案则是通过增加新的服务器来提高处理能力,不仅不丢弃旧的服务器,而且也不需要在部署系统时停掉服务,和第一种相比,该方法有很大的优越性。但是它同时也带来了新的问题:由原来的单个服务器变成了集群结构,而其不足之处在于这些服务器之间都是相互独立的,它们可以同时对多个用户的请求而进行并行工作。但是对于大规模业务突发状况来说,可能仍会出现某些服务器过忙,而另一些又过闲,集群资源未能充分利用,出现负载不均衡的状况。
[0009]负载均衡算法以及机制的产生,很好地解决了集群环境下负载不均衡的问题,集群环境有一个管理节点,采用负载均衡算法将资源按照某种规则进行合理分配,同时又能很好的为用户提供服务。因此负载均衡需要完成的主要任务如下:解决服务器过载问题,为多个并行用户提供更好的服务质量,提高任务的响应时间,消除业务突发导致的热点问题,提高服务器的利用率,实现集群资源的合理分配。
[0010]目前负载均衡的算法主要有如下几种,他们各有优缺点。
[0011]带有偏好的随机抽样算法:带有偏好的随机抽样(Biased Random Sampling)算法是一种分布式和可伸缩的负载平衡方法,该方法通过对系统域进行随机取样来实现自组织,从而平衡负载系统的所有节点。算法构造了一个虚拟网络拓扑图,图中的各节点的连通关系(服务器视为一个节点)代表了服务器上的负载。每个服务器节点的入度表示分派到该服务器的资源。这种负载均衡模式是非集中式的,这样就更能适应像云计算那样的大规模网络环境。但是随着节点规模的提高和多样性增加,性能会有所降低,而且不一定能达到最优解。
[0012]Sufferage算法:在Sufferage算法中,第一步计算出所有任务分配到不同机器上的最短和次短完成时间,将两者作差得到sufferage值,在第二步中选取sufferage值最大的任务分配到所对应的完成时间最短的机器上执行。Sufferage算法在批模式下能使得任务的makespan最短,但是忽略了任务的QoS需求而且负载均衡效果不佳。
[0013]投机负载均衡算法:投机负载均衡(Opportunistic Load Balancing, 0LB)算法按照任意的顺序指派任务到空闲的虚拟机上,算法忽略任务的执行时间,主要目的在于使所有的机器都保持繁忙状态而不关心结果的最优化。其优点是简单易实现,但是无法保证完成时间最短。
[0014]Min-Min调度算法:算法从一些未分配的任务集合开始。首先,从映射方案集中找出预计完成时间最短的任务集合。然后,在这些任务集合中再选出执行时间最小的分配方案。基于这个方案,任务被指派到对应的机器上执行。接着这台虚拟机上运行的所有任务的执行时间加上该任务的执行时间,随后从任务队列中移除该任务。最后,算法继续按照上述流程执行,直到所有任务都被分配完毕。这种算法的主要缺点是容易造成饥饿效应。

【发明内容】

[0015]分布式系统必须根据动态的网络状况、不同结点的资源池使用情况来自适应地选择把任务分配给哪一个结点,以此来提高用户的满意度和资源利用率。因此,为了在最短时间内增加整个分布式系统的吞吐量,必须基于负载均衡的目标来结合基于特征策略的随机抽样方法和虚拟化技术,让整个系统的资源充分被调用起来,且节约能源,易扩展和维护。
[0016]基于以上理解及针对现有技术中的不足之处,本发明的目的在于既可以在局部范围内达到负载均衡,又可以在整个系统中达到负载均衡,并且尽可能的节省资源(电费),还可以达到网络、CPU、内存这三个主要的指标全部负载均衡。从而让这个系统易于扩展(需要使用的时候开通新的结点),便于维护(出现问题的结点可以暂时不用,待修理好之后再接入系统中使用),节省能源,提高整个系统的性能。即,通过随机抽样和虚拟化步骤,将整个分布式系统中的所有资源,包括网络带宽、CPU、内存全部用到最大限度,并在最大限度的情况下能够将任务进行完美的处理;随机抽样步骤的特征在于将整个分布式系统的网络带宽用到最好;虚拟化步骤的特征在于将局部分布式系统的所有机器的CPU、内存尽可能的发挥到最佳的状态且保证系统的负载均衡。
[0017]根据本发明提供的一种结合随机抽样和虚拟化技术的负载均衡方法,包括如下步骤:
[0018]步骤一:随机抽样步骤,所述随机抽样步骤用于根据不同地理位置的服务器和不同网络分布,将批量的任务从全局主控结点分配到局部控制服务器(针对不同地理位置分布的服务器[比如微博的北京、上海的服务器]和不同网络分布[比如使用移动联通电信教育网]的服务器);
[0019]步骤二:虚拟化步骤,所述虚拟化步骤用于将局部控制服务器上面的批量任务分配到资源池对应的虚拟机上面来处理。
[0020]优选地,在步骤一中采用通信延迟策略和计算能力策略,以控制全局的负载均衡;
[0021]所述通信延迟策略,用于根据当前整个系统的负载均衡较低时,在随机抽样步骤进行最后一个结点的选择的时候,优先选择通信延迟较低的结点;
[0022]所述计算能力策略,用于根据当前整个系统的负载均衡较高时,在随机抽样步骤进行结点选择的时候,尽量选择计算能力较强的结点。
[0023]优选地,所述虚拟化步骤采用基于资源池分配的负载均衡算法和基于预测的弹性负载均衡算法,以负责局部的负载均衡;
[0024]所述基于资源池分配的负载均衡算法,根据当前局部分布式系统的资源池的负载情况来分配任务,以保证系统的所有资源池的虚拟机都能够保证高质量的负载均衡状态;
[0025]所述基于预测的弹性分配负载均衡算法,是当任务分配到具体的资源池之后,针对资源池内部的处理机制,以让系统的资源池发挥到较高质量的利用,或者让空闲的虚拟机较少被利用,增加整个系统的性能,降低开销。
[0026]优选地,所述基于资源池分配的负载均衡算法,具体为:
[0027]输入:待处理的任务TQ,T1……Tn以及可用的资源池P。,P1……Pn
[0028]输出:一个任务分配方案,使得每一个待处理的任务均被分配到当前负载最小的资源池中
[0029]数据结构:通过负载均衡器维护一张任务与资源池的映射表,用以保存已分配任务的情况
[0030]初始状态:所有资源池均未分配任务,任务与资源池的映射表为空
[0031]数据中心每接收到一个请求执行如下步骤:
[0032]步骤Al:数据中心接收到请求后交由负载均衡器进行处理;
[0033]步骤A2:解析任务与资源池的映射表,寻找当前负载最小的资源池Ps ;
[0034]如果Ps在上一轮迭代中已被选中,那么继续寻找负载次小的资源池Ps’作为目标资源池;否则Ps即为本次迭代的目标资源池;
[0035]步骤A3:负载均衡器将目标资源池返回给数据中心,数据中心将该次请求分配给目标资源池;[0036]步骤A4:数据中心通知负载均衡器更新任务与资源池的映射表;
[0037]步骤A5:返回步骤Al继续处理下一个请求;
[0038]虚拟机每处理完一个请求执行如下步骤:
[0039]步骤B1:资源池处理完请求后将消息反馈给数据中心;
[0040]步骤B2:数据中心通知负载均衡器释放该任务并更新任务与资源池的映射表。
[0041]优选地,所述基于预测的弹性分配负载均衡算法,具体为:
[0042]数据结构:负载均衡器负责维护三种队列:
[0043]①于每一台虚拟机S维护一个长度为ΡΛΙI的队列Q,用以记录S最近的负载状况,
其中,T表示对资源池进行调整的时间间隔,t表示负载均衡器向处于运行状态的虚拟机获取负载数据的时间间隔;②对于每一个资源池P,维护长度为IpI的队列i_queue,用以记录P中处于空闲状态的虚拟机在全局维护表schedule_list中,记录需要进行调整的资源池
[0044]初始状态:Q以及schedule_list均为空,资源池P中的虚拟机均处于空闲状态
[0045]每隔时间t:负载均衡器向处于运行状态的虚拟机获取负载数据
[0046]对于每一台虚拟机Si,本次获取的负载数据L,将被添加到相应队列Qi中;
[0047]每隔时间T:对资源池进行一次调整
[0048]步骤Cl:对于每一台虚拟机Si,根据相应负载队列Qi中的负载数据Lp按如下公式计算出它的负载均值MSi
[0049]
【权利要求】
1.一种结合随机抽样和虚拟化技术的负载均衡方法,其特征在于,包括如下步骤: 步骤一:随机抽样步骤,所述随机抽样步骤用于根据不同地理位置的服务器和不同网络分布,将批量的任务从全局主控结点分配到局部控制服务器; 步骤二:虚拟化步骤,所述虚拟化步骤用于将局部控制服务器上面的批量任务分配到资源池对应的虚拟机上面来处理。
2.根据权利要求1所述结合随机抽样和虚拟化技术的负载均衡方法,其特征在于,在步骤一中采用通信延迟策略和计算能力策略,以控制全局的负载均衡; 所述通信延迟策略,用于根据当前整个系统的负载均衡较低时,在随机抽样步骤进行最后一个结点的选择的时候,优先选择通信延迟较低的结点; 所述计算能力策略,用于根据当前整个系统的负载均衡较高时,在随机抽样步骤进行结点选择的时候,尽量选择计算能力较强的结点。
3.根据权利要求1所述结合随机抽样和虚拟化技术的负载均衡方法,其特征在于,所述虚拟化步骤采用基于资源池分配的负载均衡算法和基于预测的弹性负载均衡算法,以负责局部的负载均衡; 所述基于资源池分配的负载均衡算法,根据当前局部分布式系统的资源池的负载情况来分配任务,以保证系 统的所有资源池的虚拟机都能够保证高质量的负载均衡状态; 所述基于预测的弹性分配负载均衡算法,是当任务分配到具体的资源池之后,针对资源池内部的处理机制,以让系统的资源池发挥到较高质量的利用,或者让空闲的虚拟机较少被利用,增加整个系统的性能,降低开销。
4.根据权利要求3所述结合随机抽样和虚拟化技术的负载均衡方法,其特征在于,所述基于资源池分配的负载均衡算法,具体为: 输入:待处理的任务T0, T1……Tn以及可用的资源池Ptl, P1……Pn 输出:一个任务分配方案,使得每一个待处理的任务均被分配到当前负载最小的资源池中 数据结构:通过负载均衡器维护一张任务与资源池的映射表,用以保存已分配任务的情况 初始状态:所有资源池均未分配任务,任务与资源池的映射表为空 数据中心每接收到一个请求执行如下步骤: 步骤Al:数据中心接收到请求后交由负载均衡器进行处理; 步骤A2:解析任务与资源池的映射表,寻找当前负载最小的资源池Ps ; 如果Ps在上一轮迭代中已被选中,那么继续寻找负载次小的资源池Ps’作为目标资源池;否则Ps即为本次迭代的目标资源池; 步骤A3:负载均衡器将目标资源池返回给数据中心,数据中心将该次请求分配给目标资源池; 步骤A4:数据中心通知负载均衡器更新任务与资源池的映射表; 步骤A5:返回步骤Al继续处理下一个请求; 虚拟机每处理完一个请求执行如下步骤: 步骤B1:资源池处理完请求后将消息反馈给数据中心; 步骤B2:数据中心通知负载均衡器释放该任务并更新任务与资源池的映射表。
5.根据权利要求4所述结合随机抽样和虚拟化技术的负载均衡方法,其特征在于,所述基于预测的弹性分配负载均衡算法,具体为: 数据结构:负载均衡器负责维护三种队列: ①于每一台虚拟机S维护一个长度为FVtl的队列Q,用以记录S最近的负载状况,其中,T表示对资源池进行调整的时间间隔,t表示负载均衡器向处于运行状态的虚拟机获取负载数据的时间间隔;②对于每一个资源池P,维护长度为|P|的队列i_queue,用以记录P中处于空闲状态的虚拟机在全局维护表schedule_list中,记录需要进行调整的资源池 初始状态:Q以及schedule_list均为空,资源池P中的虚拟机均处于空闲状态 每隔时间t:负载均衡器向处于运行状态的虚拟机获取负载数据 对于每一台虚拟机Si,本次获取的负载数据L将被添加到相应队列Qi中; 每隔时间T:对资源池进行一次调整 步骤Cl:对于每一台虚拟机Si,根据相应负载队列Qi中的负载数据Lp按如下公式计算出它的负载均值MSi
【文档编号】H04L29/08GK103944997SQ201410178070
【公开日】2014年7月23日 申请日期:2014年4月29日 优先权日:2014年4月29日
【发明者】唐飞龙, 栾志坤, 张健桐, 张杨, 袁博, 过敏意 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1