首页> 中国专利> 复杂约束条件下多组件软件部署的自动化与自适应方法及其部署管理系统

复杂约束条件下多组件软件部署的自动化与自适应方法及其部署管理系统

摘要

本发明公开了一种复杂约束条件下多组件软件部署的自动化与自适应方法及其部署管理系统,属于计算机软件部署和维护技术领域。首先使用部署描述语言描述多组件软件的部署需求及其部署约束条件,然后通过使用设备状态信息探测器、约束求解器和自动部署器,部署管理系统能够根据部署需求和实时探测到的设备状态信息,通过调用约束求解器,自动地、动态地生成满足约束条件的部署计划,并自动执行部署活动,从而实现对复杂约束条件下多组件软件部署的自动化和自适应支持,同时软件部署的效率高、成本低、质量好。

著录项

  • 公开/公告号CN104298525A

    专利类型发明专利

  • 公开/公告日2015-01-21

    原文格式PDF

  • 申请/专利权人 南京航空航天大学;

    申请/专利号CN201410500293.X

  • 发明设计人 陈哲;朱云龙;黄志球;魏欧;

    申请日2014-09-25

  • 分类号G06F9/445(20060101);

  • 代理机构南京瑞弘专利商标事务所(普通合伙);

  • 代理人杨晓玲

  • 地址 210016 江苏省南京市秦淮区御道街29号

  • 入库时间 2023-12-17 04:06:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-31

    授权

    授权

  • 2015-02-18

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20140925

    实质审查的生效

  • 2015-01-21

    公开

    公开

说明书

技术领域

本发明涉及一种多组件软件部署的自动化与自适应方法及其部署管理系统,属于计算机软件部署和维护技术领域。

背景技术

软件部署是指在软件开发完成后保证软件可用并正常运行的过程,包括安装、配置、激活、升级、停止、卸载等一系列活动。多组件软件的部署过程可以分为两个阶段:部署设计和部署执行。部署设计人员通过分析软件组件的部署需求和所有可用部署设备的信息,提出一个可行的部署计划,而部署计划本质上表达的是软件组件和部署设备之间的部署映射关系,这个映射关系能满足所有的软件部署需求。部署执行人员在得到部署计划之后,就可以在每一个设备上部署相应的软件组件。

近年来,随着计算设备的多样化和网络化,部署在这些设备上的多组件软件的体系结构和设计要求变得越来越复杂化,多组件软件的部署需求通常包含复杂的部署约束条件,而部署计划必须满足这些复杂的约束条件。例如,在普适计算环境下,由于使用了大量的不同类型、不同计算能力且网络化的计算设备进行协同工作,使得应用软件往往具有复杂的体系结构和设计要求,进而产生复杂的部署约束条件;在云计算环境下,由于系统将大量异构的、分布式的计算设备或存储资源作为一个整体进行管理,使得系统管理软件同样具有复杂的体系结构和设计要求,进而产生复杂的部署约束条件。此外,在这些软件的运行过程中,设备的失效、设备离开或加入一个网络,都可能导致原有部署计划的失效,使得设计人员必须对部署计划进行动态调整。

这些新情况使得软件部署变得具有挑战性。一方面,由于多组件软件的部署约束条件的复杂性,生成正确的部署计划是非常困难的,尤其是由人工对部署约束条件进行分析,从而生成部署计划的时候,得到的部署计划往往包含考虑不全面和错误的情况。另一方面,多组件软件系统的部署计划可能是动态变化的,例如,可能需要根据应用环境的变化而动态地添加或删除某设备上所部署的组件,网络结构的变化可能导致原有部署计划的失效等等,所以部署计划也应该相应地做出动态调整,并被及时执行,以保证软件的正确运行。因此,复杂的部署约束条件和动态变化的部署计划使得多组件软件的部署成为一项非常复杂而具有挑战性的工作。

目前,已有许多不同的软件部署方法和工具被应用到多组件软件的部署工作中,这些工具主要可以分为两类:手动部署和自动化部署。

手动部署是指:部署设计人员通过人工分析软件组件的部署需求和部署设备信息,生成部署计划,然后将部署计划输入部署工具中,最后部署工具根据部署计划完成软件的安装等相关活动。其优点在于,人工分析过程可以适用于任意的软件系统和部署需求,适用性强。其缺点在于:对于复杂约束条件下大规模多组件软件系统的部署工作,(1)部署设计人员和执行人员需要手动分析和管理各项部署活动,很可能会超出普通技术人员的能力范围;(2)部署约束条件的复杂性使得手动分析的成本大幅度增加,而且非常容易出错,甚至难以完成;(3)部署计划的动态变化使得手动管理的成本大幅度增加,部署计划的调整可能不及时,而且非常容易出错。

