基于开源框架的软件重构方法与流程

文档序号:11519404阅读:418来源:国知局

本发明涉及云计算,特别涉及一种基于开源框架的软件重构方法。



背景技术:

云计算把it资源、数据、应用以服务的形式通过网络提供给用户,以其部署时间短、风险低、使用方便和可定制等优势在各行业得到了广泛的普及与应用,推动了it产业的升级和电子商务经济的发展。如何快速地创建面向大规模租户的云端应用,实现租户复杂多元的个性化需求是亟待解决的问题。现有的方法大多数集中在云端应用模型的架构方面,对于跨多个云数据中心间的优化部署以及云端应用模型在粒度划分方面尚无有效先例。



技术实现要素:

为解决上述现有技术所存在的问题,本发明提出了一种基于开源框架的软件重构方法,包括:

在完成云端应用的开发并部署运行后,通过负载测试确定其每个组件的最大并发用户数和最大资源消耗量,

通过不同负载下的性能测试来测量每个组件在稳定负载区间内的各种服务质量指标取值和在云环境的vm上的资源消耗量,并确定每个组件及其实例的不同负载下的动态服务质量和资源消耗量;

在应用运行阶段,使用监控工具来获取每个组件实例在每种负载模式下的实际服务质量指标取值和资源消耗量,并通过监控数据来调整每个组件的动态服务质量和云资源消耗量。

优选地,针对特定云端应用,采用邻接矩阵来表示其组件关系图,并根据组件的部署方案,得到划分后的组件关系图的邻接矩阵,表示在vm网络图中各个组件所需的vm之间的通信量。

优选地,在组件优化部署时,引入二维数组来表示云端应用组件关系图的邻接矩阵,对依据部署方案得到的组件关系图的邻接矩阵进行求和,计算出vm网络的通信量;

优选地,将组件优化部署方法的问题模型表示为:

mincost(vm)=p(vmij)

minrt(lvm)=rt(vmij,vmst)

rres(c)<rres(vmij);

其中p(vmij)为虚拟机vmij的价格,rres(vmij)为虚拟机vmij的资源提供量,c为组件集合,lvm为虚拟机之间的通信链路集合,rt(vmij,vmst)为vmij到vmst的通信量;

上述问题模型表示任意vm中所部署的组件的cpu、内存、存储的资源消耗总量不超过该vm的资源提供能力;在满足cost(vm)最低的前提下,选择通信量rt(lvm)最低的组件部署方案。

本发明相比现有技术,具有以下优点:

本发明提出了一种基于开源框架的软件重构方法,实现了跨多个云数据中心间的应用优化部署,并且提高了云端应用的动态服务质量,降低了虚拟机的资源消耗量。

附图说明

图1是根据本发明实施例的基于开源框架的软件重构方法的流程图。

具体实施方式

下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。

本发明的一方面提供了一种基于开源框架的软件重构方法。图1是根据本发明实施例的基于开源框架的软件重构方法流程图。

本发明基于改进的云端应用架构。整体架构包括表现模块、控制模块、应用模块、vm模块、物理模块。表现模块作为云端应用的系统门户为租户提供注册、租用服务,租户通过表现模块发送服务请求。控制模块根据租户的定制需求将租户分配到云端应用中相对应的组件上,租户通过访问特定个或多个组件来实现自身的需求。同时,控制模块对组成云端应用的各个组件进行资源消耗和服务质量指标的监控。根据监控日志,对云端应用的组件数量进行调整。应用模块由一组组件及组件间连接关系组成一个组件化的云端应用,为租户提供服务。组件库提供组成云端应用的组件。vm模块封装了组件独立运行的环境。部署在不同vm中的组件通过vm间的网络进行数据的通信。数据服务器是一类特殊的vm,云端应用的各个组件都操作同一个数据库,该数据库部署在数据服务器上。物理模块的基础设施用于提供vm,vm的来源包括云端应用提供商自身的基础设施,和提供vm租用服务的基础设施提供商。

在该架构下,云端应用提供商首先选择vm来部署云端应用的各个组件;随后当有租户访问时,控制模块用于分配租户访问相应组件,实现租户的需求;云端应用提供商通过监控的情况调整云端应用中组件的数量,即选择vm为负载最高的组件部署多个实例,之后通过控制模块把访问该组件的租户分配到各个相同的实例上,以此提高整个云端应用的性能。

对于以组件化形式组织的云端应用,采用本发明提出的云端应用模型进行描述,其建模方法如下所示。

步骤1:对由多个组件组成的云端应用,依据该云端应用向租户提供的所有可定制功能及功能间的关系,建立该云端应用的功能模型;

步骤2:将功能模型中功能与实现该功能的组件进行映射,确立该云端应用的组件模型,根据确定的功能模型和组件模型,在未有租户进行定制时,建立初始态的云端应用模型;

步骤3:当租户对云端应用进行定制后,根据租户的定制需求,确定每个租户的特征模型,根据租户特征模型中各个特征的含义,对初始态的云端应用模型进行调整,即确定组件模型中各个组件需要部署的实例数量;

步骤4:根据现有租户的特征模型和调整后的组件模型,建立运行态的云端应用模型。

在应用开发阶段,完成云端应用的开发并部署运行后,首先通过负载测试确定其每个组件的最大并发用户数和最大资源消耗量,然后通过不同负载下的性能测试来测量每个组件在稳定负载区间内的各种服务质量指标取值和在云环境的vm上的资源消耗量,并通过对测试数据的分析,确定每个组件及其实例的在不同负载下的动态服务质量和在云设施上的资源消耗量。在应用运行阶段,通过监控工具来获取每个组件实例在每种负载模式下的实际服务质量指标取值和资源消耗量,并通过对监控数据的分析来调整每个组件的动态服务质量和云资源消耗量。

