一种基于一致图聚类的微服务提取方法和系统

专利检索2026-06-13  8


本发明涉及软件工程和人工智能,具体涉及一种基于一致图聚类的微服务提取方法和系统。


背景技术:

1、传统的单体架构中,应用程序是作为一个整体来开发的,随着需求的发展以及业务的迭代,单体应用程序的代码规模可能会随之增加,从而导致一系列问题的出现。与单体架构不同,微服务架构将一个单一应用程序开发为一组小型服务,其中每个服务负责一个特定功能。这些服务具备高内聚、低耦合以及独立开发、测试和部署等特点。近年来,随着云计算的不断发展,微服务架构相对于单体程序的优势逐渐显露,因此越来越多的公司希望将他们遗留的单体程序重构为微服务,从而能够更好地受益于云部署带来的好处。然而目前的微服务提取方法大多是手工完成的,耗时耗力且容易出错,而传统的自动化微服务提取方法不能有效地融合单体程序丰富的结构信息和语义信息。

2、微服务提取是指将单体应用程序划分为多个微服务的过程。其中每个微服务负责一个独立的功能,微服务内具有高内聚性,微服务间具有低耦合性。微服务提取方法根据数据的收集方式可以划分为三类:基于静态分析的方式、基于动态分析的方式以及结合静态分析和动态分析的方式。部分研究人员提出了一种基于知识图谱划分微服务的方法。他们首先分析了系统的模块、功能、实体以及对硬件资源的依赖,然后将实体划分为基于系统数据存储和操作的数据实体,基于系统业务构成的模块实体,基于系统业务构成的功能实体以及基于系统硬件依赖关系的资源实体四种类型,并将单体应用程序表示为使用这四种实体类型的图结构,最后使用louvain算法获取候选微服务。部分研究人员提出了一种微服务划分工具cargo,该工具通过静态分析来创建单体应用程序的系统依赖图,这个系统依赖图反映了单体应用程序中存在的各种关系,包括调用返回边缘、数据流边缘、堆依赖边缘和数据库事务边缘,并提出了社区检测算法,使用单体应用程序的上下文和流敏感的系统依赖图来细化当前分区,从而得到高内聚低耦合的微服务。部分研究人员首先确定要拆分的应用程序的主要任务及其子任务;然后定义程序流程以确定哪些任务可以转换为函数,并确定函数之间如何进行交互;最后指定实际的函数并合并那些太小的函数以生成候选微服务。该方法适用于任何规模的应用程序。部分研究人员结合了静态和动态分析策略的优势,提出了一种混合解决方案来分解单体应用程序。该方案根据运行时分析构造动态调用矩阵,根据对代码的静态分析,识别类的语义信息以及类之间的交互关系,从而构造静态结构矩阵以及语义矩阵。最后使用dbscan聚类算法得到候选微服务。

3、综上所述,近几年伴随着人工智能技术的发展,微服务提取工作取得了很大进展,尽管进行了大量的研究,但目前仍缺乏将单体程序丰富的结构信息和语义信息进行联合建模的方法,使得微服务提取性能略低。


技术实现思路

1、本发明的目的是为了提供一种基于一致图聚类的微服务提取方法和系统,能够有效处理单体程序丰富的结构信息和语义信息。

2、为实现上述技术目的,本发明采取的技术方案为:

3、一种基于一致图聚类的微服务提取方法,所述微服务提取方法包括以下步骤:

4、步骤s1:采用静态分析策略,提取java单体程序中类和类之间的调用关系、继承关系、实现关系和引用关系,基于类之间的依赖关系得到结构依赖视图的节点属性矩阵和结构依赖视图的邻接矩阵,根据结构依赖视图的节点属性矩阵和结构依赖视图的邻接矩阵构建结构依赖视图;

5、步骤s2:提取创建类过程中使用的文本信息,基于tf-idf算法生成语义视图的节点属性矩阵,使用余弦相似度计算节点嵌入表示的相关性,生成语义视图的邻接矩阵,根据语义视图的节点属性矩阵和语义视图的邻接矩阵构建单体程序的语义视图;

6、步骤s3:利用一致图增强图transformer编码器分别建模结构视图和语义视图的一致性信息和不一致性信息,采用设计的相似性损失函数最大化一致信息,生成一致图,对单体程序结构信息和语义信息进行统一建模;

7、步骤s4:基于k-means算法对步骤s3得到的一致图聚类,对微服务进行提取。

8、进一步地,步骤s1中,基于类之间的依赖关系和邻接矩阵构建结构依赖视图的过程包括以下步骤:

9、步骤s11:通过对java应用程序的源代码进行分析,获取java源代码的底层抽象语法树;