自动化部署是指:依据部署设备运行的网络环境,部署工具利用特定的协议获取部署设备信息,然后在人工辅助下生成部署计划,最后部署工具根据部署计划自动完成软件的安装等相关活动。其优点在于,自动化部署可以利用特定的协议自动完成部署设备信息的获取,自动管理部署设备,并自动执行部署计划,一定程度上减少了人力成本。其缺点在于:(1)只能适用于特定的网络环境,不具有普适性;(2)只能处理较简单的部署需求,对于用户自定义的复杂部署约束条件的分析仍然依赖于人工,使得分析成本较高,而且非常容易出错,甚至难以完成;(3)没有考虑到网络环境中设备失效、设备离开或新设备加入等情况导致的部署计划的动态变化,不能实现部署的自适应。

因此,有必要提供一种新的软件部署的方法和技术,以实现对复杂约束条件下多组件软件部署的支持,尽量减少人工的参与,保证部署过程的自动化和自适应,从而克服现有软件部署方法和工具中存在的技术问题。

发明内容

发明目的:为了克服现有技术中存在的不足,本发明提供一种复杂约束条件下多组件软件部署的自动化与自适应方法,通过引入部署描述语言、设备状态信息探测器、约束求解器和自动部署器等模块,使得设计人员可以方便而准确地描述多组件软件的部署需求及其部署约束条件,然后部署管理系统可以根据部署需求和实时探测到的设备状态信息,通过调用约束求解器,自动地、动态地生成满足约束条件的部署计划,并自动执行部署活动,从而实现对复杂约束条件下多组件软件部署的自动化和自适应支持,克服现有软件部署方法和工具中存在的技术问题。

为实现上述目的,本发明采用的技术方案为:一种复杂约束条件下多组件软件部署的自动化与自适应方法,首先使用部署描述语言描述多组件软件的部署需求及其部署约束条件,然后通过使用设备状态信息探测器、约束求解器和自动部署器,部署管理系统能够根据部署需求和实时探测到的设备状态信息,通过调用约束求解器,自动地、动态地生成满足约束条件的部署计划,并自动执行部署活动,从而实现对复杂约束条件下多组件软件部署的自动化和自适应支持,

所述部署描述语言,用于以代码的形式来描述软件部署需求中涉及到的主要元素,包括:软件组件、部署约束、设备状态信息探测器、各软件组件必须满足的部署约束列表。通过实现该部署描述语言的语言解析器,可以从部署描述代码中解析获得组件列表、约束列表、探测器列表、组件约束矩阵等。

本发明的基本思想包括:步骤1、定义部署描述语言,以实现对软件系统的部署需求的准确描述;2、使用部署描述语言对软件系统包含的组件、部署约束和探测器进行描述;3、利用部署描述语言的语言解析器从部署需求的描述代码中获取组件列表、约束列表和探测器列表;4、将探测器部署到部署目标设备上,运行并实时获取设备的状态信息;5、利用约束求解器基于设备的状态信息对部署约束进行自动求解;6、根据约束求解器的求解结果,生成相应的部署计划;7、根据部署计划,自动部署器自动完成软件系统组件的下载、安装等部署活动;8、在软件运行过程中,当设备状态发生变化时,需要进行部署调整时,重新执行步骤4-7。

利用该部署描述语言及其语言解析器,本发明采用的技术方案包括以下步骤:

第1步:在所有可用设备上安装部署管理系统的客户端,所述客户端包括设备状态信息探测器和自动部署器;所述客户端用于获取指定位置的软件、运行获取的软件并获取信息以及与服务器端通信;同时在主控服务器上安装部署管理系统的服务器端,所述服务器端包括约束求解器,所述服务器端用于解析部署描述代码、生成部署计划以及与客户端通信;

第2步:对待部署的多组件软件系统进行结构和部署需求分析,得到多组件软件系统的部署需求,使用部署描述语言以代码的形式对该部署需求进行描述;

第3步:利用部署描述语言的语言解析器对第2步得到的部署描述语言的描述内容进行解析,得到组件列表、约束列表、探测器列表,所述约束包括独立约束和关联约束;由组件列表和约束列表中用到的独立约束获得组件约束矩阵MCom;通过分析约束列表中用到的独立约束的内容,获取需要使用的探测器列表;

第4步:部署管理系统的服务器端将需要使用的探测器列表发送给所有已连接设备的客户端,各个设备利用部署管理系统的客户端,实时获取设备的状态信息,并将这些信息发送给服务器端;

