CN109656544B - 一种基于执行路径相似度的云服务api适配方法 - Google Patents
一种基于执行路径相似度的云服务api适配方法 Download PDFInfo
- Publication number
- CN109656544B CN109656544B CN201811604896.9A CN201811604896A CN109656544B CN 109656544 B CN109656544 B CN 109656544B CN 201811604896 A CN201811604896 A CN 201811604896A CN 109656544 B CN109656544 B CN 109656544B
- Authority
- CN
- China
- Prior art keywords
- cloud
- execution
- function
- cloud service
- similarity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
发明涉及一种基于执行路径相似度的云服务API适配方法。针对多云部署需要面对不同云计算平台的多样性与复杂性等问题,本发明使用以功能为单位的执行轨迹构建功能依赖图,通过公式计算以及最大公共子图等方法对功能依赖图进行分析,获取不同云服务提供商代码之间的相似性,从而界定管理模式的适用范围。同时,利用以模块为单位的执行轨迹构建执行轨迹图,基于规则分析规范化的执行轨迹,并以此构建多云管理模式。
Description
技术领域
本发明涉及一种基于执行路径相似度的云服务API适配方法,属于软件技术领域。
背景技术
随着IT技术的快速发展,互联网应用逐渐成为业务创新、企业提质增效的重要推动力。因此,保障互联网应用的服务质量至关重要。然而,近年来互联网应用全球化服务需求与云计算厂商服务质量地域性矛盾逐渐显现,迫切需要多云统一管理技术,采用“分治”思想对互联网应用所服务的用户进行地域逻辑划分,并选择该地域服务质量的较好的云计算厂商进行部署。多云统一管理技术可以应对应用本地化、单云失效等可用性问题,主要分为基于适配模式和基于代理模式两类。适配模式是多云管理***的构造与云计算厂商提供的SDK紧耦合,由于云计算厂商SDK的异构性,致使***的构造复杂度与被管理的云计算厂商数量成正比。代理模式是屏蔽云计算厂商SDK之间的差异性,凝练出通用的多云管理模式,简化多云统一管理***构造的复杂度。当前,基于代理模式的多云管理技术因其管理模式的通用性和***构造的简便性,逐渐成为热点问题。通用的多云管理模式是云服务代理***的核心,尽管Apache顶级开源项目Libcloud(http://libcloud.apache.org/),Jclouds(https://jcloud.apache.org/),Deltacloud(http://deltacloud.apache.org/)都试图解决该问题,但目前均还停留在工程层面,没有明确多云管理模式适用的云厂商与功能的范围,同时缺乏明确的管理模式的规则描述。
发明内容
本发明的目的:使用多云部署需要面对不同云计算平台的多样性与复杂性等问题,实现云服务代理的通用管理。
本发明的原理:本发明建立多云管理服务接口与云计算平台接口之间的关联规则,从而指导生成适配代码。该方法利用以功能为单位的执行轨迹构建功能依赖图,通过公式计算以及最大公共子图等方法对功能依赖图进行分析,获取不同云服务提供商代码之间的相似性,从而界定管理模式的适用范围。同时利用以模块为单位的执行轨迹构建执行轨迹图,基于规则分析规范化的执行轨迹,并以此构建多云管理模式。
本发明技术解决方案:一种基于执行路径相似度的云服务API适配方法,其特点在于实现步骤如下:
第一步,执行路径表示。
本发明对云服务调用代理代码动态插桩,在方法调用处获取执行路径信息,包括方法的唯一标识号、方法所在组件的唯一标识号、方法的调用者等。本发明主要获取每个功能的执行路径,要求保留函数的调用关系,所以采用路径树的方式来描述执行路径。路径树中每一个树节点表示一个功能或者模块,有向边表示调用关系。树节点X的数据描述为:X={FuncUID, CalleeList, CallerUID, Info},其中,FuncUID为每次函数调用生成的全局唯一标识符,CalleeList表示当前函数调用的子函数列表,这里子函数的先后顺序表示着调用的时序关系,CallerUID表示当前函数调用者的全局唯一标识符, 包含当前函数调用的相关信息。Info的数据描述信息如下:Info={FuncType, PackagePath, CloudName,FuncName},其中,FuncType为当前的输出粒度(1表示按功能划分的输出结果,0表示按模块划分的输出结果),PackagePath为当前函数所在的包路径,CloudName为当前函数隶属的云服务提供商,FuncName为函数名。代码可能存在循环和递归结构,而这两种代码结构可能导致整个执行路径过于繁复。为了方便后续的处理,本发明通过以下约简规则来简化路径树的结构:
(1)如果节点X的连续孩子节点X1,X2,…,Xn的Info信息相同,则只保留第一个孩子节点X1。
(2)如果节点X1,X2,…,Xn的Info信息相同,且对任意Xi,Xi+1为父子关系,路径中存在递归调用,只保留第一个节点X1。
第二步,功能关系图构建。
特定公有云提供商的代码对于功能描述是一致的。将不同功能的路径树节点聚合,保留边与边的关系可以得到功能关系图,节点表示某一功能,边表示存在的调用关系。其中,孤立点表示在整个功能过程中没有调用其他功能,也没有被其他功能所调用。点的度越高,被调用或调用其他功能的次数越多。功能比较会涉及到不同云服务提供商的功能依赖图之间的对比,但是不同云服务提供商对于相同功能的描述会有差异。所以要对功能关系图进行预处理,判断哪些描述是相同的。本发明通过人工构建语义映射,将不同云服务提供商的描述映射到统一的描述以对比不同的云服务提供商的功能描述是否相同。云服务提供商A的功能x与云服务提供商B的功能y所表达的语义是否相同的结果为:Result=String.compare(Hash(A.x),Hash(B.y)),其中,Result为比较结果,String.compare为字符串比较函数,Hash为语义映射将不同的云服务商的描述转化为标准描述。
第三步,功能关系图相似度计算。
本发明通过图的相似度分析对不同的云服务提供商的功能依赖图进行评估,以得出云服务提供商之间的相似性关系,从而限定多云管理模式的适用范围。统计不同云服务提供商的功能依赖图之间共有节点与差异节点的数目。两家云服务提供商的功能依赖图相似度为,图节点交集除以图节点并集的比例。当相似度大于或等于该阈值时,认为该相似度所对应的两个云服务提供商可以被方法同时覆盖。当相似度小于该阈值时,认为该相似度所对应的两个云服务提供商不能够被多云管理模式所覆盖。
第四步,规范化执行路径选择。
对于多个公有云提供商共有的功能,需要有多云管理规范以指导编写代码,本发明通过从不同公有云提供商的执行路径中提取信息,选取最合适的执行路径作为多云管理模式的规则。将云服务提供商的功能实现划分为模块,根据模块目的统一命名,通过细粒度插桩信息得到每个功能的执行路径。将同一功能的不同云服务提供商的执行路径聚合成执行路径图。将相同模块聚合成一个节点,边的权值表示模块之间存在关系的云服务提供商的数量。基于执行路径图,本发明选择合适的规范化执行路径作为管理模式的规则,通过生成目标代码来完成有效性验证。代码生成过程是先由每个模块逐一完成,最终将以模块为单位的执行路径串接起来,以实现生成目标代码的目的,通过验证代码的有效性证明管理模式的有效性。某一功能的规范化执行路径的提取方法为,通过对多家云服务提供商对同一功能的执行路径图分析,从执行路径图的统一起始节点出发,对当前节点的后继节点进行规则判断。判定是否可以优先节点,如果不能确定再选择边权值最大的后继节点,最终返回选择的规范化执行路径。
第五步,自动代码生成。
本发明以基于多云管理模式的自动代码生成作为成果展示的核心,在使用公有云时,可以通过直接安装不同公有云的SDK,从而根据不同公有云提供适配的调用代码。本发明代码生成的对象基于管理模式的规则自动生成源码,处于在公有云所提供的RestfulAPI与应用开发者之间,用于屏蔽不同公有云API的差异性。利用图模型等手段解析执行路径所关联的规则从而界定适用范围以及规则,触发自动代码生成器源码改动。本发明使用插桩的方式获取信息,插桩粒度分别为以函数或功能为单位、以模块为单位。以功能为单位的插桩使用Python的装饰器完成,而以模块为单位的插桩则由人工划分并输出信息。本发明的装饰器在模拟运行过程中会调用信息输出的语句从而得到对应的结果。基于插桩日志的方式,利用模拟执行各个功能函数动态获取执行路径。
(1)对基于功能的执行路径构建功能依赖图,通过公式计算相似度可以得到不同公有云功能依赖图之间的相似度,设置阈值初步判断不同公有云管理模式的相似性。
(2)对基于功能的执行路径构建功能依赖图,通过最大公共子图算法分析多云管理模式所适用的功能范围。
(3)对基于模块的执行路径构建执行路径图,根据Libcloud自有规范与最大权值路径两条原则选择规范化的执行路径。
本发明以管理模式的规则即规范化的执行路径作为自动代码生成的架构,对其上的每个模块进行代码生成。在此过程中主要使用基于模板的自动代码生成,为每一个模块定制模板,同时提供可变参数,由程序或用户输入可变参数得到最终的生成代码。自动代码生成通过读取XML中的可变参数以及模板库中对应模块的模板文件,进行目标代码生成,完成某一模块的目标代码生成。如果是多个模块组成的功能,最后将由不同模块的目标代码串联组合,构建最终的代码。除了模板以外,对每一个模块都有自动代码生成算法用于简单的封装。生成的代码不仅限于Python代码本体,可能还有部分注释用于指导研发人员修改。最终将每个模块生成的代码按规范化的执行路径串联起来,即为目标代码。当收到API变化信息时,由人工或机器分析使用对应的功能的规范化执行路径进行自动代码生成。自动代码生成器会针对执行路径上的每一个模块进行代码生成,最终整合串接在一起构成目标代码。
本发明与现有技术相比具有如下优点:本发明使用多云部署需要面对不同云计算平台的多样性与复杂性等问题,实现云服务代理的通用管理。
附图说明
图1为方法执行流程。
具体实施方式
以下结合具体实施例和附图对本发明进行详细说明,如图1所示,本发明实施例方法流程:
API管理给管理员提供便捷的代码维护功能,根据多云管理模式进行代码生成的工作,分为轨迹分析与代码生成两个部分。其中轨迹分析部分包括执行轨迹的获取、语义映射工作、功能依赖图的构建与分析、执行轨迹图的构建与分析;代码生成部分包括以功能为单位执行轨迹库、以模块为单位的代码模板库、XML库以及自动代码生成算法库。
(1)轨迹分析:以功能为单位的执行轨迹的获取是采用Python的装饰器完成的,对每一个关键函数进行装饰器修饰,从而生成拥有输出插桩信息功能的函数对象。在不同的公有云服务提供商的描述中相同的功能可能存在差异,本发明通过语义映射的方式完成两者的转换。语义映射的信息存储在MySQL数据库中,在实际使用过程中以Hash表的形式呈现,一次读取数据,从而降低多次访问数据库带来的性能损失。通过插桩获取的以功能为单位的执行轨迹进行语义映射、路径规约等预处理以后,构建以公有云服务提供商为单位的功能依赖图。通过对不同的公有云服务提供商进行功能依赖图的相似性分析,从而界定多云管理模式的适用范围。另一方面,对插桩获取的以模块为单位的执行轨迹同样进行数据的预处理操作,对每个适用范围内的功能构建执行轨迹图,对执行轨迹图进行规范化路径选取,作为管理模式的规则。
(2)代码生成:基于需要实现的目标功能从数据库中读取规范化的执行轨迹,对执行轨迹中的每一个模块读取XML文件,利用XML文件所关联的自动代码生成算法进行代码生成。将得到的目标代码进行拼接,即为最终代码。当***接收到用户的API改动时,进行API解析,获取其结构,包含参数、动作等等。根据目标功能从数据库中获取规范化的执行轨迹,对每一个模块进行基于模板的自动代码生成的工作,从模板库与XML库中获取模块的对应模板与XML文件,利用可变参数对XML文件进行修改,调用功能对应的自动代码生成算法生成该模块的代码。最终根据管理模式的规则聚合不同模块的代码得到目标代码,人工修改目标代码直至完成有效性验证。
本发明选择目前开源界流行的多云管理项目之一Libcloud作为研究对象。在使用公有云时,可以通过直接安装不同公有云的SDK,从而根据不同公有云提供适配的调用代码。而Libcloud处于在公有云所提供的Restful API与应用开发者之间,用于屏蔽不同公有云API的差异性。本发明所强调的代码生成的对象则是根据Libcloud API的进化,从而基于管理模式的规则自动生成Libcloud的源码。研究思路为:使用Libcloud的模拟测试获取执行轨迹,利用图模型等手段解析执行轨迹所关联的规则从而界定适用范围以及规则,最终人工编写Libcloud API的改动,触发自动代码生成器对Libcloud源码进行改动。
本发明使用插桩的方式获取信息,插桩粒度分别为以函数或功能为单位、以模块为单位。以功能为单位的插桩使用Python的装饰器完成,而以模块为单位的插桩则由人工划分并输出信息。本发明的装饰器的用法,通过装饰Libcloud的函数,在模拟运行过程中会调用信息输出的语句从而得到对应的结果。基于插桩日志的方式,利用模拟执行各个功能函数动态获取执行轨迹。
(1)对基于功能的执行轨迹构建功能依赖图,通过公式计算相似度分析可以得到不同公有云功能依赖图之间的相似度,设置阈值初步判断不同公有云管理模式的相似性。
(2)对基于功能的执行轨迹构建功能依赖图,通过最大公共子图算法分析多云管理模式所适用的功能范围。最大公共子图算法对两个不同的公有云的功能依赖图是对称的,所以本发明通过占公有云所支持的功能比重来评价某一个公有云的管理模式是否被另一个公有云的管理模式所涵盖。
(3)对基于模块的执行轨迹构建执行轨迹图,根据Libcloud自有规范与最大权值路径两条原则选择规范化的执行轨迹。
接下来详细描述自动代码生成的流程。本发明以管理模式的规则即规范化的执行轨迹作为自动代码生成的架构,对其上的每个模块进行代码生成。在此过程中主要使用基于模板的自动代码生成,为每一个模块定制模板,同时提供可变参数,由程序或用户输入可变参数得到最终的生成代码。自动代码生成算法通过读取XML中的可变参数以及模板库中对应模块的模板文件,进行目标代码生成,完成某一模块的目标代码生成。如果是多个模块组成的功能,最后将由不同模块的目标代码串联组合,构建最终的代码。当收到API变化信息时,由人工或机器分析使用对应的功能的规范化执行轨迹进行自动代码生成。自动代码生成器会针对执行轨迹上的每一个模块进行代码生成,最终整合串接在一起构成目标代码。
Claims (1)
1.一种基于执行路径相似度的云服务API适配方法,方法特征在于实现步骤如下:
第一步,执行路径表示:对云服务调用代理代码动态插桩,在方法调用处获取执行路径信息,包括方法的唯一标识号、方法所在组件的唯一标识号、方法的调用者;
第二步,功能关系图构建:特定公有云提供商的代码对于功能描述是一致的,将不同功能的路径树节点聚合,保留边与边的关系可以得到功能关系图,节点表示某一功能,边表示存在的调用关系;
第三步,功能关系图相似度计算:通过图的相似度分析对不同的云服务提供商的功能依赖图进行评估,以得出云服务提供商之间的相似性关系,从而限定多云管理模式的适用范围;
第四步,规范化执行路径选择:对于多个公有云提供商共有的功能,需要有多云管理规范以指导编写代码,通过从不同公有云提供商的执行路径中提取信息,选取最合适的执行路径作为多云管理模式的规则;
第五步,自动代码生成:以基于多云管理模式的自动代码生成作为成果展示的核心,在使用公有云时,可以通过直接安装不同公有云的SDK,从而根据不同公有云提供适配的调用代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811604896.9A CN109656544B (zh) | 2018-12-26 | 2018-12-26 | 一种基于执行路径相似度的云服务api适配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811604896.9A CN109656544B (zh) | 2018-12-26 | 2018-12-26 | 一种基于执行路径相似度的云服务api适配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109656544A CN109656544A (zh) | 2019-04-19 |
CN109656544B true CN109656544B (zh) | 2020-08-18 |
Family
ID=66116813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811604896.9A Active CN109656544B (zh) | 2018-12-26 | 2018-12-26 | 一种基于执行路径相似度的云服务api适配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109656544B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110049135A (zh) * | 2019-04-23 | 2019-07-23 | 深圳市泰蔟科技有限公司 | 一种云存储扩展方法及存储扩展装置 |
CN110647317A (zh) * | 2019-09-27 | 2020-01-03 | 中国航空无线电电子研究所 | 基于模板的应用框架生成方法 |
CN110825452A (zh) * | 2019-10-10 | 2020-02-21 | 国云科技股份有限公司 | 一种多云管理的云服务适配模块管理方法 |
CN110728584B (zh) * | 2019-10-23 | 2023-03-21 | 泰康保险集团股份有限公司 | 信息处理方法及装置、可读存储介质和电子设备 |
CN111913713B (zh) * | 2020-06-10 | 2023-01-17 | 中国科学院软件研究所 | 一种基于服务调用追踪的异构服务集成方法 |
CN113392347B (zh) * | 2021-08-18 | 2021-11-09 | 北京安普诺信息技术有限公司 | 基于插桩的Web后端API获取方法及装置、存储介质 |
CN113900962B (zh) * | 2021-12-10 | 2022-03-18 | 广州易方信息科技股份有限公司 | 代码差异检测方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102945283A (zh) * | 2012-11-19 | 2013-02-27 | 武汉大学 | 一种语义Web服务组合方法 |
CN103824127A (zh) * | 2014-02-20 | 2014-05-28 | 上海交通大学 | 云计算环境下服务的自适应组合优化方法 |
CN107659624A (zh) * | 2017-09-06 | 2018-02-02 | 国云科技股份有限公司 | 一种适用于云计算的异构云管理***及方法 |
CN107968833A (zh) * | 2017-12-04 | 2018-04-27 | 江苏润和软件股份有限公司 | 一种基于执行路径的云应用性能监测方法 |
CN108270621A (zh) * | 2018-01-22 | 2018-07-10 | 中国人民解放军国防科技大学 | 一种基于mas的多云服务管理技术架构及模型 |
US10104007B1 (en) * | 2015-12-03 | 2018-10-16 | Amazon Technologies, Inc. | Stored views of web service application programming interfaces (APIs) |
CN108881460A (zh) * | 2018-07-02 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种云平台统一监控的实现方法和实现装置 |
-
2018
- 2018-12-26 CN CN201811604896.9A patent/CN109656544B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102945283A (zh) * | 2012-11-19 | 2013-02-27 | 武汉大学 | 一种语义Web服务组合方法 |
CN103824127A (zh) * | 2014-02-20 | 2014-05-28 | 上海交通大学 | 云计算环境下服务的自适应组合优化方法 |
US10104007B1 (en) * | 2015-12-03 | 2018-10-16 | Amazon Technologies, Inc. | Stored views of web service application programming interfaces (APIs) |
CN107659624A (zh) * | 2017-09-06 | 2018-02-02 | 国云科技股份有限公司 | 一种适用于云计算的异构云管理***及方法 |
CN107968833A (zh) * | 2017-12-04 | 2018-04-27 | 江苏润和软件股份有限公司 | 一种基于执行路径的云应用性能监测方法 |
CN108270621A (zh) * | 2018-01-22 | 2018-07-10 | 中国人民解放军国防科技大学 | 一种基于mas的多云服务管理技术架构及模型 |
CN108881460A (zh) * | 2018-07-02 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种云平台统一监控的实现方法和实现装置 |
Non-Patent Citations (1)
Title |
---|
基于LibCloud 的云代理***设计与实现;黄志兰 刘京松 关天强 陈楠;《广东通信技术》;20160805(第2016年08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109656544A (zh) | 2019-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656544B (zh) | 一种基于执行路径相似度的云服务api适配方法 | |
CN110609693B (zh) | 基于数据标准化的代码更新方法、装置及终端设备 | |
CN112232497A (zh) | 一种编译ai芯片的方法、***、设备及介质 | |
CN110704518B (zh) | 基于Flink引擎的业务数据处理方法及装置 | |
US8079020B2 (en) | Preferential path profiling | |
US11003428B2 (en) | Sample driven profile guided optimization with precise correlation | |
CN112104709B (zh) | 智能合约的处理方法、装置、介质及电子设备 | |
CN109739494B (zh) | 一种基于Tree-LSTM的API使用代码生成式推荐方法 | |
CN108469955B (zh) | 一种基于注解的Android注入框架实现方法 | |
CN107741847A (zh) | 实现领域驱动模型的方法及装置 | |
Lv et al. | Potential risk detection system of hyperledger fabric smart contract based on static analysis | |
CN107526679A (zh) | 自动化测试框架、基于其上的自动化测试方法、存储介质和计算机设备 | |
CN111767217A (zh) | Js单元测试案例生成方法及装置 | |
CN113778897B (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
CN112015426B (zh) | 一种代码管理方法、装置及设备 | |
CN106681781A (zh) | 实时计算业务的实现方法和*** | |
CN104731705A (zh) | 一种基于复杂网络的脏数据传播路径发现方法 | |
CN113688134B (zh) | 基于多维数据的可视化变量管理方法、***及设备 | |
CN113867714B (zh) | 一种适配多语言的自动代码生成方法 | |
CN113467761B (zh) | 一种基于Java反射原理的接口测试模板生成方法 | |
CN112560413B (zh) | 基于配置模式的报表扩展方法、装置和设备 | |
CN112130849B (zh) | 代码自动生成方法及装置 | |
CN114968325A (zh) | 代码注释的生成方法及装置、处理器和电子设备 | |
Zhang | An Approach for Extracting UML Diagram from Object-Oriented Program Based on J2X | |
Kim et al. | Static dalvik bytecode optimization for Android applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 215000 South Floor, Fuhua Building, No. 199 Chongwen Road, Suzhou Industrial Park, Jiangsu Province Patentee after: Jiangsu Boyun Technology Co.,Ltd. Address before: 215000 South Floor, Fuhua Building, No. 199 Chongwen Road, Suzhou Industrial Park, Jiangsu Province Patentee before: SUZHOU BONA XUNDONG SOFTWARE Co.,Ltd. |