10、步骤s12:从底层抽象语法树中提取以下信息:类名、注释列表、变量名、引用列表、方法列表、从其他类调用的方法列表、所继承的类的列表、引用列表以及实现列表;

11、步骤s13:根据步骤s12中提取的信息,得到类之间的调用依赖关系、继承依赖关系、引用依赖关系和实现依赖关系,统计任意两个类之间依赖关系的个数,得到结构依赖视图的节点属性矩阵;结构依赖视图的节点属性矩阵定义如下:

12、

13、其中表示结构依赖视图节点属性矩阵的第i行、第j列的值,a表示节点和节点之间存在a个依赖关系;

14、步骤s14:若类之间存在依赖关系,则创建两个类之间的边,得到边集合e,构建结构依赖视图的邻接矩阵;结构依赖视图的邻接矩阵定义如下:

15、

16、其中,分别表示节点i和节点j,表示结构依赖视图邻接矩阵的第i行、第j列的值;

17、步骤s15:根据结构视图的节点属性矩阵和邻接矩阵,得到结构依赖视图,其中v表示节点集合,表示整体应用程序中的一个类。

18、进一步地,步骤s2中,构建单体程序的语义视图的过程包括以下步骤:

19、步骤s21:根据步骤s12中得到的信息,提取每个类定义中使用的文本信息,对于文本中的每个单词,使用驼峰命名法进行分割,将其拆分成多个单词,并过滤掉停用词;

20、步骤s22:测量每个单词的tf-idf值,得到一个大小为的矩阵,其中表示节点个数,表示从单体应用程序中提取到的所有单词个数;将该矩阵作为语义视图的节点属性矩阵;

21、步骤s23:根据节点属性矩阵,计算任意两个类之间的余弦相似度,得到语义视图的邻接矩阵;

22、步骤s24:根据语义视图的节点属性矩阵和邻接矩阵,得到语义视图,其中v表示节点集合。

23、进一步地,步骤s3中,生成一致图的过程包括以下步骤:

24、步骤s31:将单体程序的结构依赖视图和语义视图分别输入到一致图增强图transformer编码器,学习得到结构依赖视图和语义视图的一致性信息和不一致性信息,分别表示为,,和;其中,和分别表示结构依赖视图的一致性特征和专有特征,和分别表示语义视图的一致性特征和专有特征;

25、设计下述损失函数进行训练:

26、

27、其中,函数的表达式为,表示两个矩阵对应位置相乘;

28、步骤s32:将步骤s31中得到结构依赖视图和语义视图的一致性特征和专有特征分别输入前馈层,经归一化操作和非线性激活操作后,得到新的结构依赖视图和语义视图的一致性特征和专有特征,分别表示为、、和;

29、步骤s33:将步骤s32中得到的结构依赖视图和语义视图的一致性特征和专有特征输入一致图增强图transformer解码器得到结构依赖视图的重构特征和语义视图的重构特征,计算损失值:

30、

31、其中,表示结构视图中节点属性矩阵和重建节点属性矩阵中对应第i行的节点表示,,表示语义视图中节点属性矩阵和重建节点属性矩阵中对应第j行的节点表示;

32、对结构依赖视图的邻接矩阵和语义视图的邻接矩阵进行重构,计算如下损失:

33、

34、式中,和分别表示结构依赖视图和语义视图经过编码器得到的一致性特征和专有特征拼接得到的表示的第i行和第j行;

35、步骤s34:将步骤s32中得到的结构依赖视图和语义视图的一致性特征拼接得到一致图:

36、。

37、进一步地,步骤s31中,对于结构视图,其对应的一致性特征和专有特征分别为:

38、

39、

40、

41、其中,,,通过对图的拉普拉斯矩阵进行因式分解得到,表示特征向量的维度,为全连接层的参数,为非线性映射层参数,表示映射的维度,,。

42、进一步地,步骤s32中,对于结构视图的一致性特征,经前馈层得到:

43、

44、

45、

46、其中表示归一化操作,,为矩阵的度矩阵,表示图卷积层的参数,表示非线性激活函数。

47、进一步地,步骤s4中,基于k-means算法对步骤s3得到的一致图聚类,对微服务进行提取的过程包括以下步骤:

48、对于步骤s3得到的一致图z,使用k-means算法对节点聚类,假设簇划分为,则计算如下损失:

49、

50、其中z表示节点的嵌入向量,表示簇的质心,综合、、和形成新的损失函数:

51、

52、其中为超参数;通过最小化损失函数训练并优化一致图增强图transformer的参数。

53、第二方面,本发明还公开了一种基于一致图聚类的微服务提取系统,所述微服务提取系统包括信息提取模块、分层多头自注意力模块、基于图卷积神经网络的前馈层模块和一致图增强图transformer解码器模块;