第5步:部署管理系统的服务器端接收客户端发送的设备状态信息,并存储为状态信息表MInfo,然后计算各个设备满足独立约束的情况,并存储为设备约束矩阵MDev;

第6步:根据组件约束矩阵MCom和设备约束矩阵MDev的值,将独立约束和关联约束分别转化为命题逻辑表达式或者其他表达能力更强的高级逻辑表达式,并用合取连词∧连接,作为待求解逻辑表达式;

第7步:利用约束求解器对第6步得到的待求解逻辑表达式进行可满足性求解,根据约束求解器的输出,如果该逻辑表达式可满足,则得到一个求解结果;如果该逻辑表达式不可满足,则表示“该部署需求的约束条件不可满足”,转至第2步重新设计部署需求;

第8步:将约束求解器的求解结果转换为对应的部署计划;

第9步:部署管理系统的服务器端将第3步得到的组件列表和第8步得到的部署计划发送给所有客户端,然后客户端根据部署计划和组件列表中给出的信息,自动完成对应组件的下载、安装、配置、激活部署活动;

第10步:在软件的运行过程中,服务器端对客户端的状态进行实时监控,当设备状态发生变化时,如果需要调整部署计划,则重新执行第4步至第9步。

所述第2步中的部署描述语言的描述内容包括:对多组件软件系统中各个组件的定义、对各个部署约束条件的定义、对各个设备状态信息探测程序的定义、对各软件组件必须满足的部署约束列表的定义。

所述第3步中对第2步得到的部署描述语言的描述内容进行解析的方法包括:根据多组件软件系统中各个组件的定义,得到组件列表,其中组件个数为x个;根据各个部署约束条件的定义,得到约束列表,所述约束包括独立约束和关联约束;根据各个设备状态信息探测程序的定义,得到探测器列表;最后对部署需求代码区进行解析,按独立约束被使用的顺序对用到的独立约束依次编号,其中包含z个独立约束;根据各软件组件必须满足的部署约束列表的定义,由组件列表和用到的独立约束获得组件约束矩阵MCom;所述组件约束矩阵MCom是一个x×z大小的布尔类型矩阵,用于记录部署描述代码中组件和需要满足的独立约束之间的对应关系,其中,x为组件列表中组件的个数,z为独立约束的个数;如果第i行第j列的元素为1,则表示第i个组件必须满足第j个约束,如果为0,则表示第i个组件不需要满足第j个约束;通过分析用到的独立约束的内容,获取需要使用的探测器列表。

所述第4步中实时获取设备的状态信息的方法:所述各个设备,其中设备个数为y个,利用部署管理系统的客户端,根据需要使用的探测器列表中给出的获取地址,自动下载需要使用的探测器列表中包含的所有探测器,然后运行下载完成的探测器,并调用需要使用的探测器列表中给出的探测器部署接口。

所述第5步中设备约束矩阵MDev是一个y×z大小的布尔类型矩阵,用于记录设备及其满足的独立约束之间的对应关系,其中,y为设备的个数,z为独立约束的个数,如果第i行第j列的元素为1,则表示第i个设备满足第j个约束,如果为0,则表示第i个设备不满足第j个约束。

所述第6步中待求解逻辑表达式的建立方法:首先引入一组新的布尔命题变量deploy(i,j),其中1≤i≤x,1≤j≤y,取值范围为0和1,表示是否将第i个组件部署到第j个设备,然后对独立约束和关联约束分别进行转化:

第61步:将独立约束转化为如下命题逻辑表达式:

其中,deploy(i,j)为布尔命题变量,i和j为下标变量,MCom(i,k)为MCom矩阵第i行第k列元素的值,MDev(j,k)为MDev矩阵第j行第k列元素的值;该逻辑表达式表示,对于任意的组件i和设备j,如果将组件i部署在设备j上,那么设备j必须满足组件i所需要满足的所有独立约束;

第62步:将关联约束转化为命题逻辑表达式的方法:

第621步:对于第i个组件的部署设备数的关联约束,转化为如下命题逻辑表达式:其中k代表第i个组件的部署设备数;

第622步:对于第i个组件必须部署在与第k个组件相同设备上的关联约束,转化为如下命题逻辑表达式:即:如果第i个组件部署在第j个设备上,则第k个组件也部署在第j个设备上;

第623步:对于第i个组件必须部署在比第k个组件部署的设备的s状态的值大的设备上的关联约束,转化为如下命题逻辑表达式:

即:如果第i个组件部署在第j个设备上,第k个组件部署在第n个设备上,那么设备j的s状态的值大于设备n的s状态的值;