针对特定云端应用,采用邻接矩阵来表示其组件关系图,并根据组件的部署方案,得到划分后的组件关系图的邻接矩阵,此矩阵即表示在vm网络图中各个组件所需的vm之间的通信量。本发明在组件优化部署方法时,引入二维数组来表示云端应用组件关系图的邻接矩阵,对依据部署方案得到的组件关系图的邻接矩阵进行求和,计算出vm网络的通信量。即将组件优化部署方法的问题模型表示为:

其中p(vmij)为虚拟机vmij的价格,rres(vmij)为虚拟机vmij的资源提供量,c为组件集合,lvm为虚拟机之间的通信链路集合,rt(vmij,vmst)为vmij到vmst的通信量。上述问题模型表示任意vm中所部署的组件的cpu、内存、存储的资源消耗总量不超过该vm的资源提供能力;在满足cost(vm)最低的前提下,选择通信量rt(lvm)最低的组件部署方案。

以下采用智能搜索算法对组件优化部署方法进行实现。采用整数方式进行编码,即染色体的每个基因表示一个组件实例,染色体的长度为组件集合c的规模大小,每个基因的取值表示该基因代表的组件实例所部署在的vm实例的编号。然后进行初始化:

步骤1:针对组件关系图,根据其组件集合的大小确定染色体的长度;

步骤2:对染色体的每个基因,在满足组件部署问题的资源约束条件下,随机一个vm实例的编号作为该基因的取值,并记录该编号的vm实例所属的vm类型;

步骤3:随机产生染色体的校验序列,即染色体上基因校验的顺序;

步骤4:按校验的顺序判断染色体上的基因所代表的组件实例能否部署在该基因取值所代表的vm实例上。满足组件部署资源约束条件,执行步骤7,否则执行步骤5;

步骤5:在所有基因对应的全部vm实例编号中,为该基因随机一个新的取值,如果该基因代表的组件实例能部署在新的取值所代表的vm实例上,执行步骤7,否则执行步骤6;

步骤6:为该基因分配一个未使用的vm实例,在已使用的全部vm实例编号之外,给该基因一个新的取值,并记录该取值所代表vm实例的类型。

步骤7:判断染色体校验是否结束,如果未结束,回到步骤4,否则,校验结束,计算该随机方案下所使用vm实例的总成本和vm实例间的通信量并记录。

对染色体中的基因进行遗传操作。包括染色体选择、基因重组、染色体变异、染色体修复,其具体步骤如下:

从当前种群中任选两条染色体作为父染色体;

对这两个父染色体,随机产生两个数字i和j作为重组的起始位置和重组部分的长度。

交换两个父染色体重组部分对应位置的基因取值,产生两个新的子染色体。

在产生的当前子染色体中,随机选择变异的基因,删除该基因的取值。在所有基因对应的全部vm实例编号中,为该基因搜索一个新的取值;如果搜索不到这样的vm编号,为该基因分配一个未使用的vm实例,在已使用的全部vm实例编号之外,给该基因一个新的取值,并记录该取值所代表的vm实例的vm类型。

对产生的所有子染色体上的每个基因所代表的组件实例ci,获取该基因的取值即vm编号j,检验vmj的资源提供量是否满足部署在该vm上的所有组件资源消耗总量,如果不满足条件,将组件实例ci从vmj中取出,即代表组件实例ci的基因取值变为空,并从vmj减掉组件实例ci的资源消耗量;

对染色体上取值为空的每个基因所代表的组件实例ci,若存在某个组件实例ck,与ci为相同类型组件并且ck所在的vm实例上还能部署ci,则将ci部署到该vm实例上。否则把ci部署到能够满足其部署约束条件的vm实例上。

输入组件关系图g=(c,e),vm类型集合,每个组件的资源消耗量,每种类型vm的资源提供量。通过以下过程得到组件部署方案,vm的最低总成本cost(vm),组件部署方案在最低总成本下的最低通信量rt(lvm):

步骤1:设定方法的参数,包括种群大小,遗传操作进化代数,选择操作概率,变异操作概率;

步骤2:通过解的初始化,对种群中的每个染色体完成初始化和校验,并计算每条染色体所代表部署方案的总成本、通信量及成本适应度;

步骤3:将当前种群按照成本适应度排序,从中选择成本适应度函数值最低的染色体放入新种群里;

步骤4:通过遗传操作,对当前种群中的染色体进行选择、重组、变异、修复操作,计算产生的新染色体所代表部署方案的总成本、通信量及成本适应度,并将其放入新种群中;

步骤5:选择成本适应度最好的染色体作为近似最优解,根据该染色体计算得到所使用的vm实例的编号和每种类型vm实例的数量。若存在多个成本适应度最好的染色体,则选择通信量最低的染色体作为最优解;

步骤6:根据选出的染色体最优解确定了所用vm实例的编号和所使用的vm实例的类型和每种类型的数量。随机选取染色体最优解的i个基因,在满足组件部署问题的资源约束条件下,对选取的每个基因,在已用的全部vm实例编号中搜索一个新值,即将选取的每个基因对应的组件实例从其已部署到的vm实例中取出,在已用的全部vm实例中选择另外一个可以部署该组件实例的vm实例进行部署,并记录调整后的染色体的通信量。

综上所述,本发明提出了一种基于开源框架的软件重构方法,实现了跨多个云数据中心间的应用优化部署,并且提高了云端应用的动态服务质量,降低了虚拟机的资源消耗量。

显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1