CN112540749B - 微服务划分方法、装置、计算机设备和可读存储介质 - Google Patents

微服务划分方法、装置、计算机设备和可读存储介质 Download PDF

Info

Publication number
CN112540749B
CN112540749B CN202011278702.8A CN202011278702A CN112540749B CN 112540749 B CN112540749 B CN 112540749B CN 202011278702 A CN202011278702 A CN 202011278702A CN 112540749 B CN112540749 B CN 112540749B
Authority
CN
China
Prior art keywords
classes
modularity
initial
combined
dependency
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
Application number
CN202011278702.8A
Other languages
English (en)
Other versions
CN112540749A (zh
Inventor
黄翔
金蕾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Southern Power Grid Digital Platform Technology Guangdong Co ltd
Original Assignee
China Southern Power Grid Digital Platform Technology Guangdong Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Southern Power Grid Digital Platform Technology Guangdong Co ltd filed Critical China Southern Power Grid Digital Platform Technology Guangdong Co ltd
Priority to CN202011278702.8A priority Critical patent/CN112540749B/zh
Publication of CN112540749A publication Critical patent/CN112540749A/zh
Application granted granted Critical
Publication of CN112540749B publication Critical patent/CN112540749B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种微服务划分方法、装置、计算机设备和可读存储介质,该微服务划分方法通过获取软件包中的所有类;识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵;根据依赖矩阵对所有类进行聚类,得到聚类结果;根据聚类结果将软件包划分为多个微服务。本发明提供的微服务划分方法根据所有类之间的依赖关系,对软件包中的所有类进行聚类,最终根据聚类结果划分微服务,这样无需研发人员对软件包中的代码进行分析,能够降低人工成本。

Description

微服务划分方法、装置、计算机设备和可读存储介质
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种微服务划分方法、装置、计算机设备和可读存储介质。
背景技术
微服务是一种新型的编程模型,由于其轻量级、易扩展,且支撑局部功能灰度在线滚动升级,同时,可以应对互联网突发负载,并且能够根据应用规模动态调节资源规模等优势,已称为当前主流的应用开发模式。随着互联网应用的不断普及,采用传统的单体式开发系统开发的企业级应用在面对开发和动态的用户请求,以及在扩展性和升级迭代周期等均难以满足用户的需求。因此,将传统的单体式开发系统改造为微服务的需求越来越旺盛。
传统技术中,将传统的单体式开发系统改造为微服务,通常手动完成,或者基于指令拆分。但是基于指令拆分是研发人员对单体式开发系统进行分析后设计的。因此,传统技术中将单体式开发系统改为微服务的方法存在人工成本较高的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种微服务划分方法、装置、计算机设备和可读存储介质。
一方面,本申请一个实施例提供一种微服务划分方法,包括:
获取软件包中的所有类;
识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵;
根据依赖矩阵,对所有类进行聚类,得到聚类结果;
根据聚类结果,将软件包划分为多个微服务。
在其中一个实施例中,根据依赖矩阵,对所有类进行聚类,得到聚类结果,包括:
获取初始聚类,计算初始聚类的初始微服务模块性值,其中,初始微服务模块性值用于表示初始聚类的耦合性;
根据预设的组合规则对初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性值;
根据目标微服务模块性值确定聚类结果。
在其中一个实施例中,根据预设的组合规则对初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性值,包括:
执行组合计算步骤;
其中,组合计算步骤包括:将初始聚类中的聚类进行两两组合,形成多个组合聚类;针对每个组合聚类,分别基于组合聚类和初始聚类中剩余的聚类,计算每个组合聚类对应的组合微服务模块性值;分别计算每个组合微服务模块性值与初始微服务模块性值之间的差值,得到多个组合模块性差值;
将多个组合模块性差值中的最大值对应的组合聚类作为新的初始聚类,并返回执行组合计算步骤,直至多个组合模块性差值位于预设范围为止,将最后一次得到的多个组合模块性差值中的最大值对应的组合聚类的微服务模块性值作为所述目标微服务模块性值。
在其中一个实施例中,计算初始聚类的初始微服务模块性值,包括:
根据依赖矩阵、初始聚类和所有类的依赖度,计算所有类的初始微服务模块性值。
在其中一个实施例中,根据依赖关系,构建依赖矩阵,包括:
将所有类作为依赖矩阵的行;
将与依赖矩阵的行中的类存在依赖关系的类作为依赖矩阵的列;
根据行中的类与列中的类之间的依赖关系,确定依赖矩阵中各个元素的值。
在其中一个实施例中,根据行中的类与列中的类之间的依赖关系,确定依赖矩阵中各个元素的值,包括:
若行中的类与列中的类之间存在依赖关系,则依赖矩阵中元素的值为第一预设值;
若行中的类与列中的类之间不存在依赖关系,则依赖矩阵中元素的值为第二预设值。
在其中一个实施例中,还包括:
根据各个微服务中的所有类之间的依赖关系,计算各个微服务之间的依赖度;
根据依赖度,对多个微服务进行修正。
另一方面,本申请一个实施例提供一种微服务划分装置,包括:
获取模块,用于获取软件包中的所有类;
构建模块,用于识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵;
确定模块,用于根据依赖矩阵,对所有类进行聚类,得到聚类结果;
划分模块,用于根据聚类结果,将软件包划分多个微服务。
本申请一个实施例还提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上述实施例提供的方法的步骤。
本申请一个实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述实施例提供的方法的步骤。
本申请提供一种微服务划分方法、装置、计算机设备和可读存储介质,该微服务划分方法通过获取软件包中的所有类;识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵;根据依赖矩阵对所有类进行聚类,得到聚类结果;根据聚类结果将软件包划分为多个微服务。在本实施例中,根据所有类之间的依赖关系,对所有类进行聚类,最终根据聚类结果划分微服务,这样无需研发人员对软件包中的代码进行分析,能够降低人工成本。
附图说明
为了更清楚地说明本申请实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域不同技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一个实施例提供的微服务划分方法的步骤流程示意图;
图2为本申请一个实施例提供的微服务划分方法的步骤流程示意图;
图3为本申请一个实施例提供的微服务划分方法的步骤流程示意图;
图4为本申请一个实施例提供的微服务划分方法的步骤流程示意图;
图5为本申请一个实施例提供的微服务划分方法的步骤流程示意图;
图6为本申请一个实施例提供的微服务划分方法的步骤流程示意图;
图7为本申请一个实施例提供的微服务划分装置的结构示意图;
图8为本申请一个实施例提供的计算机设备的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。
下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请提供的微服务划分方法适用于各种传统单体式开发的系统。传统单体式开发的系统由于所有功能模块均打包在一个或者多个软件包中,通常会集中部署在一台或者一个集群中各服务器部署的软件包中。而微服务的主要目标式将功能高度内聚的功能模块打包在一个独立的软件包中,可以单独的部署,绕后通过多个微服务的协同,形成一个完整的系统。本申请提供的微服务方法可以识别出一个或者多个软件包中高内聚低耦合的功能模块,并根据功能模块划分为多个微服务。
本申请提供的微服务划分方法可以通过计算机设备实现。计算机设备包括但不限于控制芯片、个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。本申请提供的方法可以通过JAVA软件实现,也可以应用于其他软件。
请参见图1,本申请一个实施例提供一种微服务划分方法,具体的步骤包括:
S100,获取软件包中的所有类。
S200,识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵。
软件包的数量可以是一个,也可以是多个,软件包的数量可以根据使用者需要划分的单体式开发的系统设置。所有类是指软件包中代码文件中的所有的类。本实施例对计算机设备获取软件包中所有类的方法不作任何限制。在一个具体的实施例中,计算机设备可以通过遍历软件包中代码文件来获取所有类。所有类之间的依赖关系是指各个类之间是否具有引用关系。计算机设备在识别所有类之间的依赖关系时,可以在获取所有类同时识别所有类中各个类之间是否具有引用关系。具体的,若获取的所有类包括A、B、C、D和E。若A引用B,也就是说,A的功能在实现时需要依赖B,同理,若B引用A,说明B的功能在实现时也需要依赖A。根据各个类之间的依赖关系,以及各个类,构成依赖矩阵。具体的,本实施例对构建成的依赖矩阵的维度和依赖矩阵中的各个元素不作任何限制,研发人员可以按照所有类的数量以及各个类之间是否存在引用关系自行设置。
S300,根据依赖矩阵,对所有类进行聚类,得到聚类结果;
S400,根据聚类结果,将软件包划分为多个微服务。
根据依赖矩阵可以表示出所有类中各个类之间是否存在依赖关系,根据各个类之间的依赖关系,对所有类进行聚类,得到聚类结果。具体的,将具有较强依赖关系的类聚为一组,具有较弱或者不存在依赖关系的类分为不同的组,最终得到的聚类结果为将所有类分别多个不同的组。最终得到的聚类结果中将所有类分为几个不同的组,则将软件包中所有类划分为几个微服务。本实施例对聚类的具体方法不作任何限制,只要能够实现其功能即可。
本实施例提供的微服务划分方法通过获取软件包中的所有类;识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵;根据依赖矩阵对所有类进行聚类,得到聚类结果;根据聚类结果将软件包划分为多个微服务。在本实施例中,根据所有类之间的依赖关系,对所有类进行聚类,最终根据聚类结果划分微服务,这样无需研发人员对软件包中的代码进行分析,能够降低人工成本。并且,根据聚类结果划分得到的微服务之间低耦合,能够有效的提升将单体式开发系统改造为微服务的效率。
请参见图2,步骤S300“根据依赖矩阵,对所有类进行聚类,得到聚类结果”一种可能的实现方式包括:
S310,获取初始聚类,计算初始聚类的初始微服务模块性值,其中,初始微服务模块性值用于表示初始聚类的耦合性。
初始聚类可以是研发人员根据软件包中的所有类的功能将所有类分为多个聚类,即,将所有类根据其实现的功能分为多组,也可以是研发人员直接将每个类作为一个聚类,即,计算机设备获取的所有类中多少个类,就有多少个聚类。本实施例对初始聚类的具体划分不作任何限制。初始聚类的耦合性是指初始聚类中所有聚类之间的依赖性,依赖性越强,则耦合性越高,依赖性越弱,则耦合性越弱。换句话说,若初始聚类是将所有类中的每个类作为一个聚类形成的,则初始微服务模块可以表示所有类之间是否存在依赖关系。本实施例对具体计算初始聚类的初始微服务模块性值的方法不作任何限制,只要能够实现其功能即可。
在一个实施例中,根据依赖矩阵、初始聚类和所有类的依赖度,计算所有类的初始微服务模块性值。假设依赖矩阵为D,维度为N×N,依赖度为d,初始微服务模块性值为S。初始微服务模块性值S可以用公式表示其中,L表示包含依赖关系的类的数量,N表示所有类的数量,di表示类i的依赖度,依赖度是指有多少个类与类i存在依赖关系,dj表示类j的依赖度,依赖度是指有多少个类与类j存在依赖关系;Dij表示依赖矩阵中第i行第j列所对应的元素的值;ci表示类i的聚类,cj表示类j的聚类,δ是克罗内克函数,当克罗内克函数中的两个参数相等时,返回1;当两个参数不相等时,返回0。换句话说,当类i和类j属于同一聚类时,克罗内克函数返回1;当类i和类j不属于同一聚类时,克罗内克函数返回0。
S320,根据预设的组合规则对初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性值。
S330,根据目标微服务模块性值确定聚类结果。
预设的组合规则可以是研发人员根据初始聚类中聚类的数量或者各聚类之间的依赖关系对初始聚类进行组合。多种组合方式可以形成多个组合后的组合聚类。对于计算多个组后的组合聚类的目标微服务模块性值的方法的具体描述可以参考上述实施例中对初始微服务模块性值的描述,在此不再赘述。在一个具体的实施例中,可以在初始聚类中随机选取三个聚类进行组合,得到组合聚类,计算该组合聚类的微服务模块性值。假设在初始聚类中的随机选取三个不同的聚类有M中选取方式,则可以得到M个组合聚类,需要计算M个组合聚类的目标微服务模块性值。目标微服务模块性值所对应的组合聚类,即为最终的聚类结果。
请参见图3,步骤S320“根据预设的组合规则对初始聚类进行组合,并计算多个组合后的目标微服务模块性值”的一种可能的实现方式包括:
S321,执行组合计算步骤;其中,组合计算步骤包括:将初始聚类中的聚类进行两两组合,形成多个组合聚类;针对每个组合聚类,计算每个组合聚类对应的组合微服务模块性值;分别计算每个组合微服务模块性值与初始微服务模块性值之间的差值,得到多个组合模块性差值。
具体的,若初始聚类包括聚类a、聚类b、聚类c、聚类d和聚类e。将初始聚类中的聚类进行两两组合,形成多个组合聚类,可以是指将聚类a和聚类b组合成聚类m,则形成的组合聚类E包括聚类m、聚类c、聚类d和聚类e;将聚类a和聚类c组合成聚类n,形成的组合聚类F包括聚类n、聚类b、聚类d和聚类e,按照此方式可以形成多个组合聚类。针对每个组合聚类,分别基于组合聚类和初始聚类中剩余的聚类,计算每个组合聚类对应的组合微服务模块性值,是指分别计算组合聚类E的组合微服务模块性值Se和组合聚类F的组合微服务模块性值Sf,按照此方式可以分别计算形成的多个组合聚类的微服务模块性值。分别计算每个组合微服务模块性值初始微服务模块性值之间的差值,得到多个组合模块性差值,是指假设初始微服务模块性值为S,则计算Se与S之间的差值,得到第一组合模块性差值;计算Sf与S之间的差值,得到第二组合模块性差值;按照此方式可以计算多个组合微服务模块性值与初始微服务模块性值之间的差值,得到多个组合模块性差值。
S320,将多个组合模块性差值中的最大值对应的组合聚类作为新的初始聚类,并返回执行组合计算步骤。
S330,直至多个组合模块性差值的位于预设范围为止,将最后一次得到的多个组合模块性差值中的最大值对应的组合聚类的微服务模块性值作为目标微服务模块性值。
对比得到的多个组合模块性差值,得到其中的最大值。组合模块性差值最大表明组合聚类和初始聚类之间的耦合性较弱,该组合聚类是所需的。则将差值中的最大值对应的组合聚类作为初始聚类,返回执行步骤S321。在多个组合模块性差值位于预设范围时,也就是说,根据计算新得到的多个组合聚类计算得到的多个微服务组合模块性值与根据上一次的多个组合聚类计算的多个微服务组合模块性值之间的差值在预设范围时,可以表明新的多个组合聚类是最优的。则将此时多个组合模块性差值中的最大值所对应的组合聚类的微服务模块性值作为目标微服务模块性值。在本申请中,对初始聚类进行两两聚类的方式,可以更好保证最终得到的组合聚类中各聚类之间的耦合性较弱,使得最终得到的聚类结果更加准确,从而使得根据聚类结果划分的多个微服务具有高内聚低耦合的特点。
请参见图4,在一个实施例中,步骤S200“根据依赖关系,构建依赖矩阵”一种可能的实现方式包括:
S210,将所有类作为依赖矩阵的行。
S220,将与依赖矩阵的行中的类存在依赖关系的类作为依赖矩阵的列。
S230,根据行中的类与列中的类之间的依赖关系,确定依赖矩阵中各个元素的值。
计算机设备将获取的软件包中的所有类作为依赖矩阵的行,换句话说,获取的所有类的数量即为依赖矩阵的行的数量。计算机设备将与依赖矩阵的行中的类存在依赖关系的类作为依赖矩阵的列,即,依赖矩阵中列中的类是与依赖矩阵中行中的某一个类或多个类存在依赖关系的类。依赖矩阵的行数和列数可以相同,也可以不同。在一个具体的实施例中,在所有类中各个类除其本身外,其他类与所有类中的某一个类或多个类存在依赖关系,此时,依赖矩阵的行数与列数相同,则可以将依赖矩阵的行中类的排列顺序与列中类的排列顺序相同。例如:所有类包括A、B、C、D、和E,A依赖与B和C,B依赖于A和C,D依赖于A和D,D依赖于E。此时,将依赖矩阵的行和类均设置为(A,B,C,D,E)。
请参见图5,在一个实施例中,步骤S230“根据行中的类与列中的类之间的依赖关系,确定依赖矩阵中各个元素的值”的一种可能的实现方式包括:
S231,若行中的类与列中的类之间存在依赖关系,则依赖矩阵中元素的值为第一预设值;
S232,若行中的类与列中的类之间不存在依赖关系,则依赖矩阵中元素的值为第二预设值。
根据识别的所有类之间的依赖关系,可以确定行中的类与列中的类之间的依赖关系。在行中的类与列中的类之间存在依赖关系时,即,行中的类实现其功能需要引用列中的类,则将依赖矩阵中该行与该列对应的元素值设为第一预设值。具体的,第一预设值可以为1。在行中的类与列中的类之间不存在依赖关系时,即,行中的类实现其功能与列中类无关,则将依赖矩阵中该行与该列对应的元素值设为第二预设值。具体的第二预设值为0。
请参见图6,在一个实施例中,微服务划分方法还包括:
S500,根据各个微服务中所有类之间的依赖关系,计算各个微服务之间的依赖度;
S600,根据依赖度,对多个微服务进行修正。
各个微服务之间的依赖度为各个微服务中所有类之间依赖度的总和。例如:微服务W中包括类A、B和C,微服务U中包括类D、E和F。A依赖B和C,B依赖C,C依赖D,D依赖E和F,F依赖E。微服务W中所有类对应微服务U中所有类之间的依赖度为1,即,微服务W中只有一个类需要依赖微服务U中的类;微服务U中所有类对应微服务W中所有类之间的依赖度为0,即,微服务U中没有类需要依赖微服务W中的类。若计算机设备计算出各个微服务中存在循环依赖的关系,即,微服务W中的类依赖微服务U中的类,微服务U中的类也依赖微服务W中的类,则对多个微服务进行修正。具体的,计算机设备可以重新对所有类进行聚类,也可以输出提示,告知研发人员,使得研发人员对具有多个微服务之间具有较大依赖度的代码进行修改。本实施例对具体的修正方法不作限制,使用者可以根据实际情况进行设置。在本实施例中,通过各个微服务之间的依赖度,在对多个微服务进行修正,能够使得最终得到的微服务具有高内聚低耦合的性能。
应该理解的是,虽然图中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
请参见图7,本申请一个实施例提供一种微服务划分装置10包括获取模块100、构建模块200、确定模块300和划分模块400。其中,
获取模块100用于获取软件包中的所有类;
构建模块200用于识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵;
确定模块300用于根据依赖矩阵,对所有类进行聚类,得到聚类结果;
划分模块400用于根据聚类结果,将所述软件包划分为多个微服务。
在一个实施例中,确定模块300包括计算单元310和确定单元320,计算单元310用于获取初始聚类,计算初始聚类的初始微服务模块性值,其中,初始微服务模块性值用于表示初始聚类的耦合性;计算单元310还用于根据预设的组合规则对初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性;确定单元320用于根据目标微服务模块性值确定聚类结果。
在一个实施例中,计算单元310还用于执行组合计算步骤,其中,组合计算步骤包括:将初始聚类中的聚类进行两两组合,形成多个组合聚类;针对每个组合聚类,分别基于组合聚类和初始聚类中剩余的聚类,计算每个组合聚类对应的组合微服务模块性值;分别计算每个组合微服务模块性值与初始微服务模块性值之间的差值,得到多个组合模块性差值;计算单元310还用于将多个组合模块性差值中的最大值对应的组合聚类作为新的初始聚类,并返回执行组合计算步骤,直至多个组合模块性差值位于预范围为止,将最后一次得到的多个组合模块性差值中的最大值对应的组合聚类的微服务模块性值作为目标微服务模块性值。
在一个实施例中,计算单元310还用于根据依赖矩阵、初始聚类和所有类的依赖度,计算所有类的初始微服务模块性值。
在一个实施例中,构建模块200还用于将所有类作为依赖矩阵的行;将与依赖矩阵的行中的类存在依赖关系的类作为依赖矩阵的列;根据行中的类与列中的类之间的依赖关系,确定依赖矩阵中各个元素的值。
在一个实施例中,构建模块200还用于若行中的类与列中的类之间存在依赖关系,则依赖矩阵中元素的值为第一预设值;若行中的类与列中的类之间不存在依赖关系,则依赖矩阵中元素的值为第二预设值。
在一个实施例中,微服务划分模块10还包括计算模块500和修正模块600,计算模块500用于根据各个微服务中的所有类之间的依赖关系,计算各个微服务之间的依赖度;修正模块600用于根据依赖度,对多个微服务进行修正。
关于上述微服务划分装置10的具体限定可以参见上文中对于微服务划分方法的限定,在此不再赘述。微服务划分装置10中的各个模块可以全部或部分通过软件、硬件及其组合来实现。上述各装置、各模块或者各单元可以以硬件形式内嵌于或独立于计算机设备中的处理器中通过,也可以以软件形式存储与计算机设备中的存储器中,以便于处理器调用执行以上各个装置或模块对应的操作。
请参见图8,在一个实施例中,提供了一种计算机设备,计算机设备可以是服务器,其内部结构图可以如图8所示。计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,计算机设备的处理器用于提供计算和控制能力。计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。计算机设备的数据库用于存储所有类和依赖矩阵等。计算机设备的网络接口用于与外部的终端通过网络连接通信。计算机设备被处理器执行时以实现一种微服务划分方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本申请一个实施例提供一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取软件包中的所有类;
识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵;
根据依赖矩阵,对所有类进行聚类,得到聚类结果;
根据聚类结果,将软件包划分为多个微服务。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取初始聚类,计算初始聚类的初始微服务模块性值,其中,初始微服务模块性值用于表示初始聚类的耦合性;根据预设的组合规则对初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性值;根据目标微服务模块性值确定聚类结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:执行组合计算步骤;其中,组合计算步骤包括:将初始聚类中的聚类进行两两组合,形成多个组合聚类;针对每个组合聚类,分别基于组合聚类和初始聚类中剩余的聚类,计算每个组合聚类对应的组合微服务模块性值;分别计算每个组合微服务模块性值与初始微服务模块性值之间的差值,得到多个组合模块性差值;将多个组合模块性差值中的最大值对应的组合聚类作为新的初始聚类,并返回执行组合计算步骤,直至多个组合模块性差值位于预设范围为止,将最后一次得到的多个组合模块性差值中的最大值对应的组合聚类的微服务模块性值作为所述目标微服务模块性值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据依赖矩阵、初始聚类和所有类的依赖度,计算所有类的初始微服务模块性值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将所有类作为依赖矩阵的行;将与依赖矩阵的行中的类存在依赖关系的类作为依赖矩阵的列;根据行中的类与列中的类之间的依赖关系,确定依赖矩阵中各个元素的值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若行中的类与列中的类之间存在依赖关系,则依赖矩阵中元素的值为第一预设值;若行中的类与列中的类之间不存在依赖关系,则依赖矩阵中元素的值为第二预设值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据各个微服务中的所有类之间的依赖关系,计算各个微服务之间的依赖度;根据依赖度,对多个微服务进行修正。
本申请一个实施例提供一种计算机可读存储介质,其上方存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取软件包中的所有类;
识别所有类之间的依赖关系,并根据依赖关系,构建依赖矩阵;
根据依赖矩阵,对所有类进行聚类,得到聚类结果;
根据聚类结果,将软件包划分为多个微服务。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取初始聚类,计算初始聚类的初始微服务模块性值,其中,初始微服务模块性值用于表示初始聚类的耦合性;根据预设的组合规则对初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性值;根据目标微服务模块性值确定聚类结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:执行组合计算步骤;其中,组合计算步骤包括:将初始聚类中的聚类进行两两组合,形成多个组合聚类;针对每个组合聚类,分别基于组合聚类和初始聚类中剩余的聚类,计算每个组合聚类对应的组合微服务模块性值;分别计算每个组合微服务模块性值与初始微服务模块性值之间的差值,得到多个组合模块性差值;将多个组合模块性差值中的最大值对应的组合聚类作为新的初始聚类,并返回执行组合计算步骤,直至多个组合模块性差值位于预设范围为止,将最后一次得到的多个组合模块性差值中的最大值对应的组合聚类的微服务模块性值作为所述目标微服务模块性值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据依赖矩阵、初始聚类和所有类的依赖度,计算所有类的初始微服务模块性值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将所有类作为依赖矩阵的行;将与依赖矩阵的行中的类存在依赖关系的类作为依赖矩阵的列;根据行中的类与列中的类之间的依赖关系,确定依赖矩阵中各个元素的值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若行中的类与列中的类之间存在依赖关系,则依赖矩阵中元素的值为第一预设值;若行中的类与列中的类之间不存在依赖关系,则依赖矩阵中元素的值为第二预设值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据各个微服务中的所有类之间的依赖关系,计算各个微服务之间的依赖度;根据依赖度,对多个微服务进行修正。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种微服务划分方法,其特征在于,包括:
获取软件包中的所有类;
识别所述所有类之间的依赖关系,并根据所述依赖关系,构建依赖矩阵;
根据所述依赖矩阵,对所述所有类进行聚类,得到聚类结果;
根据所述聚类结果,将所述软件包划分为多个微服务;
其中,所述根据所述依赖矩阵,对所述所有类进行聚类,得到聚类结果,包括:
获取初始聚类,根据所述依赖矩阵计算所述初始聚类的初始微服务模块性值,其中,所述初始微服务模块性值用于表示所述初始聚类的耦合性;
根据预设的组合规则对所述初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性值;
根据所述目标微服务模块性值确定所述聚类结果。
2.根据权利要求1所述的方法,其特征在于,所述根据预设的组合规则对所述初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性值,包括:
执行组合计算步骤;
其中,所述组合计算步骤包括:将所述初始聚类中的聚类进行两两组合,形成多个组合聚类;针对每个组合聚类,分别基于组合聚类和所述初始聚类中剩余的聚类,计算每个所述组合聚类对应的组合微服务模块性值;分别计算每个所述组合微服务模块性值与所述初始微服务模块性值之间的差值,得到多个组合模块性差值;
将所述多个组合模块性差值中的最大值对应的组合聚类作为新的初始聚类,并返回执行所述组合计算步骤,直至所述多个组合模块性差值位于预设范围为止,将最后一次得到的多个组合模块性差值中的最大值对应的组合聚类的微服务模块性值作为所述目标微服务模块性值。
3.根据权利要求1所述的方法,其特征在于,所述根据所述依赖矩阵计算所述初始聚类的初始微服务模块性值,包括:
根据所述依赖矩阵、所述初始聚类和所述所有类的依赖度,计算所述所有类的所述初始微服务模块性值。
4.根据权利要求1所述的方法,其特征在于,所述根据所述依赖关系,构建依赖矩阵,包括:
将所述所有类作为所述依赖矩阵的行;
将与所述依赖矩阵的行中的类存在依赖关系的类作为所述依赖矩阵的列;
根据所述行中的类与所述列中的类之间的依赖关系,确定所述依赖矩阵中各个元素的值。
5.根据权利要求4所述的方法,其特征在于,所述根据所述行中的类与所述列中的类之间的依赖关系,确定所述依赖矩阵中各个元素的值,包括:
若所述行中的类与所述列中的类之间存在依赖关系,则所述依赖矩阵中元素的值为第一预设值;
若所述行中的类与所述列中的类之间不存在依赖关系,则所述依赖矩阵中元素的值为第二预设值。
6.根据权利要求1所述的方法,其特征在于,还包括:
根据各个微服务中的所有类之间的依赖关系,计算所述各个微服务之间的依赖度;
根据所述依赖度,对所述多个微服务进行修正。
7.一种微服务划分装置,其特征在于,包括:
获取模块,用于获取软件包中的所有类;
构建模块,用于识别所述所有类之间的依赖关系,并根据所述依赖关系,构建依赖矩阵;
确定模块,用于根据所述依赖矩阵,对所述所有类进行聚类,得到聚类结果;
划分模块,用于根据所述聚类结果,将所述软件包划分多个微服务;
所述确定模块包括计算单元和确定单元;
所述计算单元,用于获取初始聚类,根据所述依赖矩阵计算所述初始聚类的初始微服务模块性值,其中,所述初始微服务模块性值用于表示所述初始聚类的耦合性;根据预设的组合规则对所述初始聚类进行组合,并计算多个组合后的组合聚类的目标微服务模块性值;
所述确定单元,用于根据所述目标微服务模块性值确定所述聚类结果。
8.根据权利要求7所述的装置,其特征在于,
所述计算单元,还用于根据所述依赖矩阵、所述初始聚类和所述所有类的依赖度,计算所述所有类的所述初始微服务模块性值。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202011278702.8A 2020-11-16 2020-11-16 微服务划分方法、装置、计算机设备和可读存储介质 Active CN112540749B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011278702.8A CN112540749B (zh) 2020-11-16 2020-11-16 微服务划分方法、装置、计算机设备和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011278702.8A CN112540749B (zh) 2020-11-16 2020-11-16 微服务划分方法、装置、计算机设备和可读存储介质

Publications (2)

Publication Number Publication Date
CN112540749A CN112540749A (zh) 2021-03-23
CN112540749B true CN112540749B (zh) 2023-10-24

Family

ID=75014242

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011278702.8A Active CN112540749B (zh) 2020-11-16 2020-11-16 微服务划分方法、装置、计算机设备和可读存储介质

Country Status (1)

Country Link
CN (1) CN112540749B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113222388A (zh) * 2021-04-30 2021-08-06 中核武汉核电运行技术股份有限公司 一种微服务评价方法及装置
US11880387B2 (en) * 2021-06-06 2024-01-23 International Business Machines Corporation Cognitive analysis of hierarchical database elements for generation of microservices
CN113726856A (zh) * 2021-08-11 2021-11-30 北京科东电力控制系统有限责任公司 基于微服务的调控画面综合数据轻量化交互方法及系统

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002222220A (ja) * 2001-01-25 2002-08-09 Japan Science & Technology Corp モジュール性評価方法、モジュール性評価プログラム、モジュール性評価プログラムを記録したコンピュータ読取り可能な記録媒体
US9792562B1 (en) * 2016-04-21 2017-10-17 Sas Institute Inc. Event prediction and object recognition system
CN109840120A (zh) * 2018-12-21 2019-06-04 平安科技(深圳)有限公司 解耦微服务发布方法、电子装置及计算机可读存储介质
CN109948710A (zh) * 2019-03-21 2019-06-28 杭州电子科技大学 基于api相似度的微服务识别方法
CN110083791A (zh) * 2019-05-05 2019-08-02 北京三快在线科技有限公司 目标群组检测方法、装置、计算机设备及存储介质
CN110825589A (zh) * 2019-11-07 2020-02-21 字节跳动有限公司 用于微服务系统的异常检测方法及其装置和电子设备
CN110909015A (zh) * 2019-09-12 2020-03-24 华为技术有限公司 微服务的拆分方法、装置、设备及存储介质
CN111475158A (zh) * 2020-03-16 2020-07-31 咪咕文化科技有限公司 子领域划分方法、装置、电子设备和计算机可读存储介质
CN111596924A (zh) * 2020-06-18 2020-08-28 南方电网科学研究院有限责任公司 一种微服务划分方法和装置
CN111651451A (zh) * 2020-04-25 2020-09-11 复旦大学 一种场景驱动的单体系统微服务拆分方法
CN111752641A (zh) * 2020-06-29 2020-10-09 深圳壹账通智能科技有限公司 微服务容器之间服务启动方法、装置、设备及存储介质
CN111913690A (zh) * 2020-06-15 2020-11-10 成都飞机工业(集团)有限责任公司 一种基于马尔可夫聚类的软件模块划分方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170805B2 (en) * 2010-07-20 2015-10-27 Hitachi, Ltd. Software maintenance supporting device for analyzing relationships between variables

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002222220A (ja) * 2001-01-25 2002-08-09 Japan Science & Technology Corp モジュール性評価方法、モジュール性評価プログラム、モジュール性評価プログラムを記録したコンピュータ読取り可能な記録媒体
US9792562B1 (en) * 2016-04-21 2017-10-17 Sas Institute Inc. Event prediction and object recognition system
CN109840120A (zh) * 2018-12-21 2019-06-04 平安科技(深圳)有限公司 解耦微服务发布方法、电子装置及计算机可读存储介质
CN109948710A (zh) * 2019-03-21 2019-06-28 杭州电子科技大学 基于api相似度的微服务识别方法
CN110083791A (zh) * 2019-05-05 2019-08-02 北京三快在线科技有限公司 目标群组检测方法、装置、计算机设备及存储介质
CN110909015A (zh) * 2019-09-12 2020-03-24 华为技术有限公司 微服务的拆分方法、装置、设备及存储介质
CN110825589A (zh) * 2019-11-07 2020-02-21 字节跳动有限公司 用于微服务系统的异常检测方法及其装置和电子设备
CN111475158A (zh) * 2020-03-16 2020-07-31 咪咕文化科技有限公司 子领域划分方法、装置、电子设备和计算机可读存储介质
CN111651451A (zh) * 2020-04-25 2020-09-11 复旦大学 一种场景驱动的单体系统微服务拆分方法
CN111913690A (zh) * 2020-06-15 2020-11-10 成都飞机工业(集团)有限责任公司 一种基于马尔可夫聚类的软件模块划分方法
CN111596924A (zh) * 2020-06-18 2020-08-28 南方电网科学研究院有限责任公司 一种微服务划分方法和装置
CN111752641A (zh) * 2020-06-29 2020-10-09 深圳壹账通智能科技有限公司 微服务容器之间服务启动方法、装置、设备及存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Matrix Clustering based Migration of System Application to Microservices Architecture;Shahbaz Ahmed Khan Ghayyur;《INTERNATIONAL JOURNAL OF ADVANCED COMPUTER SCIENCE AND APPLICATIONS》;1-8 *
Process Analysis of Service Modularization Based on Cluster Arithmetic;Ling Yang;《2009 First International Workshop on Database Technology and Applications》;1-7 *
多模型数据库的微流程服务设计与实现;李涛;《电子设计工程》;21-29 *
面向智慧景区的情境化电子商务平台;金榆林;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;I138-5570 *

Also Published As

Publication number Publication date
CN112540749A (zh) 2021-03-23

Similar Documents

Publication Publication Date Title
CN112540749B (zh) 微服务划分方法、装置、计算机设备和可读存储介质
CN108492005B (zh) 项目数据处理方法、装置、计算机设备和存储介质
CN110675959A (zh) 数据智能分析方法、装置、计算机设备及存储介质
CN113326126A (zh) 任务处理方法、任务调度方法、装置及计算机设备
CN111400555B (zh) 图数据查询任务处理方法、装置、计算机设备和存储介质
CN111881477B (zh) 数据内容的标引方法、装置、计算机设备及存储介质
CN111225050A (zh) 云计算资源分配方法及装置
CN111178830A (zh) 成本的核算方法、装置、计算机设备和存储介质
CN112231224A (zh) 基于人工智能的业务系统测试方法、装置、设备和介质
CN110704177A (zh) 计算任务处理方法、装置、计算机设备和存储介质
CN113504918A (zh) 设备树配置优化方法、装置、计算机设备和存储介质
CN111209111B (zh) 基于区块链系统的资源分配方法、装置、设备和存储介质
CN117311998A (zh) 一种大模型部署方法及系统
CN111158901B (zh) 计算图的优化方法、装置、计算机设备和存储介质
CN113065887A (zh) 资源处理方法、装置、计算机设备和存储介质
CN110688400A (zh) 数据处理方法、装置、计算机设备和存储介质
CN113837467B (zh) 点对点能源项目评估方法、装置、计算机设备和存储介质
CN110704437A (zh) 数据库查询语句的修改方法、装置、设备和存储介质
CN116909695A (zh) 基于区块链的算力网络的算力任务处理方法及系统
CN114003305B (zh) 设备相似度计算方法、计算机设备和存储介质
CN113395342B (zh) 一种基于负载均衡分配的电网监控系统前置服务调度方法
CN111191982B (zh) 订单分组方法、装置、计算机设备和存储介质
AU2016235121B2 (en) Systems and methods for detecting copied computer code using fingerprints
CN115328631A (zh) 大数据任务调度模型训练方法、装置、设备及存储介质
CN113467892A (zh) 分布式集群资源配置方法及其相应的装置、设备、介质

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230816

Address after: 518000 building 501, 502, 601, 602, building D, wisdom Plaza, Qiaoxiang Road, Gaofa community, Shahe street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: China Southern Power Grid Digital Platform Technology (Guangdong) Co.,Ltd.

Address before: Room 86, room 406, No.1, Yichuang street, Zhongxin Guangzhou Knowledge City, Huangpu District, Guangzhou City, Guangdong Province

Applicant before: Southern Power Grid Digital Grid Research Institute Co.,Ltd.

GR01 Patent grant
GR01 Patent grant