第63步:用合取连词∧连接第61步和第62步中得到的所有命题逻辑表达式,作为待求解逻辑表达式。

所示第7步中,根据约束求解器的输出,如果该逻辑表达式可满足,则得到一个求解结果,所述的求解结果为第6步中引入的一组新的布尔命题变量deploy(i,j)的值,其中1≤i≤x,1≤j≤y,如果deploy(i,j)的值为1,则表示第i个组件可以部署在第j个设备上;如果为0,则表示第i个组件不可以部署在第j个设备上。

所述第7步中约束求解器为CSP、SAT、SMT求解器中的一个以上的任意组合。

一种复杂约束条件下多组件软件自动化与自适应部署管理系统,包括客户端和服务器端,所述客户端安装在所有可用设备上,所述服务器端安装在主控服务器上,且所述客户端和服务器端相互通信;所述客户端用于获取指定位置的软件、运行获取的软件并获取信息,所述服务器端用于解析部署描述代码、生成部署计划;所述客户端包括设备状态信息探测器和自动部署器;而所述服务器端包括输入端、部署描述语言模块、处理模块以及约束求解器:

所述设备状态信息探测器用于根据处理模块发送的需要使用的探测器列表对客户端上设备的状态信息进行探测,并将探测到的设备状态信息发送给处理模块;

所述自动部署器用于根据语言解析器发送的组件列表和约束求解器发送的部署计划,自动完成对应组件的下载、安装、配置、激活部署活动;

所述输入端用于对待部署的多组件软件系统的结构和部署需求进行输入,并将该输入发送给部署描述语言模块;

所述部署描述语言模块中内置有语言解析器,所述部署描述语言模块用于以代码的形式对待部署的多组件软件系统的结构和部署需求进行描述,并将该描述信息发送给语言解析器;

所述语言解析器对部署描述语言模块的描述信息进行解析,得到组件列表、约束列表、探测器列表,并将该组件列表、约束列表、探测器列表发送给处理模块,同时将该组件列表发送给客户端上的自动部署器;

所述处理模块根据语言解析器发送的约束列表中用到的独立约束和组件列表获得组件约束矩阵MCom;通过分析约束列表中用到的独立约束的内容,获取需要使用的探测器列表,并将需要使用的探测器列表发送给设备状态信息探测器;同时所述处理模块接收设备状态信息探测器发送的设备状态信息,存储为状态信息表MInfo,然后计算各个设备满足独立约束的情况,并存储为设备约束矩阵MDev;然后根据组件约束矩阵MCom和设备约束矩阵MDev的值,将独立约束和关联约束分别转化为命题逻辑表达式或者其他表达能力更强的高级逻辑表达式,并用合取连词∧连接,作为待求解逻辑表达式,并将该待求解逻辑表达式发送给约束求解器;

所述约束求解器用于根据待求解逻辑表达式进行可满足性求解,根据约束求解器的输出,如果该逻辑表达式可满足,则得到一个求解结果,将该求解结果转换为对应的部署计划,同时将该部署计划发送给客户端上的自动部署器;如果该逻辑表达式不可满足,则表示“该部署需求的约束条件不可满足”,则对输入端重新输入待部署的多组件软件系统的结构和部署需求。

本发明提供的复杂约束条件下多组件软件部署的自动化与自适应方法及其部署管理系统,相比现有技术,具有以下有益效果:

(1)本发明实现了更强的部署自动化功能。部署设计人员只需要使用部署描述语言准确描述部署需求及其约束条件,部署管理系统就可以利用相应的语言解析器自动提取相关信息,自动探测设备状态信息,自动生成部署计划,自动执行软件部署活动,并确保满足所有的约束条件。由于本发明方法实现了各项部署活动的自动化,使得普通技术人员就能够完成复杂的多组件软件部署工作,从而降低人力成本。

(2)本发明通过引入约束求解器模块对复杂约束条件进行自动求解,实现了复杂约束条件下多组件软件的部署计划的自动生成,解决了现实中复杂约束条件所带来的部署分析难题,提高了软件部署效率,使得部署设计的成本大幅度降低,而且不容易出错。

(3)本发明通过引入设备状态信息探测器,实时获取设备的状态信息,当设备状态发生变化导致需要调整部署计划时,可以及时重新生成部署计划并自动执行,实现了对软件部署的自适应。由于本发明方法实现了对多组件软件的部署计划动态变化的自适应,使得部署设计和执行的成本大幅度降低,而且不容易出错。

