《PAAS平台中实现负载分配的方法和装置.pdf》由会员分享,可在线阅读,更多相关《PAAS平台中实现负载分配的方法和装置.pdf(12页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201410705985.8(22)申请日 2014.11.27H04L 29/08(2006.01)(71)申请人中国联合网络通信集团有限公司地址 100033 北京市西城区金融大街21号(72)发明人雷磊 王志军 房秉毅(74)专利代理机构北京安信方达知识产权代理有限公司 11262代理人白莹 栗若木(54) 发明名称PaaS平台中实现负载分配的方法和装置(57) 摘要本发明提供了一种PaaS平台中实现负载分配的方法和装置,包括:预先设置亲和度和负载阀值;若当前应用依赖于外部服务,获取当前应用对PaaS平台中所有承载节点的亲和度,将满。
2、足预设第一条件的亲和度对应的承载节点作为目标承载节点;如果目标承载节点的负载超过负载阀值,获取目标承载节点上所有应用对目标承载节点的亲和度,并获取小于当前应用对目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹对应的应用进行迁移,并在迁移完成后,将当前应用部署在目标承载节点上。本发明保障了应用性能且实现了负载均衡。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书6页 附图3页(10)申请公布号 CN 104468756 A(43)申请公布日 2015.03.25CN 104468756 A1/2页21.一种PaaS平台中实现负载。
3、分配的方法,其特征在于,包括:预先设置应用对承载节点的亲和度和承载节点的负载阀值;若当前应用依赖于外部服务,获取当前应用对PaaS平台中所有承载节点的亲和度,将满足预设第一条件的亲和度对应的承载节点作为目标承载节点;如果所述目标承载节点的负载超过负载阀值,获取所述目标承载节点上所有应用对所述目标承载节点的亲和度,并获取小于所述当前应用对所述目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹对应的应用作为待迁移应用,在所述待迁移应用迁移完成后,将所述当前应用部署在所述目标承载节点上。2.根据权利要求1所述的方法,其特征在于,所述亲和度计算公式为:(app,node)MIN(bw(S。
4、Ni(app),node) i1, k;其中,(app,node)表示亲和度,app为应用,node为承载节点,如果应用没有外部服务,(app,node)0;如果应用依赖于k个外部服务,SNi(app)表示应用所依赖的第i个外部服务节点;bw(SNi(app),node)表示第i个外部服务节点到PaaS平台中承载节点的带宽,当第i个外部服务节点到PaaS平台中承载节点之间没有网络链路时,bw(SNi(app),node)0。3.根据权利要求1或2所述的方法,其特征在于,所述将满足预设第一条件的亲和度对应的承载节点作为目标承载节点之后,还包括:如果所述目标承载节点上所有应用对所述目标承载节点的亲。
5、和度都大于或等于所述当前应用对目标承载节点亲和度,则结束本流程。4.根据权利要求1或2所述的方法,其特征在于,所述将满足预设第一条件的亲和度对应的承载节点作为目标承载节点包括:将亲和度最大值对应的承载节点作为目标承载节点;所述将亲和度最大值对应的承载节点作为目标承载节点之后,还包括:如果所述目标承载节点的负载没有超过负载阀值,将所述当前应用部署在所述目标承载节点上,结束本流程。5.根据权利要求4所述的方法,其特征在于,所述将满足预设第二条件的应用痕迹对应的应用作为待迁移应用包括:将应用痕迹最小值对应的应用作为待迁移应用;所述将应用痕迹最小值对应的应用作为待迁移应用之后,还包括:如果所述待迁移应。
6、用对所述目标承载节点的亲和度不为零,则获取所述待迁移应用对PaaS平台中其他承载节点的亲和度,将亲和度最大值对应的承载节点作为所述待迁移应用的目标承载节点;如果所述待迁移应用对所述目标承载节点的亲和度为零,则获取同一自治域中其他承载节点的负载,将负载最小值对应的承载节点作为所述待迁移应用的目标承载节点。6.一种PaaS平台中实现负载分配的装置,其特征在于,包括:设置模块,用于预先设置应用对承载节点的亲和度和承载节点的负载阀值;获取模块,用于若当前应用依赖于外部服务,获取所述当前应用对PaaS平台中所有承载节点的亲和度,将满足预设第一条件的亲和度对应的承载节点作为目标承载节点;判断模块,用于判断。
7、所述目标承载节点的负载是否超过负载阀值;如果超过,触发所述获取模块获取所述目标承载节点上所有应用对所述目标承载节点的亲和度,并获取小于所权 利 要 求 书CN 104468756 A2/2页3述当前应用对所述目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹对应的应用作为待迁移应用;迁移模块,用于从所述目标承载节点上迁移出所述待迁移应用;部署模块,用于在所述迁移模块对所述待迁移应用迁移完成后,将所述当前应用部署在所述目标承载节点上。7.根据权利要求6所述的装置,其特征在于,所述亲和度计算公式为:(app,node)MIN(bw(SNi(app),node) i1, k;其中,(a。
8、pp,node)表示亲和度,app为应用,node为承载节点,如果应用没有外部服务,(app,node)0;如果应用依赖于k个外部服务,SNi(app)表示应用所依赖的第i个外部服务节点;bw(SNi(app),node)表示第i个外部服务节点到PaaS平台中承载节点的带宽,当第i个外部服务节点到PaaS平台中承载节点之间没有网络链路时,bw(SNi(app),node)0。8.根据权利要求6或7所述的装置,其特征在于,还包括:比较模块,用于比较所述当前应用对目标承载节点的亲和度和所述目标承载节点上所有应用对所述目标承载节点的亲和度;如果所述目标承载节点上所有应用对所述目标承载节点的亲和度都大。
9、于或等于所述当前应用对目标承载节点亲和度,则结束配置应用。9.根据权利要求6或7所述的装置,其特征在于,所述判断模块,还用于如果所述目标承载节点的负载没有超过负载阀值,触发部署模块将所述当前应用部署在所述目标承载节点上。10.根据权利要求9所述的装置,其特征在于,所述获取模块,还用于如果所述待迁移应用对所述目标承载节点的亲和度不为零,则获取所述待迁移应用对PaaS平台中其他承载节点的亲和度,将亲和度最大值对应的承载节点作为所述待迁移应用的目标承载节点;如果所述待迁移应用对所述目标承载节点的亲和度为零,则获取同一自治域中其他承载节点的负载,将负载最小值对应的承载节点作为所述待迁移应用的目标承载节。
10、点。权 利 要 求 书CN 104468756 A1/6页4PaaS 平台中实现负载分配的方法和装置技术领域0001 本发明涉及数据传输技术领域,尤其涉及一种平台即服务(PaaS,Platform-as-a-Service)平台中实现负载分配的方法和装置。背景技术0002 随着电信市场竞争的激烈,运营商纷纷拓展新业务,云计算是拓展的新业务之一,其中,PaaS是面向开发者服务,提供弹性伸缩的中间件服务和应用部署的平台。近年来,基于轻量级Linux容器构建PaaS平台逐渐成为主流,如开源平台Cloud Foundry和Red Hat公司的OpenShift均采用这种方式。Linux容器可以很好地封。
11、装各种中间件系统和用户的应用,用户不需要再搭建消息中间件、数据库、应用容器等中间件系统,只需要简单的需求文件中说明,PaaS平台就会自动为之适配。因此,PaaS平台集合众多底层平台、中间件和应用开发工具,转变传统一对一的产品交付方式为云端分享型的服务交付方式,从而为企业传统IT和应用开发者把整个开发、部署与客户服务的生命周期搬到云上创造了条件。0003 PaaS平台一般将资源池划分为多个区域,称为不同的自治域(AZ,Availablity Zone)。在现有技术中,为了实现资源利用的负载均衡,当用户部署请求服务资源时,通常采用基于Round Robin的随机算法选择一个AZ,并从该AZ中选择一。
12、个承载节点承载。假设用户的应用负载大致相当,则随机算法能够取得较好的负载均衡。0004 出于数据安全的考虑,很多用户并不愿意把敏感数据托管到云端,而仅仅将数据处理和展现的业务逻辑封装成应用托管到云端,而包含敏感数据的数据库依旧由用户独立维护,当云端应用需要访问数据库时,需要通过数据库的远程接口远端调用用户数据库的数据访问接口。0005 这种处理逻辑在云端,而数据源在用户本地的应用模式,由于用户经常访问可能会引起应用到某些AZ或者承载节点的倾向性。但是,基于Round Robin的随机算法的基本假设是应用部署到任何AZ的任何承载节点均是无差异的,因此,现有的处理逻辑在云端,数据源在用户本地的应用。
13、模式将使基于Round Robin的随机算法失效,从而无法实现应用的优化部署。发明内容0006 为了解决上述技术问题,本发明提供了一种PaaS平台中实现负载分配的方法和装置,能够保障应用的性能且实现PaaS平台中节点的负载均衡。0007 为了达到本发明目的,本发明提供了一种PaaS平台中实现负载分配的方法,包括:预先设置应用对承载节点的亲和度和承载节点的负载阀值;若当前应用依赖于外部服务,获取当前应用对PaaS平台中所有承载节点的亲和度,将满足预设第一条件的亲和度对应的承载节点作为目标承载节点;如果所述目标承载节点的负载超过负载阀值,获取所述目标承载节点上所有应用对所述目标承载节点的亲和度,并。
14、获取小于所述当前应用对所述目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹对应的应用作为说 明 书CN 104468756 A2/6页5待迁移应用,在所述待迁移应用迁移完成后,将所述当前应用部署在所述目标承载节点上。0008 进一步地,所述亲和度计算公式为:(app,node)MIN(bw(SNi(app),node) i1,k;其中,(app,node)表示亲和度,app为应用,node为承载节点,如果应用没有外部服务,(app,node)0;如果应用依赖于k个外部服务,SNi(app)表示应用所依赖的第i个外部服务节点;bw(SNi(app),node)表示第i个外部服务节。
15、点到PaaS平台中承载节点的带宽,当第i个外部服务节点到PaaS平台中承载节点之间没有网络链路时,bw(SNi(app),node)0。0009 进一步地,所述将满足预设第一条件的亲和度对应的承载节点作为目标承载节点之后,还包括:如果所述目标承载节点上所有应用对所述目标承载节点的亲和度都大于或等于所述当前应用对目标承载节点亲和度,则结束本流程。0010 进一步地,所述将满足预设第一条件的亲和度对应的承载节点作为目标承载节点包括:将亲和度最大值对应的承载节点作为目标承载节点;所述将亲和度最大值对应的承载节点作为目标承载节点之后,还包括:如果所述目标承载节点的负载没有超过负载阀值,将所述当前应用部。
16、署在所述目标承载节点上,结束本流程。0011 进一步地,所述将满足预设第二条件的应用痕迹对应的应用作为待迁移应用包括:将应用痕迹最小值对应的应用作为待迁移应用;所述将应用痕迹最小值对应的应用作为待迁移应用之后,还包括:如果所述待迁移应用对所述目标承载节点的亲和度不为零,则获取所述待迁移应用对PaaS平台中其他承载节点的亲和度,将亲和度最大值对应的承载节点作为所述待迁移应用的目标承载节点;如果所述待迁移应用对所述目标承载节点的亲和度为零,则获取同一自治域中其他承载节点的负载,将负载最小值对应的承载节点作为所述待迁移应用的目标承载节点。0012 一种PaaS平台中实现负载分配的装置,包括:设置模块。
17、,用于预先设置应用对承载节点的亲和度和承载节点的负载阀值;获取模块,用于若当前应用依赖于外部服务,获取所述当前应用对PaaS平台中所有承载节点的亲和度,将满足预设第一条件的亲和度对应的承载节点作为目标承载节点;判断模块,用于判断所述目标承载节点的负载是否超过负载阀值;如果超过,触发所述获取模块获取所述目标承载节点上所有应用对所述目标承载节点的亲和度,并获取小于所述当前应用对所述目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹对应的应用作为待迁移应用;迁移模块,用于从所述目标承载节点上迁移出所述待迁移应用;部署模块,用于在所述迁移模块对所述待迁移应用迁移完成后,将所述当前应用部署。
18、在所述目标承载节点上。0013 进一步地,所述亲和度计算公式为:(app,node)MIN(bw(SNi(app),node)i1, k;其中,(app,node)表示亲和度,app为应用,node为承载节点,如果应用没有外部服务,(app,node)0;如果应用依赖于k个外部服务,SNi(app)表示应用所依赖的第i个外部服务节点;bw(SNi(app),node)表示第i个外部服务节点到PaaS平台中承载节点的带宽,当第i个外部服务节点到PaaS平台中承载节点之间没有网络链路时,bw(SNi(app),node)0。0014 进一步地,所述判断模块,还用于如果所述目标承载节点的负载没有超过。
19、负载阀值,触发部署模块将所述当前应用部署在所述目标承载节点上。0015 进一步地,所述获取模块,还用于如果所述待迁移应用对所述目标承载节点的亲说 明 书CN 104468756 A3/6页6和度不为零,则获取所述待迁移应用对PaaS平台中其他承载节点的亲和度,将亲和度最大值对应的承载节点作为所述待迁移应用的目标承载节点;如果所述待迁移应用对所述目标承载节点的亲和度为零,则获取同一自治域中其他承载节点的负载,将负载最小值对应的承载节点作为所述待迁移应用的目标承载节点。0016 与现有技术相比,本发明包括:预先设置应用对承载节点的亲和度和承载节点的负载阀值;若当前应用依赖于外部服务,获取当前应用对。
20、PaaS平台中所有承载节点的亲和度,将满足预设第一条件的亲和度对应的承载节点作为目标承载节点;如果所述目标承载节点的负载超过负载阀值,获取所述目标承载节点上所有应用对所述目标承载节点的亲和度,并获取小于所述当前应用对所述目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹对应的应用作为待迁移应用,在所述待迁移应用迁移完成后,将所述当前应用部署在所述目标承载节点上。本发明通过预先设置应用对PaaS平台中承载节点的亲和度,若当前应用依赖于外部服务时,选取当前应用对PaaS平台中亲和度最大值对应的承载节点作为目标承载节点,解决了应用对承载节点具有亲和度而导致的随机算法失效的问题。此外,根。
21、据选取的目标承载节点的负载情况来进行当前应用的部署,也解决针对亲和度的调度算法中带来的应用聚集的问题,使得应用性能保障和节点负载均衡之间取得了较好的平衡。附图说明0017 图1是本发明PaaS平台的架构示意图。0018 图2是本发明PaaS平台中实现负载分配的方法的流程示意图。0019 图3是本发明PaaS平台中实现负载分配的装置的结构示意图。具体实施方式0020 下面结合附图对本发明进行进一步的详细说明。通过足够详细的描述这些实施示例,使得本领域技术人员能够实践本发明。在不脱离本发明的主旨和范围的情况下,可以对实施做出逻辑的、实现的和其他的改变。0021 图1是本发明PaaS平台的架构示意图。
22、,如图1所示,在PaaS平台中,将资源池划分为多个区域,该多个区域称为不同的自治域(AZ,Availablity Zone),因此,同一AZ内部的网络连通性相对较好,AZ之间的网络连通性相对较差。每个AZ由若干的承载节点(Node)组成,每个承载节点基于轻量级Linux容器提供表中的中间件服务和应用容器服务等,以满足用户将应用部署到应用承载节点上。此外,承载节点还运行底层服务S,为用户提供底层数据库数据。0022 图2是本发明PaaS平台中实现负载分配的方法的流程示意图,如图2所示,具体包括:0023 步骤21,预先设置应用对承载节点的亲和度。0024 在本步骤中,亲和度(Afnity),用于。
23、反映应用app对承载节点node的倾向性指标,采用应用所有依赖的外部服务节点到PaaS平台中承载节点的带宽的最小值度量,用( app,node)表示亲和度,其中app为应用,node为承载节点;如果应用依赖于k个外部服务,SNi(app)表示应用所依赖的第i个外部服务节点,则(app,node)定义为:说 明 书CN 104468756 A4/6页70025 (app,node)MIN(bw(SNi(app),node) i1, k;0026 其中,bw(SNi(app),node)表示第i个外部服务节点到PaaS平台中承载节点的带宽;0027 当第i个外部服务节点SNi(app)到node之。
24、间没有网络链路时,bw(SNi(app),node)0;0028 当应用没有外部服务时,(app,node)0。0029 亲和度是每个应用针对节点的属性。0030 步骤22,若当前应用依赖于外部服务,获取当前应用对PaaS平台中所有承载节点的亲和度,将满足预设第一条件的亲和度对应的承载节点作为目标承载节点。0031 在本步骤中,若当前应用依赖于外部服务,如用户在本地自建的数据库,就要选取和外部服务节点之间连接性最好的节点作为部署当前应用的目标承载节点。0032 应用对PaaS平台中承载节点的亲和度是应用所有依赖的外部服务节点到PaaS平台中承载节点的带宽的最小值,对PaaS平台中每个自治域的每。
25、个节点进行遍历,找到满足预设第一条件的亲和度对应的承载节点,具体地,为亲和度最大值对应的承载节点作为目标承载节点,即到所有外部服务节点的带宽的最小值最大化的承载节点作为目标承载节点。0033 如果亲和度有多个最大的相同值,则随机选取一个亲和度最大值对应的承载节点作为目标承载节点。0034 步骤23,判断目标承载节点的负载是否超过负载阀值,如果是,进入步骤24,如果否,进入步骤25。0035 在本步骤之前,预先设置承载节点的负载阀值,负载阀值是节点的自身属性。0036 在本步骤中,由于某些AZ或者某些AZ的承载节点的网络连接情况较好,很多需要外部服务的应用都会选择这些承载节点进行部署,导致这些承。
26、载节点具有聚集效应,造成负载不均使得这些承载节点负载较高。当目标承载节点的负载超过预设的负载阀值,如果当前应用要部署在目标承载节点,则需要迁移在目标承载节点上的低亲和度的应用。0037 步骤24,获取该目标承载节点上所有应用对该目标承载节点的亲和度,并获取小于当前应用对该目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹对应的应用作为待迁移应用,在该待迁移应用迁移完成后,进入步骤25。0038 在本步骤中,如果目标承载节点的负载超过负载阀值,为了降低迁移的代价,首先会选取小于当前应用对该目标承载节点亲和度的应用,然后再根据这些低亲和度应用的应用痕迹来确定需要迁移的应用,其中,应用。
27、痕迹表示每个应用都会在承载节点上使用一些本地空间来存储特定配置和中间结果,这些本地空间的大小定义为应用在这个承载节点上的应用痕迹,用footprint(app,node)表示。0039 具体地,如果目标承载节点的负载超过负载阀值,获取该目标承载节点上所有应用对该目标承载节点的亲和度,选取小于当前应用对该目标承载节点亲和度的应用;获取小于当前应用对该目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹,具体地,将应用痕迹最小值对应的应用作为待迁移应用。如果应用痕迹有多个相同的最小值,则随机选取一个应用痕迹最小值对应的应用作为待迁移应用。如果目标承载节点上所有应用对该目标承载节点的亲和。
28、度都大于或等于当前应用对该目标承载节点亲和度,则说 明 书CN 104468756 A5/6页8当前应用无法部署到目标承载节点上,结束本流程。0040 如果待迁移应用对目标承载节点的亲和度不为零,即也需要外部服务,则获取待迁移应用对PaaS平台中其他承载节点的亲和度,将亲和度最大值对应的承载节点作为该待迁移应用的目标承载节点。0041 如果待迁移应用对目标承载节点的亲和度为零,即不需要外部服务,则获取同一AZ中其他承载节点的负载,将负载最小值对应的承载节点作为该待迁移应用的目标承载节点。0042 步骤25,将当前应用部署在目标承载节点上。0043 在本步骤中,如果目标承载节点的负载没有超过负载。
29、阀值,则可以直接将当前应用部署在目标承载节点上;如果目标承载节点的负载超过预设值,则在选取的迁移应用迁移完成后,将当前应用部署在目标承载节点上。0044 本发明通过预先设置应用对PaaS平台中承载节点的亲和度,若当前应用依赖于外部服务时,选取当前应用对PaaS平台中亲和度最大值对应的承载节点作为目标承载节点,解决了应用对承载节点具有亲和度而导致的随机算法失效的问题。此外,根据选取的目标承载节点的负载情况来进行当前应用的部署,也解决针对亲和度的调度算法中带来的应用聚集的问题,使得应用性能保障和节点负载均衡之间取得了较好的平衡。0045 图3是本发明PaaS平台中实现负载分配的装置的结构示意图,如。
30、图3所示,具体可以包括:0046 设置模块,用于预先设置应用对承载节点的亲和度,以及预先设置承载节点的负载阀值。0047 获取模块,用于若当前应用依赖于外部服务,获取当前应用对PaaS平台中所有承载节点的亲和度,将满足预设第一条件的亲和度对应的承载节点作为目标承载节点。0048 判断模块,用于判断目标承载节点的负载是否超过负载阀值,如果是,触发获取模块获取该目标承载节点上所有应用对该目标承载节点的亲和度,并获取小于当前应用对该目标承载节点亲和度的应用的应用痕迹,将满足预设第二条件的应用痕迹对应的应用作为待迁移应用。0049 迁移模块,用于对待迁移应用进行迁移。0050 部署模块,用于在判断模块。
31、判断出目标承载节点的负载没有超过负载阀值,或者,将迁移模块对待迁移应用迁移完成后,将当前应用部署在目标承载节点上。0051 该装置还包括:比较模块,用于比较当前应用对目标承载节点的亲和度和目标承载节点上所有应用对目标承载节点的亲和度;如果目标承载节点上所有应用对目标承载节点的亲和度都大于或等于当前应用对目标承载节点亲和度,则当前应用不能部署到目标承载节点上,结束本流程;如果在目标承载节点上所有应用对目标承载节点的亲和度中有存在小于当前应用对目标承载节点的亲和度,触发判断模块进行目标承载节点的负载是否超过负载阀值的判断。0052 判断模块,还用于如果目标承载节点的负载没有超过负载阀值,触发部署模。
32、块将当前应用部署在目标承载节点上。0053 获取模块,还用于如果待迁移应用对目标承载节点的亲和度不为零,则获取待迁移应用对PaaS平台中其他承载节点的亲和度,将亲和度最大值对应的承载节点作为待迁说 明 书CN 104468756 A6/6页9移应用的目标承载节点;如果待迁移应用对目标承载节点的亲和度为零,则获取同一自治域中其他承载节点的负载,将负载最小值对应的承载节点作为待迁移应用的目标承载节点。0054 本发明PaaS平台中实现负载分配的装置是和PaaS平台中实现负载分配的方法对应的,因此,本发明PaaS平台中实现负载分配的装置具体的实现细节可参看PaaS平台中实现负载分配的方法,在此不赘述。
33、。0055 本发明通过预先设置应用对PaaS平台中承载节点的亲和度,若当前应用依赖于外部服务时,选取当前应用对PaaS平台中亲和度最大值对应的承载节点作为目标承载节点,解决了应用对承载节点具有亲和度而导致的随机算法失效的问题。此外,根据选取的目标承载节点的负载情况来进行当前应用的部署,也解决针对亲和度的调度算法中带来的应用聚集的问题,使得应用性能保障和节点负载均衡之间取得了较好的平衡。0056 应当理解,上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用于限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。说 明 书CN 104468756 A1/3页10图1说 明 书 附 图CN 104468756 A10。