CN114647465B - 多通道注意力图神经网络聚类的单体程序拆分方法及系统 - Google Patents
多通道注意力图神经网络聚类的单体程序拆分方法及系统 Download PDFInfo
- Publication number
- CN114647465B CN114647465B CN202210559572.8A CN202210559572A CN114647465B CN 114647465 B CN114647465 B CN 114647465B CN 202210559572 A CN202210559572 A CN 202210559572A CN 114647465 B CN114647465 B CN 114647465B
- Authority
- CN
- China
- Prior art keywords
- channel
- graph
- clustering
- neural network
- attention
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种多通道注意力图神经网络聚类的单体程序拆分方法及系统,包括单体程序多属性图构建、多通道图神经网络特征嵌入表示学习、基于注意力的多通道特征嵌入融合、基于谱聚类的微服务拆分。通过图神经网络重构信息和聚类信息构建新的损失函数,实现了图注意力神经网络与聚类的联合学习框架,实现了提取微服务在功能性和模块性方面性能的提升。本发明结合单体程序多种属性信息,构建多通道图注意力网络,实现了更为高质量的特征嵌入表示,同时也提升了微服务提取方法的可扩展性,避免了微服务提取方法在应用中使用受限等问题。
Description
技术领域
本发明属于软件工程和人工智能领域,具体涉及一种多通道注意力图神经网络聚类的单体程序拆分方法及系统。
背景技术
随着云计算技术的快速发展,为了充分利用云基础设施,灵活进行业务扩张和性能伸缩,降低维护成本,Amazon、IBM、Google等大型公司研究将单体应用软件系统迁移为基于微服务的架构,与单体架构这种将系统各个模块统一管理打包成单个应用程序的范式不同,微服务架构由许多独立的服务组成,服务之间通过轻量级通信协议进行动态交互,每个服务可独立修改、开发、部署和维护。因此,在增量迁移上云过程中,需要将单体应用替换到新的体系结构中。微服务提取或拆分是将现有代码重构为一组较小的独立代码组的过程,理想情况下不改变外部行为和语义。一旦移植到微服务,业务服务就可以独立地增强和扩展,提供敏捷性和改进的交付速度。目前大多数微服务拆分和重构过程是手工完成的,代价昂贵、耗时且易于出错,其质量通常与专家经验和知识密切相关,因此,迫切需要自动化的过程来将单体应用转换成微服务系统,微服务提取已成为软件工程和云计算领域研究的重要任务之一。
近些年,已有许多工作研究单体应用系统的微服务提取方法,微服务提取的主要标准是每个微服务尽最大可能满足低耦合和高内聚标准。Mitchell等人于2006年提出一种基于源代码分析的软件聚类方法,通过对源代码中实体和关系图产生子系统分解,最后通过爬山优化搜索算法产生软件聚类。Levcovitz等人于2016年提出一种基于人工经验功能分解的微服务提取方法,通过评估代码、数据库表和SQL查询确定业务对象及关系,结合调用图推荐可能微服务。Gysel等人于2016年引入了一个基于16个耦合标准的服务分解工具,这些标准来源于行业和文献,通过创建加权图,利用聚类算法提取潜在的微服务。Mazlami等人于2017年提出一种通过抽取代码中的依赖结构信息,将软件系统建模表示成图结构,然后设计图切割算法切分图,每个子图则对应一个可选的服务提取方法。Chen等人于2017年使用自顶向下的方法,基于数据流进行候选服务提取,该方法需要根据用户对系统的自然语言描述构造一个数据流图来说明详细的数据。Baresi等人于2017年提出了一种基于OpenApi规范规定的功能语义相似性的方法,这种相似性取决于引用词汇表。Tyszberowicz等人于2018年提出了一种基于软件需求的功能分解的方法提取微服务的方法。然后使用图形分析工具确定微服务,Amiri等人于2018年提出一种使用业务流程模型和符号(BPMN)从业务流程中表示微服务的方法,实现过程中对结构依赖和数据对象依赖信息使用简单的矩阵加法进行了聚合。Munezero等人于2018年提出一种使用领域驱动设计(DDD)模式提取微服务的方法,需领域专家确定系统每个功能的责任边界。Jin等人于2019年以单体应用系统的运行轨迹作为输入,提出了一种基于多目标优化技术的服务拆分方法。Ding等人于2020年提出了一种场景驱动、自底向上的融合用户反馈的半自动化拆分方法,该方法从数据库拆分出发,向上映射到系统代码的拆分,考虑了数据关联度、数据共享度、拆分开销等不同拆分因素。Zhang等人于2020年提出一种围绕负载均衡作为优化目标的基于运行轨迹的多目标优化的微服务提取方法。Brito等人于2021年提出一种基于主题建模的微服务提取方法,利用领域术语与聚类技术相结合生成一组基于原始单体应用软件的服务。Desai等人于2021年提出了基于深度学习图神经网络方法的微服务提取方法,是一种基于端到端的深度神经网络聚类联合框架,取得了较好的实验结果,并拓展了图神经网络的应用。Kalia于2021年提出了一种基于单体系统的运行轨迹中抽取出系统业务逻辑,使用分层聚类方法将单体应用划分为不同微服务的方法。
综上所述,近几年伴随人工智能技术的发展,微服务提取工作取得了很大的进展,尽管进行了大量的研究,但仍没有单一的提取方法可以推荐于普遍应用中。另外,大多数方法存在只适用于一个数据集的情况,在多个数据集上缺乏可扩展性,或者缺少自动化实现的方法。
发明内容
本发明针对现有技术中的不足,提供一种多通道注意力图神经网络聚类的单体程序拆分方法及系统,通过注意力机制,实现多通道信息的有效融合,提升多通道特征的表示能力。
为实现上述目的,本发明采用以下技术方案:
多通道注意力图神经网络聚类的单体程序拆分方法,其特征在于,包括:
步骤S1:对JAVA单体程序中获取的类和类之间的多源关系建模并组合形成多通道信息数据对,基于多通道信息数据对和邻接矩阵构建单体程序多属性图;
步骤S2:将单体程序多属性图输入到多通道图卷积编码器获得对应的特征嵌入表示,利用多通道图卷积解码器重构多通道信息数据对并基于重构误差设计重构损失函数;
步骤S3:通过注意力机制计算特征嵌入表示中各结点的重要性,并自适应融合为新的特征嵌入表示;
步骤S4:通过图神经网络和聚类的联合学习框架对新的特征嵌入表示进行聚类,实现微服务的划分,并基于重构损失函数和聚类过程中产生的聚类损失函数,对神经网络的参数进行优化。
为优化上述技术方案,采取的具体措施还包括:
进一步地,所述步骤S1具体包括如下子步骤:
步骤S11:通过对JAVA应用程序的动态分析,获得运行时调用链追踪数据信息;
步骤S12:根据调用链追踪数据信息,得到类与调用链之间的关系子图X class-trace ;如果类i class i 出现在入口点p所在的执行追踪中,则X class-trace (i, p) = 1,否则X class-trace (i, p) = 0;
步骤S13:根据调用链追踪数据信息,得到类之间的矩阵属性子图X class-occurrence ;若有q条调用链同时包含类i与类j,则X class-occurrence (i, j) = q;
步骤S14:根据调用链追踪数据信息,得到类之间的继承关系子图X class-inheri ;如果两个类通过继承关系相关,则X class-inheri (i, j) = 1,否则X class-inheri (i, j) = 0;
步骤S15:根据调用链追踪数据信息,得到类之间的邻接矩阵A;邻接矩阵定义如下:
其中,E表示继承关系子图的边集合,v a 、v b 分别表示结点a和结点b,A uv 表示邻接矩阵A的第u行、第v列的值;
步骤S16:将关系子图X class-trace 、矩阵属性子图X class-occurrence 和继承关系子图X class-inheri 进行组合形成多通道信息数据对X 1 、X 2 和X 3 ,其中,X 1 =(X class-trace ,X class-occurrence ),X 2 =(X class-trace , X class-inheri ),X 3 =(X class-occurrence , X class-inheri ),结合邻接矩阵A构建单体程序多属性图。
进一步地,所述步骤S2具体包括如下子步骤:
步骤S21:将步骤S1中得到的单体程序多属性图输入多通道图卷积编码器,学习得到三个通道的特征嵌入表示,模型描述如下:
基于重构误差构建每个通道图神经网络的重构损失,重构损失函数L sa 定义为:
进一步地,所述步骤S3具体如下:
进一步地,所述步骤S4具体如下:
否则S eo =0;S eo 代表结点e和结点o通过高斯核函数计算得到的相似度,N表示结点
数,z e 表示结点e的特征嵌入表示,是向量z e 和z o 之间的欧几里得距离,是尺度参数,S eo 对称且非负;然后,运行谱聚类算法将N个结点聚类到K个不同划分中;
谱聚类后,构建簇的k-d树,找到与结点z e 同一个簇中曼哈顿距离最近的邻居结点z o ,定义聚类损失函数L clus :
综合L sa 和L clus 形成新的损失函数L:
进一步地,本发明提出了一种多通道注意力图神经网络聚类的单体程序拆分系统,其特征在于,包括:多通道注意力网络模块、多通道图卷积神经网络模块、注意力机制模块和联合学习模块;
所述多通道注意力网络模块对JAVA单体程序中获取的类和类之间的多源关系建模并组合形成多通道信息数据对,基于多通道信息数据对和邻接矩阵构建单体程序多属性图;
所述多通道图卷积神经网络模块包括多通道图卷积编码器和多通道图卷积解码器,所述单体程序多属性图输入到多通道图卷积编码器获得对应的特征嵌入表示;所述多通道图卷积解码器重构多通道信息数据对并基于重构误差设计重构损失函数;
所述注意力机制模块通过注意力机制计算特征嵌入表示中各结点的重要性,并自适应融合为新的特征嵌入表示;
所述联合学习模块通过图神经网络和聚类的联合学习框架对新的特征嵌入表示进行聚类,实现微服务的划分,并基于重构损失函数和聚类过程中产生的聚类损失函数,对神经网络的参数进行优化。
进一步地,本发明提出了一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序使计算机执行如上所述的多通道注意力图神经网络聚类的单体程序拆分方法。
进一步地,本发明提出了一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如上所述的多通道注意力图神经网络聚类的单体程序拆分方法。
本发明的有益效果是:本发明在Java程序运行时调用图分析,获取类与类之间的多属性信息,构建多属性图结构,设计基于多通道的图卷积神经网络模型对多属性图进行特征嵌入表示学习;然后以优化嵌入表示为目标,采用注意力机制,对多通道卷积网络嵌入表示进行融合,形成新的特征嵌入表示;再通过与聚类信息的联合训练,最后使用谱聚类进行聚类,得到微服务拆分结果。本发明充分利用多属性信息和多通道图注意力神经网络的建模能力,有效提升拆分后微服务的功能性和模块性。
附图说明
图1为本发明多通道注意力图神经网络聚类的单体程序拆分方法的流程图。
图2为本发明实施例提供的Java程序类调用示例图。
图3为本发明实施例提供的微服务拆分示意图。
图4为本发明多通道注意力图神经网络聚类的单体程序拆分方法的框架图。
图5a-5d为本发明实施例提供的不同数据集上三种通道的图结点注意力系数热图,其中图5a是daytrader数据集,图5b是acmeAir数据集,图5c是jpetstore数据集,图5d是plants数据集。
图6a-6c为本发明实施例提供的不同数据集嵌入维度对不同指标性能的影响结果图,其中图6a是ICP指标,图6b是SM指标,图6c是IFN指标。
具体实施方式
现在结合附图对本发明作进一步详细的说明。
本发明提出了一种多通道注意力图神经网络聚类的单体程序拆分系统,包括:
多通道注意力网络模块,用于对JAVA单体程序中获取的类和类之间的多源关系建模并组合形成多通道信息数据对,基于多通道信息数据对和邻接矩阵构建单体程序多属性图;
多通道图卷积神经网络模块,包括多通道图卷积编码器和多通道图卷积解码器,单体程序多属性图输入到多通道图卷积编码器获得对应的特征嵌入表示,多通道图卷积解码器重构多通道信息数据对并基于重构误差设计重构损失函数;
注意力机制模块,用于通过注意力机制计算特征嵌入表示中各结点的重要性,并自适应融合为新的特征嵌入表示;
联合学习模块,用于通过图神经网络和聚类的联合学习框架对新的特征嵌入表示进行聚类,实现微服务的划分,并基于重构损失函数和聚类过程中产生的聚类损失函数,对神经网络的参数进行优化。
如图1所示,本发明公开了一种多通道注意力图神经网络聚类的单体程序拆分方法,依次包括单体程序多属性图构建、多通道图神经网络特征嵌入表示学习、基于注意力的多通道特征嵌入融合和基于谱聚类的微服务拆分。首先,以Java单体应用为基础,从中获取类和类之间的特征信息构建成多属性图G = {V, E, X m };然后构建基于多通道图卷积神经网络的特征嵌入表示学习模型,每个通道得到特征嵌入表示Z m ,每个通道的图卷积神经网络由编码器和解码器组成;再基于结点重要性的注意力融合机制将Z m 融合得到新的特征嵌入表示Z;最后通过联合学习框架不断优化参数,使用谱聚类算法进行聚类,得到拆分后的微服务。
如图2所示,在JAVA应用程序中,程序都是由类组成的,类和类之间的调用关系可以表示为类之间的调用图形式,以图的结构来表示。因此,将程序转换为图结构进行建模是许多微服务提取模型采用的方法,通常通过静态代码分析或者运行时追踪等工具可以获得类和类之间的不同关系,本发明将该问题建模为一个多通道图神经网络和聚类的联合学习框架。将单体应用程序根据代码中类之间的相似性进行划分,例如图3中的6个类经过微服务提取后被划分到3个微服务中。如图4所示,本发明的方法以两个类是否同时出现在同一条调用链中、同时出现在某一条调用链中的次数、是否存在继承依赖关系等多属性出发,以充分利用这些关系构建更加高效的微服务提取方法。
S1,单体程序多属性图构建。
通过对JAVA应用程序动态分析,可获得运行时追踪数据。一条完整的调用链追踪
数据信息Trace =(序号,业务用例,class i ,调用(或返回到),class j ,调用所在文件和方
法)。每个业务用例包含多条调用链,每条调用链是从业务用例测试的入口点(entrypoint)
类开始的,因此根据调用链信息,可获得类与类之间的调用图,通过跟踪在入口点的执行跟
踪期间调用的所有类,得到类与某条调用链的关系子图X class-trace 。如果类iclass i 出现在入
口点p所在的执行追踪中,则X class-trace (i, p) = 1,否则X class-trace (i, p) = 0。进一步计算
某个开始点开始的调用链同时包含class i 和class j 的次数,获得矩阵属性子图X class-occurrence 。定义继承关系子图X class-inheri ,如果两个类通过继承关系相关,则X class-inheri
(i, j) = 1,否则X class-inheri (i, j) = 0。为了能够捕捉到应用程序中类和类之间的全面深
度关系,对类和类之间的关系进行新的组合形成多通道信息数据对,即X 1 =(X class-trace , X class-occurrence ),X 2 =(X class-trace , X class-inheri ),X 3 =(X class-occurrence , X class-inheri )。使用A表示
该图的临接矩阵,定义为。
因为本问题中类之间的调用图固定,因此三个通道属性图具有相同的邻接矩阵A。下一步,将(X 1 , A),(X 2 , A)和(X 3 , A)分别输入到多通道图卷积编码器中。
S2,多通道图神经网络特征嵌入表示学习。
1)多通道图卷积编码器。本发明中,每一个通道都使用了图卷积网络(GCN)。GCN将卷积运算扩展到谱域的图形数据中,其卷积层用于学习图中每个结点的特征嵌入表示和从邻居结点聚合信息,将特征映射到嵌入特征空间。
多通道注意力图神经网络聚类的单体程序拆分方法对多通道属性图构建了三个
图卷积编码器,通过三通道GCN编码器将多属性矩阵和图结构映射到新的特征嵌入空间中。
具体来说,对于m(m=1, 2,…,M)通道(本实施例取M=3),则GCN模型的函数为将图G和X m 映射
到d维嵌入特征Z m 。则第m个图卷积编码器的第l层的输出为:
其中,是具有自连接的邻接矩阵,I N 是单位矩阵;是对应图的度
矩阵,,是第m个图卷积编码器的权值参数,表示非线性激活函数。对于,当l=0时,,,当l=L时,是H m 的第l个隐含层的输
入激活矩阵。如选取2层GCN模型,可表示为:
2)多通道图卷积解码器。为了能够提高每个通道GCN编码器特征表示的有效性,增
加了GCN解码器模块。重建多通道输入图的属性图X m 和结构图A m 。每个解码器模块,与编码器
层数相同,结构恰好相反。经过多通道GCN编码器模块后,已获得图嵌入表示Z m 。在每个解码
器端假定表示m通道的解码器重建属性图,代表m通道的解码器重建结构图。第m通道
第l层的属性特征重建可表示为:
使用重建图和原始图的误差继续优化网络,因此每个通道GCN网络的重建损失综合属性图重构误差和结构图重构误差,该部分损失函数定义为:
S3,基于注意力的多通道特征嵌入融合。
使用注意力机制计算不同通道GCN的嵌入表示Z m 中不同结点的重要性,经过融
合得到新的嵌入特征表示Z。以结点e为例,其在m通道的嵌入表示Z m ,元素为,m =1, 2,…,M。通过注意力机制先对每个通道的特征嵌入表示进行非线性变换,再用一个共
享注意力向量得到m通道结点e的注意力值:
S4,基于谱聚类的微服务拆分。
经过多通道卷积图神经网络和注意力机制融合后,得到了新的嵌入特征表示Z,正常情况下,可采用分步骤的方式,只需要运行聚类方法进行划分即可,但考虑机器学习领域基于多通道注意力图神经网络聚类的单体程序微服务拆分方法的思路,在嵌入表示融合层上执行一个谱聚类层,定义损失函数,再联合优化整个多通道图神经网络模型参数。
谱聚类是基于图论的一种典型聚类算法,减少了对样本空间形状的要求,可以处
理非凸数据集,同时能有效克服集中经典聚类算法收敛于局部最优的缺点,因此本实施例
此处谱聚类算法对嵌入表示Z进行聚类。为了运行谱聚类,使用高斯核定义仿射矩阵S,如果,则;否则S eo =0。其中是向量z e 和z o 之间
的欧几里得距离,是尺度参数,S eo 对称且非负;然后,运行谱聚类算法将N个结点聚类到K
个不同划分中。
为了能够获得更具有判别性的嵌入表示和最优聚类结果,谱聚类后,构建簇的k-d树,借助k-d树实现最近邻的快速查找,找到与结点z e 同一个簇中曼哈顿距离最近的邻居结点z o 。定义聚类损失函数:
本发明首先通过多通道图神经网络对多属性图进行建模,通过注意力机制对特征嵌入表示进行融合,再使用谱聚类算法进行微服务拆分,训练过程中首先对损失函数进行了改进。根据网络模型结构,其损失函数由多通道图卷积网络的重构损失和聚类损失组成。定义为:
实验过程由三个步骤组成。第一步是对多通道图卷积神经网络模块网络参数进行预训练。第二步是对整个网络进行正式训练,得到最终的参数。第三步是使用学习到的嵌入表示Z进行聚类。
1)预训练优化网络参数。构建图临接矩阵A,多源属性图X m 输入到m个图卷积编码
器中获得嵌入表示Z m 。多通道图卷积解码器获得属性重建和结构重建,使用重建误
差优化每个通道图卷积网络参数。将训练得到的卷积自编码器的参数作为网络的初始参
数,计算注意力融合嵌入特征表示Z,使用谱聚类方法初始化聚类,完成初始化。
2)正式开始训练过程。对图卷积编码器、解码器和注意力层参数进行迭代优化,得到最终的参数。首先将多通道图形数据和参数输入到卷积自编码器网络。经过模型训练,获得隐含层嵌入表示和注意力层嵌入表示,使用注意力层嵌入表示数据谱聚类,得到划分结果,计算总体损失函数。通过最小化总体损失函数反向传播训练整体网络。
3)通过学习到的嵌入表示Z计算非负对称矩阵S,执行谱聚类获得最终聚类结果。
到此,该发明的训练过程和微服务提取已经计算完成。实施在一台运行Windows10(64位)、配备NVIDIA GeForce GTX 1660 Ti图形处理单元(GPU)和16gb内存的服务器上进行了所有的实验。使用PyTorch和Python实现,在训练过程中,使用了Adam优化器。为了评估本发明,使用Mono2Mirco提供的4个公开数据集进行测试。daytrader是从在线股票交易系统的运行追踪数据中抽取了含有28个类和103个方法的样本数据。acmeAir是从航空公司订票应用系统的运行追踪数据中抽取了含有73个类、428个方法的样本数据。jpetstore是从宠物上天系统的运行追踪数据中抽取了含有25个类和264个方法的样本数据。该项目是评估微服务提取方法中最常用的基线。如表1所示,plants是从购买植物和宠物的网店运行追踪数据中抽取了含有73个类和428个方法的样本数据。这些应用都是使用各种Java EE框架(如Spring、Apache、Struts等)构建的具有代表性的web应用。
表1 各数据集
将本发明机基准方法Bunch、MEME、FoSCI和Mono2Micro进行了性能比较。对于所有
数据集,参数设置如下:预训练次数都是preepochs=350,正式训练次数epochs=300,学习率,聚类的数目。每个GCN编码器维度为,,结构损失权重,。
性能评价主要从功能独立性、模块性和交互复杂性三个角度进行。
(1)功能独立性。微服务的功能独立性是指服务提供单一功能职责的程度。一个微服务的功能是单一且一致的,则该服务在应用到新系统上则易于被新系统复用,同时能提高新系统的开发效率。
(2)模块性。模块性是指微服务能遵循高内聚、低耦合的程度。微服务之间的耦合程度越低、微服务内部聚合程度越高,则说明该微服务的模块性越好。因此,模块化主要用于评估微服务服务内部交互的一致性以及服务之间的松散耦合性(loosely coupled)。
(3)交互复杂性。服务的交互复杂性是指服务间动态交互行为的复杂程度。服务间的交互行为复杂,则发生故障后,很难有效在源代码中定位故障源头。
为了较好地量化评估基于多通道注意力图神经网络聚类的单体程序微服务拆分方法模型的微服务提取性能,本实施例采用了微服务提取中较通用的满足上述要求的评价指标。评价指标主要有3个:
(1)IFN(independence of functionality)。IFN强调外部依赖,评价微服务是否具有良好定义(well-defined)和独立性(independence)。ifn(interface number)用于量化一个给定服务的接口数目。它基于单一责任原则(single responsibility principle)。IFN表示所有ifn的平均值,可表示为:
通常IFN值越小,表示给定服务越能承担单一责任。
(2)SM(structural modularity quality)用于量化微服务内的类间结构一致性,较高的SM值表示比较好的模块化服务,表示为:
(3)ICP(inter-partition call percentage)表示服务间调用纯度,用于最小化不同调用的数量和服务间调用的数目,评估微服务之间的交互百分比。可表示为:
其中c i,j 表示不同微服务之间的调用数目。ICP值越小,说明服务之间调用纯度越好。
主要目标是验证本发明所提取的微服务是否与功能和模块化的独立性有关,同时,测试结果的评价指标主要是SM、IFN和ICP。与其他方法的实验性能对比,结果如表2到表5所示。性能测试的结果是在参数设置选取的范围内跑了100次,然后取每个性能指标的中位数。其中↑表示值越大越好,↓表示该值越小越好。在所有数据集上,本发明取得了非常具有前景的结果。
表2 daytrader数据集上聚类分析结果
表3 acmeAir数据集上聚类分析结果
表4 jpetstore数据集上聚类分析结果
表5 plants数据集上聚类分析结果
从总体性能上比较,表2到表5列举了不同方法在四个数据集上的SM、IFN和ICP值。从表中可以看出在与同类方法CoGCN相比,在daytrader数据集上,ICP提升了37.6%,SM提升了41.86%。在acmeAir数据集上,ICP提升了32.21%,SM提升了63.16%,IFN提升了1.44%。在jpetstore数据集上,ICP提升了54.81%,SM提升了27.47%,IFN提升了15.2%。在plants数据集上,ICP提升了6.48%,SM提升了3.76%,IFN提升了6.13%。这表明基于多通道注意力图神经网络聚类的单体程序微服务拆分方法的多通道信息的充分利用和有效融合显著提升了提取微服务在功能性和模块性上的效果。
值得提及的是,与当前最具优势的其他非深度学习模型比较,基于多通道注意力图神经网络聚类的单体程序微服务拆分方法在daytrader数据集的ICP指标、在acmeAir数据集上的ICP指标和IFN指标、在jpetstore数据集上的ICP指标、在plants数据集上的IFN指标上都取得了最好的实验效果。表明了基于多通道深度学习的注意力卷积网络具有更强的嵌入表示学习能力,进一步提升了聚类的效果。
图5a到图5d给出了不同数据集上三种通道的图结点注意力系数热图。注意力融合机制是本模型的一个关键组成部分,它可以衡量和量化不同通道的重要性和不同通道中不同结点的重要性。图5a到图5d中可视化了在四个不同数据集上三个通道中每个图结点的注意力系数。从图中可以看出,三个通道具有不同的重要性,在不同数据集上,通道1和通道3的权值比通道2相对较高。实验结果表明基于多通道注意力图神经网络聚类的单体程序微服务拆分方法可以很好地利用不同通道的不同特征进行聚类。
图6a到图6c给出了不同数据集嵌入维度对不同指标性能的影响结果图。总体趋势,随着特征嵌入维度增大,ICP先增大后减小,SM先减小后增大,IFN受特征嵌入维度变化的影响较小。对于jpetstore和daytrader数据集,特征嵌入维度为8或64时,总体性能较好,对于acmeAir数据集,特征嵌入维度16时,总体性能较好。对于plants数据集,特征嵌入维度可在32与64之间平衡选择。
表6给出了本发明在jpegstore中提取的微服务结果,示出了基于Java Spring应用框架的jpetstore数据集在本发明基于多通道注意力图神经网络聚类的单体程序微服务拆分方法上的微服务提取结果。jpetstore是一宠物销售的购物应用程序,数据集中主要包含37个实体类,针对数据集中获取的多通道信息,经过基于多通道注意力图神经网络聚类的单体程序微服务拆分方法之后,可以得到四个微服务。每个微服务中包含的实体类如表6所示。
表6 jpegstore中提取的微服务结果
每行代表某个聚类中包含的类。在这个示例中可以看到,每个微服务中内类之间具有较高的相似性,聚类结果较均匀。最终结果中包含了用户、目录、产品、订单和购物车等5个微服务。
综上,本发明针对单体应用程序微服务拆分问题,对面向对象程序设计中的类实体关系特征表示进行建模,提出了一种基于多通道注意力深度图卷积网络聚类的微服务拆分方法,考虑了不同类结点特征和拓扑结构信息的优势,达到了提高了模型性能的效果,再使用多通道图卷积神经网络对特征嵌入进行表示学习,通过注意力机制对嵌入特征的融合得到了更好的特征表示方式,最后通过谱聚类算法进行聚类得到微服务拆分结果。在4个通用数据集上进行了较广泛的验证实验,实验结果表明,多通道注意力图卷积神经网络聚类方法提升了微服务拆分的模块性和功能性的性能。
此外,本发明还提出了一种计算机可读存储介质,存储有计算机程序,计算机程序使计算机执行如上所述的多通道注意力图神经网络聚类的单体程序拆分方法。
此外,本发明还提出了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如上所述的多通道注意力图神经网络聚类的单体程序拆分方法。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (8)
1.多通道注意力图神经网络聚类的单体程序拆分方法,其特征在于,包括:
步骤S1:对JAVA单体程序中获取的类和类之间的多源关系建模并组合形成多通道信息数据对,基于多通道信息数据对和邻接矩阵构建单体程序多属性图;
步骤S2:将单体程序多属性图输入到多通道图卷积编码器获得对应的特征嵌入表示,利用多通道图卷积解码器重构多通道信息数据对并基于重构误差设计重构损失函数;
步骤S3:通过注意力机制计算特征嵌入表示中各结点的重要性,并自适应融合为新的特征嵌入表示;
步骤S4:通过图神经网络和聚类的联合学习框架对新的特征嵌入表示进行聚类,实现微服务的划分,并基于重构损失函数和聚类过程中产生的聚类损失函数,对图神经网络的参数进行优化。
2.如权利要求1所述的多通道注意力图神经网络聚类的单体程序拆分方法,其特征在于:所述步骤S1具体包括如下子步骤:
步骤S11:通过对JAVA应用程序的动态分析,获得运行时调用链追踪数据信息;
步骤S12:根据调用链追踪数据信息,得到类与调用链之间的关系子图X class-trace ;
步骤S13:根据调用链追踪数据信息,得到类之间的矩阵属性子图X class-occurrence ;
步骤S14:根据调用链追踪数据信息,得到类之间的继承关系子图X class-inheri ;
步骤S15:根据调用链追踪数据信息,得到类之间的邻接矩阵A;邻接矩阵定义如下:
其中,E表示继承关系子图的边集合,v a 、v b 分别表示结点a和结点b,A uv 表示邻接矩阵A的第u行、第v列的值;
步骤S16:将关系子图X class-trace 、矩阵属性子图X class-occurrence 和继承关系子图X class-inheri 进行组合形成多通道信息数据对X 1 、X 2 和X 3 ,其中,X 1 =(X class-trace ,X class-occurrence ),X 2 =(X class-trace , X class-inheri ),X 3 =(X class-occurrence , X class-inheri ),结合邻接矩阵A构建单体程序多属性图。
3.如权利要求2所述的多通道注意力图神经网络聚类的单体程序拆分方法,其特征在于:所述步骤S2具体包括如下子步骤:
步骤S21:将步骤S1中得到的单体程序多属性图输入多通道图卷积编码器,学习得到三个通道的特征嵌入表示,模型描述如下:
基于重构误差构建每个通道图神经网络的重构损失,重构损失函数L sa 定义为:
5.如权利要求4所述的多通道注意力图神经网络聚类的单体程序拆分方法,其特征在于:所述步骤S4具体如下:
否则S eo =0;S eo 代表结点e和结点o通过高斯核函数计算得到的相似度,N表示结点数,z e 表示结点e的特征嵌入表示,是向量z e 和z o 之间的欧几里得距离,是尺度参数,S eo 对称且非负;然后,运行谱聚类算法将N个结点聚类到K个不同划分中;
谱聚类后,构建簇的k-d树,找到与结点z e 同一个簇中曼哈顿距离最近的邻居结点z o ,定义聚类损失函数L clus :
综合L sa 和L clus 形成新的损失函数L:
6.多通道注意力图神经网络聚类的单体程序拆分系统,其特征在于,包括:多通道注意力网络模块、多通道图卷积神经网络模块、注意力机制模块和联合学习模块;
所述多通道注意力网络模块对JAVA单体程序中获取的类和类之间的多源关系建模并组合形成多通道信息数据对,基于多通道信息数据对和邻接矩阵构建单体程序多属性图;
所述多通道图卷积神经网络模块包括多通道图卷积编码器和多通道图卷积解码器,所述单体程序多属性图输入到多通道图卷积编码器获得对应的特征嵌入表示;所述多通道图卷积解码器重构多通道信息数据对并基于重构误差设计重构损失函数;
所述注意力机制模块通过注意力机制计算特征嵌入表示中各结点的重要性,并自适应融合为新的特征嵌入表示;
所述联合学习模块通过图神经网络和聚类的联合学习框架对新的特征嵌入表示进行聚类,实现微服务的划分,并基于重构损失函数和聚类过程中产生的聚类损失函数,对图神经网络的参数进行优化。
7.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序使计算机执行如权利要求1-5任一项所述的多通道注意力图神经网络聚类的单体程序拆分方法。
8.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如权利要求1-5任一项所述的多通道注意力图神经网络聚类的单体程序拆分方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210559572.8A CN114647465B (zh) | 2022-05-23 | 2022-05-23 | 多通道注意力图神经网络聚类的单体程序拆分方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210559572.8A CN114647465B (zh) | 2022-05-23 | 2022-05-23 | 多通道注意力图神经网络聚类的单体程序拆分方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114647465A CN114647465A (zh) | 2022-06-21 |
CN114647465B true CN114647465B (zh) | 2022-08-16 |
Family
ID=81997123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210559572.8A Active CN114647465B (zh) | 2022-05-23 | 2022-05-23 | 多通道注意力图神经网络聚类的单体程序拆分方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114647465B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11860980B2 (en) * | 2022-01-05 | 2024-01-02 | International Business Machines Corporation | Cognitive method to split monolithic architecture into microservice architecture |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114980A (zh) * | 2022-06-28 | 2022-09-27 | 支付宝(杭州)信息技术有限公司 | 联合训练用户聚类模型的、用户聚类方法及装置 |
CN115545098B (zh) * | 2022-09-23 | 2023-09-08 | 青海师范大学 | 一种基于注意力机制的三通道图神经网络的节点分类方法 |
CN117311801B (zh) * | 2023-11-27 | 2024-04-09 | 湖南科技大学 | 一种基于网络化结构特征的微服务拆分方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113780470A (zh) * | 2021-09-28 | 2021-12-10 | 广西师范大学 | 一种基于自适应多通道交叉图卷积网络的图分类方法 |
CN114296975A (zh) * | 2021-12-22 | 2022-04-08 | 复旦大学 | 一种分布式系统调用链和日志融合异常检测方法 |
-
2022
- 2022-05-23 CN CN202210559572.8A patent/CN114647465B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113780470A (zh) * | 2021-09-28 | 2021-12-10 | 广西师范大学 | 一种基于自适应多通道交叉图卷积网络的图分类方法 |
CN114296975A (zh) * | 2021-12-22 | 2022-04-08 | 复旦大学 | 一种分布式系统调用链和日志融合异常检测方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11860980B2 (en) * | 2022-01-05 | 2024-01-02 | International Business Machines Corporation | Cognitive method to split monolithic architecture into microservice architecture |
Also Published As
Publication number | Publication date |
---|---|
CN114647465A (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114647465B (zh) | 多通道注意力图神经网络聚类的单体程序拆分方法及系统 | |
US11449670B2 (en) | Iterative development and/or scalable deployment of a spreadsheet-based formula algorithm | |
CN107480694B (zh) | 基于Spark平台采用两次评价的加权选择集成三支聚类方法 | |
US10467060B2 (en) | Performing data analytics utilizing a user configurable group of reusable modules | |
Wang et al. | A scalable data science workflow approach for big data bayesian network learning | |
JP7486250B2 (ja) | 高速スクリーニングのためのドメイン固有言語インタープリタ及び対話型視覚インターフェース | |
Patel et al. | A hybrid CNN-LSTM model for predicting server load in cloud computing | |
Ma et al. | Fuzzy hypergraph network for recommending top-K profitable stocks | |
Xu et al. | Graph partitioning and graph neural network based hierarchical graph matching for graph similarity computation | |
Saddad et al. | Lake data warehouse architecture for big data solutions | |
Muniswamaiah et al. | Data virtualization for decision making in big data | |
Suleiman et al. | An empirical evaluation of intelligent machine learning algorithms under big data processing systems | |
CN115409541A (zh) | 基于数据血缘的卷烟品牌数据处理方法 | |
Fatima et al. | Automated feature synthesis from relational database for data science related problems | |
Jayasree | Data Mining: Exploring Big Data Using Hadoop and Map Reduce | |
Ntaliakouras et al. | An apache spark methodology for forecasting tourism demand in greece | |
Hsu et al. | Similarity search over personal process description graph | |
Ferranti et al. | An experimental analysis on evolutionary ontology meta-matching | |
SMITH et al. | A level-wise taxonomic perspective on automated machine learning to date and beyond: Challenges and opportunities | |
Araujo | gingado: a machine learning library focused on economics and finance | |
US20240012997A1 (en) | Learning embedded representation of a correlation matrix to a network with machine learning | |
Harsh et al. | Big Data hysteria, cognizance and scope | |
Greasley | Using analytics with discrete-event simulation | |
CN118093439A (zh) | 一种基于一致图聚类的微服务提取方法和系统 | |
Chiou et al. | Building a distributed, gpu-based machine learning library |
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 |