综上所述,本发明可以解决复杂约束条件下多组件软件的自动化与自适应部署的难题,相比于已有技术,本发明具有更强的部署自动化功能,支持复杂约束条件下多组件软件的部署计划的自动生成,支持对多组件软件的部署计划动态变化的自适应,因此在提高多组件软件部署的效率、降低成本和保证质量等方面有非常重要的作用,有良好的社会效益。

附图说明

图1为本发明的流程图。

具体实施方式

下面结合具体实施例对本发明的技术方案进行详细描述,但不作为本发明的限定。

一种复杂约束条件下多组件软件部署的自动化与自适应方法,如图1所示,首先使用部署描述语言描述多组件软件的部署需求及其部署约束条件,然后通过使用设备状态信息探测器、约束求解器和自动部署器,部署管理系统能够根据部署需求和实时探测到的设备状态信息,通过调用约束求解器,自动地、动态地生成满足约束条件的部署计划,并自动执行部署活动,从而实现对复杂约束条件下多组件软件部署的自动化和自适应支持。

所述部署描述语言,用于以代码的形式来描述软件部署需求中涉及到的主要元素,包括但不限于以下元素:软件组件、部署约束、设备状态信息探测器、各软件组件必须满足的部署约束列表。通过实现该部署描述语言的语言解析器,可以从部署描述代码中解析获得组件列表、约束列表、探测器列表、组件约束矩阵等。

一种复杂约束条件下多组件软件自动化与自适应部署管理系统,如图1所示,包括客户端和服务器端,所述客户端安装在所有可用设备上,所述服务器端安装在主控服务器上,且所述客户端和服务器端相互通信;所述客户端用于获取指定位置的软件、运行获取的软件并获取信息,所述服务器端用于解析部署描述代码、生成部署计划;所述客户端包括设备状态信息探测器和自动部署器;而所述服务器端包括输入端、部署描述语言模块、处理模块以及约束求解器:

所述设备状态信息探测器用于根据处理模块发送的需要使用的探测器列表对客户端上设备的状态信息进行探测,并将探测到的设备状态信息发送给处理模块;

所述自动部署器用于根据语言解析器发送的组件列表和约束求解器发送的部署计划,自动完成对应组件的下载、安装、配置、激活部署活动;

所述输入端用于对待部署的多组件软件系统的结构和部署需求进行输入,并将该输入发送给部署描述语言模块;

所述部署描述语言模块中内置有语言解析器,所述部署描述语言模块用于以代码的形式对待部署的多组件软件系统的结构和部署需求进行描述,并将该描述信息发送给语言解析器;

所述语言解析器对部署描述语言模块的描述信息进行解析,得到组件列表、约束列表、探测器列表,并将该组件列表、约束列表、探测器列表发送给处理模块,同时将该组件列表发送给客户端上的自动部署器;

所述处理模块根据语言解析器发送的约束列表中用到的独立约束和组件列表获得组件约束矩阵MCom;通过分析约束列表中用到的独立约束的内容,获取需要使用的探测器列表,并将需要使用的探测器列表发送给设备状态信息探测器;同时所述处理模块接收设备状态信息探测器发送的设备状态信息,存储为状态信息表MInfo,然后计算各个设备满足独立约束的情况,并存储为设备约束矩阵MDev;然后根据组件约束矩阵MCom和设备约束矩阵MDev的值,将独立约束和关联约束分别转化为命题逻辑表达式或者其他表达能力更强的高级逻辑表达式,并用合取连词∧连接,作为待求解逻辑表达式,并将该待求解逻辑表达式发送给约束求解器;

所述约束求解器用于根据待求解逻辑表达式进行可满足性求解,根据约束求解器的输出,如果该逻辑表达式可满足,则得到一个求解结果,将该求解结果转换为对应的部署计划,同时将该部署计划发送给客户端上的自动部署器;如果该逻辑表达式不可满足,则表示“该部署需求的约束条件不可满足”,则对输入端重新输入待部署的多组件软件系统的结构和部署需求。

本例中,为了便于清楚说明相关概念,定义一种简单的部署描述语言,实际使用的部署描述语言可以是该语言的扩展,从而具有更强的表达能力。从语法结构上,这种简单的部署描述语言可以分为如下几个部分:

(1)组件定义(component):对多组件软件系统中某个组件的定义,字段包括:version组件版本号,path组件获取地址,interface组件部署接口。

(2)约束定义(constraint):对某个部署约束条件的定义,说明某个探测器获取的某个状态信息必须满足的约束。

(3)探测器定义(probe):对某个设备状态信息探测程序的定义,字段包括:path探测程序获取地址,interface探测程序部署接口。