54、所述信息提取模块对java源代码进行分析,提取类之间的依赖关系以及创建类过程中使用的文本信息,构建结构依赖视图和语义视图;

55、所述分层多头自注意力模块同时关注视图的一致性信息和不一致性信息,在去除不一致性信息的同时学习和建模一致性信息,并基于设计的相似性损失函数最大化两个视图的一致性信息;

56、所述基于图卷积神经网络的前馈层模块以所述分层多头自注意力模块的输出和对应视图的邻接矩阵作为输入得到更好的特征嵌入表示;

57、所述一致图增强图transformer解码器模块包括掩码多头自注意力模块、多头注意力模块和所述基于图卷积神经网络的前馈层模块,将每个视图的一致性信息和不一致性信息的拼接结果输入所述解码器模块得到重构的节点特征,基于重构误差设计重构损失函数。

58、第三方面,本发明还公开了一种计算机可读存储介质,存储有计算机程序,所述计算机程序使计算机执行如前所述的基于一致图聚类的微服务提取方法。

59、第四方面,本发明还公开了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如前所述的基于一致图聚类的微服务提取方法。

60、与现有技术相比,本发明的有益效果如下:

61、第一,本发明的基于一致图聚类的微服务提取方法和系统,能够将单体应用程序转化为结构依赖视图和语义视图表示,有效处理单体程序丰富的结构信息和语义信息。

62、第二,本发明的基于一致图聚类的微服务提取方法和系统,提出了一个基于一致图增强的图transformer模型,该模型提出的分层多头自注意力模块能够同时建模视图的一致部分和不一致部分,在保留一致部分的同时学习和去除不一致部分,从而获得一个一致图,实现对单体程序结构信息和语义信息的统一建模。

63、第三,本发明的基于一致图聚类的微服务提取方法和系统,为了能够更好地利用图的结构信息,使用基于图卷积层的前馈层进一步提取特征,实现了微服务提取在功能性和模块性方面性能的提升。


技术特征:

1.一种基于一致图聚类的微服务提取方法,其特征在于,所述微服务提取方法包括以下步骤:

2.根据权利要求1所述的基于一致图聚类的微服务提取方法,其特征在于,步骤s1中,基于类之间的依赖关系和邻接矩阵构建结构依赖视图的过程包括以下步骤:

3.根据权利要求1所述的基于一致图聚类的微服务提取方法,其特征在于,步骤s2中,构建单体程序的语义视图的过程包括以下步骤:

4.根据权利要求1所述的基于一致图聚类的微服务提取方法,其特征在于,步骤s3中,生成一致图的过程包括以下步骤:

5.根据权利要求4所述的基于一致图聚类的微服务提取方法,其特征在于,步骤s31中,对于结构视图,其对应的一致性特征和专有特征分别为:

6.根据权利要求4所述的基于一致图聚类的微服务提取方法,其特征在于,步骤s32中,对于结构视图的一致性特征,经前馈层得到:

7.根据权利要求4所述的基于一致图聚类的微服务提取方法,其特征在于,步骤s4中,基于k-means算法对步骤s3得到的一致图聚类,对微服务进行提取的过程包括以下步骤:

8.一种基于一致图聚类的微服务提取系统,其特征在于,所述微服务提取系统包括信息提取模块、分层多头自注意力模块、基于图卷积神经网络的前馈层模块和一致图增强图transformer解码器模块;

9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序使计算机执行如权利要求1-7任一项所述的基于一致图聚类的微服务提取方法。

10.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如权利要求1-7任一项所述的基于一致图聚类的微服务提取方法。


技术总结
本发明公开了一种基于一致图聚类的微服务提取方法和系统,包括单体程序结构依赖视图构建、单体程序语义视图构建、基于一致图增强图Transformer的特征嵌入表示学习、基于k‑means聚类算法的微服务提取。本发明通过提取单体程序中类之间的依赖关系和创建类的过程中使用的文本信息,构建结构依赖视图和语义视图,再通过一致图增强图Transformer生成一致图,实现单体程序结构信息和语义信息的统一建模,最后基于得到的一致图,利用k‑means聚类算法实现对单体程序的拆分。本发明结合单体程序多视图信息,构建一致图增强图Transformer,实现了微服务提取在功能性和模块性方面性能的提升。

技术研发人员:位雪银,李静,吴金龙,顾荣斌,何旭东,方晓蓉,邵佳炜,张皛,潘晨灵,刘文意,周忠冉,李马峰,蔡世龙,潘安顺,顾亚林,张俊杰,邱文元,富思
受保护的技术使用者:南京航空航天大学
技术研发日:
技术公布日:2024/5/29
转载请注明原文地址:https://win.8miu.com/read-1163783.html

最新回复(0)