(4)部署需求定义(deploy):对各软件组件必须满足的部署约束列表的定义,即组件和约束的对应关系,说明方式为:在组件名称后面列出若干个必须满足的约束名称,用逗号隔开。

利用该部署描述语言及其语言解析器,本发明方法的具体操作步骤如下:

第1步:在所有可用设备上安装部署管理系统的客户端,客户端的主要功能包括:获取指定位置的软件,运行获取的软件并获取信息,与服务器端通信等;所述客户端包括设备状态信息探测器和自动部署器;在主控服务器上安装部署管理系统的服务器端,服务器端的主要功能包括:解析部署描述代码,生成部署计划,与客户端通信等;所述服务器端包括约束求解器;在设备连接可用的情况下,客户端可以连接并注册到服务器端,并能够相互收发消息。

第2步:对待部署的多组件软件系统进行结构和部署需求分析,得到多组件软件系统的部署需求;然后使用部署描述语言以代码的形式对部署需求进行准确描述,描述内容包括但不限于如下部分:

(1)组件:对多组件软件系统中各个组件的定义,包括:组件版本号,组件获取地址,组件部署接口(用于安装、配置、激活、升级、停止、卸载组件等一系列活动)等。

(2)约束:对各个部署约束条件的定义,说明某个探测器获取的某个状态信息必须满足的约束。

(3)探测器:对各个设备状态信息探测程序的定义,包括:探测程序获取地址、探测程序部署接口(用于安装、配置、激活、升级、停止、卸载探测程序等一系列活动)等。

(4)部署需求:对各软件组件必须满足的部署约束列表的定义,即组件和约束的对应关系。约束分为两类:独立约束和关联约束。其中,独立约束是指该约束的满足仅仅依赖于一个设备的状态信息,而关联约束是指该约束的满足依赖于其他设备的状态信息,或依赖于其他组件的部署情况。

本例中,对待部署的多组件软件系统进行结构和部署需求分析得知,该软件系统包含3个组件,其中,组件一要求部署设备的CPU频率大于1.5GHz、硬盘可用空间大于100GB、操作系统类型为Linux,组件二要求部署在与组件一相同的设备上,且该设备的内存大于4GB、CPU频率大于1GHz,组件三要求同时部署在两个设备上,且它们的硬盘大小都大于1TB,CPU频率都大于组件一部署的设备的CPU频率。使用部署描述语言以代码的形式对部署需求进行描述,代码如下(加粗字体为代码关键字):

其中,com1必须满足两个独立约束,com2必须满足的第1、2个约束为关联约束,第3个约束为独立约束,com3必须满足的第1、3个约束为关联约束,第2个约束为独立约束。

第3步:利用部署描述语言的语言解析器对第2步得到的部署描述代码进行解析,先依次获得组件列表(假设包含x个组件)、约束列表、探测器列表,最后对部署需求代码区进行解析,按独立约束被使用的顺序对用到的独立约束依次编号(假设包含z个独立约束),由组件列表和独立约束获得组件约束矩阵MCom;其中,组件约束矩阵MCom是一个x×z大小的布尔类型矩阵,用于记录部署描述代码中组件和需要满足的独立约束之间的对应关系,如果第i行第j列的元素为1,则表示第i个组件必须满足第j个约束,如果为0,则表示第i个组件不需要满足第j个约束。通过分析用到的独立约束的内容,可以获取需要使用的探测器列表。

本例中,利用语言解析器对第2步得到的部署描述代码进行解析,先依次获得组件列表(包含3个组件)、约束列表、探测器列表,最后对deploy代码区进行解析,按独立约束被使用的顺序对用到的独立约束依次编号(包含4个独立约束),其中,约束cons编号为c1,匿名约束“os.type=Linux”编号为c2,约束cons_a和cons_b分别编号为c3和c4。按照组件及其必须满足的独立约束之间的对应关系,可以获得如下3×4大小的布尔类型的组件约束矩阵MCom:

其中,com1-com3分别代表部署描述代码中依次定义的3个组件,c1-c4分别代表部署描述代码中deploy代码区依次使用的4个独立约束。通过分析用到的独立约束的内容,可以获取需要探测的信息,依次包括:cpu.speed,hd.free,os.type,mem.size和hd.size,因此需要使用的探测器列表包括四个探测器:cpu,hd,os和mem。

第4步:部署管理系统的服务器端将需要使用的探测器列表发送给所有已连接设备的客户端(假设共y个设备),各个设备利用部署管理系统的客户端,根据探测器列表中给出的获取地址,自动下载探测器列表中包含的所有探测器,然后运行下载完成的探测器,并调用探测器列表中给出的探测器部署接口,实时获取设备的状态信息,并将这些信息发送给服务器端。

本例中,各个设备利用部署管理系统的客户端,将探测器列表中包含的四个探测器cpu,hd,os和mem下载到设备上,运行并实时获取设备的状态信息,并将这些信息发送给服务器端。本例中各个设备的状态信息如下:

(1)设备dev1的CPU速度为1.7GHz,硬盘大小400G,可用空间120G,操作系统为Linux,内存6G。

(2)设备dev2的CPU速度为3GHz,硬盘大小2048G,可用空间50G,操作系统为Win8,内存1G。

(3)设备dev3的CPU速度为2.8GHz,硬盘大小1536G,可用空间100G,操作系统为Linux,内存512M。

(4)设备dev4的CPU速度为2.2GHz,硬盘大小400G,可用空间150G,操作系统为Linux,内存8G。

第5步:部署管理系统的服务器端接收客户端发送的设备状态信息,并存储为状态信息表MInfo,然后计算各个设备满足独立约束的情况,并存储为设备约束矩阵MDev。其中,设备约束矩阵MDev是一个y×z大小的布尔类型矩阵,用于记录设备及其满足的独立约束之间的对应关系,如果第i行第j列的元素为1,则表示第i个设备满足第j个约束,如果为0,则表示第i个设备不满足第j个约束。

本例中,部署管理系统接收到设备状态信息后,可以获得如下状态信息表MInfo:

MInfodev1dev2dev3dev4cpu.speed1.732.82.2hd.free12050100150os.typeLinuxWin8LinuxLinuxmem.size610.5128hd.size40020481536400

然后,根据状态信息表,可以计算各个设备满足独立约束的情况,并存储为如下4×4大小的布尔类型的设备约束矩阵MDev:

其中,dev1-dev4分别代表4个可用设备,c1-c4分别代表部署描述代码中deploy代码区依次使用的4个独立约束。

第6步:根据组件约束矩阵MCom和设备约束矩阵MDev的值,将独立约束和关联约束分别转化为命题逻辑表达式(或者其他表达能力更强的高级逻辑表达式),并用合取连词∧连接,作为待求解逻辑表达式。具体来说,首先引入一组新的布尔命题变量deploy(i,j),其中1≤i≤x,1≤j≤y,取值范围为0和1,表示是否将第i个组件部署到第j个设备,然后对独立约束和关联约束分别进行转化:

(1)将独立约束转化为如下命题逻辑表达式:

其中,deploy(i,j)为布尔命题变量(i和j为下标变量),MCom(i,k)为MCom矩阵第i行第k列元素的值,MDev(j,k)为MDev矩阵第j行第k列元素的值。该逻辑表达式表示,对于任意的组件i和设备j,如果将组件i部署在设备j上,那么设备j必须满足组件i所需要满足的所有独立约束。

本例中,将独立约束转化为如下命题逻辑表达式:

(deploy(1,1)→(MCom(1,1)→MDev(1,1))∧…∧(MCom(1,4)→MDev(1,4)))∧…∧(deploy(3,4)→(MCom(3,1)→MDev(4,1))∧…∧(MCom(3,4)→MDev(4,4)))

根据组件约束矩阵MCom和设备约束矩阵MDev的值,代入以上表达式得到:

(deploy(1,1)→(1→1)∧(1→1)∧(0→1)∧(0→0))∧…∧

(deploy(3,4)→(0→1)∧(0→1)∧(0→1)∧(1→0))

(2)将关联约束转化为命题逻辑表达式的方法依赖于具体的关联约束。由于关联约束的种类依赖于实际的部署需求,复杂多样,无法一一穷举,因此,本发明仅列举如下关联约束的转化实例作为说明,不作为对关联约束种类的限定:

a)对于第i个组件的部署设备数的关联约束,转化为如下命题逻辑表达式:

其中k代表第i个组件的部署设备数。本例中,对于com1有>(Σ1j4deploy(1,j))=1,>对于com2有>(Σ1j4deploy(2,j))=1,>对于com3有>(Σ1j4deploy(3,j))=2.>

b)对于第i个组件必须部署在与第k个组件相同设备上的关联约束,转化为如下命题逻辑表达式:即:如果第i个组件部署在第j个设备上,则第k个组件也部署在第j个设备上。本例中,将com2必须满足的第2个约束转化为:然后展开以上表达式得到:

(deploy(2,1)→deploy(1,1))∧…∧(deploy(2,4)→deploy(1,4))

c)对于第i个组件必须部署在比第k个组件部署的设备的s状态的值大的设备上的关联约束,转化为如下命题逻辑表达式:

即:如果第i个组件部署在第j个设备上,第k个组件部署在第n个设备上,

那么设备j的s状态的值大于设备n的s状态的值。本例中,将com3必须满足

的第3个约束转化为:

其中s状态为cpu.speed。根据状态信息表MInfo的值,代入以上表达式得到:

((deploy(3,1)∧deploy(1,1))→0)∧((deploy(3,1)∧deploy(1,2))→0)∧…∧

((deploy(3,4)∧deploy(1,3))→0)∧((deploy(3,4)∧deploy(1,4))→0)

最后,用合取连词∧连接以上各种情况得到的所有命题逻辑表达式,作为待求解逻辑表达式。

第7步:利用约束求解器对第6步得到的待求解逻辑表达式进行可满足性求解。目前可用的约束求解器包括各种具有不同表达能力和特性的CSP、SAT、SMT求解器,例如Choco、Sugar、MiniSAT、Lingeling、Z3、CVC4等,因此需要先将待求解逻辑表达式表示为某约束求解器的指定输入格式。根据约束求解器的输出,如果该逻辑表达式可满足,则得到第6步中引入的一组新的布尔命题变量deploy(i,j)的值(也就是一个x×y大小的布尔类型矩阵,其中1≤i≤x,1≤j≤y),如果deploy(i,j)的值为1,则表示第i个组件可以部署在第j个设备上,如果为0,则表示第i个组件不可以部署在第j个设备上;如果该逻辑表达式不可满足,则提示部署设计人员“该部署需求的约束条件不可满足”,转至第2步重新设计部署需求。

本例中,求解得到的组件设备矩阵deploy如下:

deploydev1dev2dev3dev4com11000com21000com30110

其中,com1-com3分别代表3个组件,dev1-dev4分别代表4个设备。

第8步:将约束求解器的求解结果(即deploy矩阵)转换为对应的部署计划。

本例中,将约束求解器的求解结果转换为对应的部署计划,即:将组件一部署到设备一上,组件二部署到设备一上,组件三部署到设备二和设备三上。

第9步:部署管理系统的服务器端将第3步得到的组件列表和第8步得到的部署计划发送给所有客户端,然后客户端根据部署计划和组件列表中给出的信息,自动完成对应组件的下载、安装、配置、激活等部署活动。

本例中,部署管理系统的客户端根据第8步得到的部署计划和第3步得到的组件列表,通过调用组件部署接口,设备一自动完成组件一和组件二的部署,设备二自动完成组件三的部署,设备三自动完成组件三的部署。

第10步:在软件的运行过程中,服务器端对客户端的状态进行实时监控,当设备状态发生变化时,如果需要调整部署计划,则重新执行第4步至第9步。

本例中,在软件的运行过程中,由于在设备dev1上安装了其它应用软件,使得dev1的可用硬盘空间减小为20GB,从而不再满足com1必须满足的cons约束,所以需要对部署计划做出调整。因此,重新执行第4步至第9步来调整部署计划。

通过执行第4步和第5步,可以获得如下状态信息表MInfo:

MInfodev1dev2dev3dev4cpu.speed1.732.82.2hd.free2050100150os.typeLinuxWin8LinuxLinuxmem.size610.5128hd.size40020481536400

然后,根据状态信息表,可以计算各个设备满足独立约束的情况,并存储为如下4×4大小的布尔类型的设备约束矩阵MDev:

通过执行第6步的约束转化和第7步的约束可满足性求解,得到的组件设备矩阵deploy如下:

deploydev1dev2dev3dev4com10001com20001com30110

通过执行第8步,将约束求解器的求解结果转换为对应的部署计划,即:将组件一部署到设备四上,组件二部署到设备四上,组件三部署到设备二和设备三上。通过执行第9步,部署管理系统的客户端调用组件部署接口,设备一自动完成组件一和组件二的停止和卸载,设备四自动完成组件一和组件二的部署,设备二和设备三则不作改变。最后执行第10步继续进行实时监控。

经过上述步骤的操作,即可根据复杂的部署需求和部署设备的实时状态,实现复杂约束条件下多组件软件部署的自动化与自适应。

综上所述,本发明可以解决复杂约束条件下多组件软件的自动化与自适应部署的难题,相比于已有技术,本发明具有更强的部署自动化功能,支持复杂约束条件下多组件软件的部署计划的自动生成,支持对多组件软件的部署计划动态变化的自适应,因此在提高多组件软件部署的效率、降低成本和保证质量等方面有非常重要的作用,有良好的社会效益。

以上所述仅是本发明的部分实施方式。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干优化和改进,或者对其中部分技术特征进行等同替换,这些改进和替换也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号