CN113204465B - 一种基于执行跟踪的微服务提取方法 - Google Patents
一种基于执行跟踪的微服务提取方法 Download PDFInfo
- Publication number
- CN113204465B CN113204465B CN202110480199.2A CN202110480199A CN113204465B CN 113204465 B CN113204465 B CN 113204465B CN 202110480199 A CN202110480199 A CN 202110480199A CN 113204465 B CN113204465 B CN 113204465B
- Authority
- CN
- China
- Prior art keywords
- class
- execution
- calling
- tracking
- micro
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于执行跟踪的微服务提取方法,包括以下步骤:(1)执行跟踪工具在目标单体应用系统运行时收集跟踪信息,执行路径被记录在日志文件中;(2)在日记记录中,找到TraceID和SessionID都相同的记录归为一类,即一次调用的执行跟踪;其中,SessionID是标记会话的全局唯一ID;TraceID是标记执行链路的全局唯一ID;(3)根据每一次调用的执行跟踪记录,得到整个执行跟踪记录中的方法调用关系,进一步根据每个方法所属的类,得到类之间的调用关系;(4)得到了类与类之间的调用后,使用聚类算法进行聚类得到对应的微服务。利用本发明的方法,方便将传统的单体应用向微服务进行改造升级。
Description
技术领域
本发明属于微服务技术领域,尤其是涉及一种基于执行跟踪的微服务提取方法。
背景技术
近年来,随着微服务的发展,微服务架构已被众多公司采用,以开发应用程序并替代传统的单体应用程序。
基于微服务的系统旨在将一组较小的服务集成到应用程序中。每个服务都在其自己的进程中运行,并且可以独立发展。这些服务通常围绕业务功能构建,并负责其自身的功能。
如公开号为CN111124430A的中国专利文献公开了一种混合架构的微服务部署方法和装置,公开号为CN109947547A的中国专利文献公开了一种基于云计算的微服务构架方法。
相较于单体应用程序,微服务有着许多优势,微服务由协作以实现其目标的服务组成,并通过轻量级机制(例如Web API)进行通信。它是一种创建应用程序的方法,以独立的方式开发,通常可以高效地处理过程和互操作性,并允许连续集成、部署。它还促进了微服务之间的低耦合和高凝聚力。因此,它避免了更改一项微服务以影响另一项微服务,从而最大程度地减少了维护工作。此外,通过使不同的服务具有不同的部署周期,微服务可以独立使用和扩展,从而减少了发布周期。
微服务提取的主要任务是从现有的整体软件中查找哪些软件实体(例如方法,类)应归为一组,作为候选微服务,这些软件实体负责特定功能并独立发展。
现有的微服务提取技术,主要是提供一些微服务提取原则和方法,仍然需要软件架构师或开发人员根据约束去进行手动拆分,虽然这样的方法拆分的更为精准,但是这是一项劳动强度很大的工作,需要花费大量的人力时间。
发明内容
为解决现有技术存在的上述问题,本发明提供了一种基于执行跟踪的微服务提取方法,以方便将传统的单体应用向微服务进行改造升级。
本发明的技术方案如下:
一种基于执行跟踪的微服务提取方法,包括以下步骤:
(1)执行跟踪工具在目标单体应用系统运行时收集跟踪信息,执行路径被记录在日志文件中;
(2)在日记记录中,找到TraceID和SessionID都相同的记录归为一类,即一次调用的执行跟踪;其中,SessionID是标记会话的全局唯一ID;TraceID是标记执行链路的全局唯一ID;
(3)根据每一次调用的执行跟踪记录,得到整个执行跟踪记录中的方法调用关系,进一步根据每个方法所属的类,得到类之间的调用关系;
(4)得到了类与类之间的调用后,使用聚类算法进行聚类得到对应的微服务。
优选地,步骤(1)中,所述的跟踪工具为Kieker,收集跟踪信息的过程为:首先用Kieker将探针插入目标单体应用系统中,使用事先准备好的涵盖所有功能的执行测试用例,在执行完测试用例后,得到执行的跟踪信息。
进一步地,每条日志记录由十个参数组成:Type、SeqID、Method、SessionID、TraceID、Tin、Tout、HostName、Eoi和Ess;
其中,Type表示的是类型,SeqID表示序号ID,Method表示被调用的方法,包括类名、方法名、参数列表和修饰符;SessionID是标记会话的全局唯一ID;TraceID是标记执行链路的全局唯一ID;Tin和Tout表示调用方法前后的时间戳;HostName表示主机名;Eoi和Ess是方法调用顺序和调用堆栈的深度。
进一步地,步骤(3)中,得到整个执行跟踪记录中的方法调用关系的方法为:
在每一次调用的执行跟踪记录中,如果essi=essj-1并且eoii<eoij,则得到methodi调用methodj;
其中,essi和essj分别表示第i和第j条记录的调用堆栈深度,eoii和eoij分别表示第i和第j条记录的方法调用顺序,即essi=essj-1并且eoii<eoij的意思是记录i的调用堆栈深度比记录j小一层且记录i调用顺序比记录j早,methodi和methodj分别表示记录i和记录j记录的方法。
进一步地,步骤(3)中,得到类之间的调用关系的方法为:
如果classi!=classj并且methodi调用methodj,则得到classi调用classj;其中,!=表示不等于,methodi和methodj分别表示记录i和记录j记录的方法,classi和classj分别表示methodi和methodj所属的类。
优选地,步骤(4)中,所述的聚类算法采用层次聚类算法,将类i与类j之间的调用次数作为距离dij,计算聚类之间的距离时使用average-linkage,经过层次聚类算法计算后得到类的结果,每一个簇类就是要提取的微服务。
将类i与类j之间的调用次数作为距离dij的公式为:
dij=cntij+cntji
其中,cntij表示类i调用类j的次数,cntji表示类j调用类i的次数。
使用average-linkage的具体过程为:
把两个集合中的点两两的距离全部放在一起求一个平均值,从而分离簇类间有噪声的数据集,公式为:
其中,Dismn表示候选簇类m和候选簇类n之间的距离,Σdij表示候选簇类m和候选簇类n中的类两两距离之和,sizem和sizen分别表示候选簇类m和候选簇类n所含类的个数,clusterm和clustern分别表示候选簇类m和候选簇类n。
与现有技术相比,本发明具有以下有益效果:
现有的相关微服务提取技术,仍需软件架构师或开发人员根据约束去进行手动拆分,需要花费大量的人力时间,该发明可以明显减少架构师或开发人员进行微服务拆分时的人力时间投入。
附图说明
图1为微服务的拆分示意图
图2为本发明实施例使用Kieker执行跟踪后根据日志得到类之间调用关系流程图;
图3为本发明实施中采用的层次聚类算法示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细描述,需要指出的是,以下所述实施例旨在便于对本发明的理解,而对其不起任何限定作用。
如图1所示,微服务的系统旨在将一组较小的服务集成到应用程序中。本发明的微服务提取方法基于执行跟踪信息来进行提取,采用的执行跟踪信息收集工具是Kieker。
首先将Kieker将探针插入目标单体应用系统中,使用事先准备好的尽可能涵盖所有功能的执行测试用例,在执行完测试用例后,可以得到执行跟踪信息,执行跟踪信息被记录在日志文件中。
每条日志记录由十个参数组成:Type,SeqID,Method,SessionID,TraceID,Tin,Tout,HostName,Eoi和Ess。其中Method表示被调用的方法,包括类名,方法名,参数列表,修饰符。SessionID是标记会话的全局唯一ID。TraceId是标记执行链路的全局唯一ID。Eoi和Ess是方法调用顺序和调用堆栈的深度。
在日志记录中,首先聚合TraceID和SessionID都相同的记录归为一类,即一次调用的执行跟踪。
在每一次调用的执行跟踪记录中,如果essi=essj-1并且eoii<eoij,即方法调用顺序i在j之前,且他们的调用深度差为1,所以就可以得到methodi调用methodj。
针对每一次调用的执行跟踪记录可以得到该链路中的方法调用关系,同理对所有的调用都分别进行这样的计算就可以得到应用程序中所有方法之间的调用关系。可以根据每个方法所属的类,得到类之间的调用关系,即如果classi!=classj并且methodi调用methodj,那么就可以得到classi调用classj,根据Kieker得到执行日志从而得到类之间调用关系的流程图如图2。
得到了类与类之间的调用后,可以使用聚类算法进行聚类得到对应的微服务。本实施例中,聚类算法采用的层次聚类算法,将类i与类j之间的调用次数作为距离dij,包括类i调用类j和类j调用类i即:
dij=cntij+cntji
其中,cntij表示类i调用类j的次数,cntji表示类j调用类i的次数。
计算聚类之间的距离使用的是average-linkage,这种方法是把两个集合中的点两两的距离全部放在一起求一个平均值,该方法可以很好的分离簇类间有噪声的数据集,即:
式中,Dismn表示候选簇类m和候选簇类n之间的距离,Σdij表示候选簇类m和候选簇类n中的类两两距离之和,sizem和sizen分别表示候选簇类m和候选簇类n所含类的个数,clusterm和clustern分别表示候选簇类m和候选簇类n。
这样经过层次聚类算法计算后就可以得到类的结果,如图3所示。这样每一个簇类就是我们所要提取的微服务。
以上所述的实施例对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的具体实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于执行跟踪的微服务提取方法,其特征在于,包括以下步骤:
(1)执行跟踪工具在目标单体应用系统运行时收集跟踪信息,执行路径被记录在日志文件中;
(2)在日记记录中,找到TraceID和SessionID都相同的记录归为一类,即一次调用的执行跟踪;其中,SessionID是标记会话的全局唯一ID;TraceID是标记执行链路的全局唯一ID;
(3)根据每一次调用的执行跟踪记录,得到整个执行跟踪记录中的方法调用关系,进一步根据每个方法所属的类,得到类之间的调用关系;得到整个执行跟踪记录中的方法调用关系的方法为:
在每一次调用的执行跟踪记录中,如果essi=essj-1并且eoii<eoij,则得到methodi调用methodj;
essi和essj分别表示第i和第j条记录的调用堆栈深度,eoii和eoij分别表示第i和第j条记录的方法调用顺序,methodi和methodj分别表示记录i和记录j记录的方法;
得到类之间的调用关系的方法为:
如果classi!=classj并且methodi调用methodj,则得到classi调用classj;其中,!=表示不等于,methodi和methodj分别表示记录i和记录j记录的方法,classi和classj分别表示methodi和methodj所属的类;
(4)得到了类与类之间的调用后,使用聚类算法进行聚类得到对应的微服务;
所述的聚类算法采用层次聚类算法,将类i与类j之间的调用次数作为距离dij,计算聚类之间的距离时使用average-linkage,经过层次聚类算法计算后得到类的结果,每一个簇类就是要提取的微服务。
2.根据权利要求1所述的基于执行跟踪的微服务提取方法,其特征在于,步骤(1)中,所述的跟踪工具为Kieker,收集跟踪信息的过程为:首先用Kieker将探针插入目标单体应用系统中,使用事先准备好的涵盖所有功能的执行测试用例,在执行完测试用例后,得到执行的跟踪信息。
3.根据权利要求1所述的基于执行跟踪的微服务提取方法,其特征在于,步骤(1)中,每条日志记录由十个参数组成:Type、SeqID、Method、SessionID、TraceID、Tin、Tout、HostName、Eoi和Ess;
其中,Type表示的是类型,SeqID表示序号ID,Method表示被调用的方法,包括类名、方法名、参数列表和修饰符;SessionID是标记会话的全局唯一ID;TraceID是标记执行链路的全局唯一ID;Tin和Tout表示调用方法前后的时间戳;HostName表示主机名;Eoi和Ess是方法调用顺序和调用堆栈的深度。
4.根据权利要求1所述的基于执行跟踪的微服务提取方法,其特征在于,将类i与类j之间的调用次数作为距离dij的公式为:
dij=cntij+cntji
其中,cntij表示类i调用类j的次数,cntji表示类j调用类i的次数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110480199.2A CN113204465B (zh) | 2021-04-30 | 2021-04-30 | 一种基于执行跟踪的微服务提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110480199.2A CN113204465B (zh) | 2021-04-30 | 2021-04-30 | 一种基于执行跟踪的微服务提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113204465A CN113204465A (zh) | 2021-08-03 |
CN113204465B true CN113204465B (zh) | 2022-05-17 |
Family
ID=77029622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110480199.2A Active CN113204465B (zh) | 2021-04-30 | 2021-04-30 | 一种基于执行跟踪的微服务提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113204465B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847443B2 (en) | 2021-09-07 | 2023-12-19 | International Business Machines Corporation | Constraints-based refactoring of monolith applications through attributed graph embeddings |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778710B (zh) * | 2021-09-01 | 2024-04-02 | 杭州视洞科技有限公司 | 一种网关树形执行链 |
US11726778B2 (en) | 2021-09-29 | 2023-08-15 | International Business Machines Corporation | Translating clusters of a monolith application to microservices |
US11768679B2 (en) * | 2021-11-30 | 2023-09-26 | International Business Machines Corporation | Identifying microservices for a monolith application through static code analysis |
CN116501383B (zh) * | 2023-06-26 | 2023-08-22 | 亚信科技(中国)有限公司 | 微服务的分配方法、装置、电子设备及可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101588369B (zh) * | 2009-06-25 | 2012-03-14 | 浙江大学 | 一种基于Service Cache的服务发现方法 |
CN108279892B (zh) * | 2018-02-27 | 2021-05-28 | 郑州云海信息技术有限公司 | 一种拆分大型应用服务为微服务的方法、装置及设备 |
US11669914B2 (en) * | 2018-05-06 | 2023-06-06 | Strong Force TX Portfolio 2018, LLC | Adaptive intelligence and shared infrastructure lending transaction enablement platform responsive to crowd sourced information |
CN111459766B (zh) * | 2019-11-14 | 2024-01-12 | 国网浙江省电力有限公司信息通信分公司 | 一种面向微服务系统的调用链跟踪与分析方法 |
CN111124430A (zh) * | 2019-12-31 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种混合架构的微服务部署方法和装置 |
CN112437147B (zh) * | 2020-11-19 | 2023-01-17 | 浙江大学滨海产业技术研究院 | 一种微服务负载均衡最佳路由算法、装置、设备以及介质 |
-
2021
- 2021-04-30 CN CN202110480199.2A patent/CN113204465B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847443B2 (en) | 2021-09-07 | 2023-12-19 | International Business Machines Corporation | Constraints-based refactoring of monolith applications through attributed graph embeddings |
Also Published As
Publication number | Publication date |
---|---|
CN113204465A (zh) | 2021-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113204465B (zh) | 一种基于执行跟踪的微服务提取方法 | |
CN109861844B (zh) | 一种基于日志的云服务问题细粒度智能溯源方法 | |
CN112183036B (zh) | 一种格式文档生成方法、装置、设备及存储介质 | |
CN108664635B (zh) | 数据库统计信息的获取方法、装置、设备和存储介质 | |
CN107451120B (zh) | 一种公开文本情报的内容冲突检测方法及系统 | |
CN110134663B (zh) | 组织结构数据处理方法、装置、电子设备 | |
CN109508346A (zh) | 一种ddl操作的级联同步控制方法及系统 | |
CN116503705B (zh) | 一种数字城市多源数据的融合方法 | |
CN109062951A (zh) | 基于意图分析和对话聚类的对话流程抽取方法、设备及存储介质 | |
CN117294727A (zh) | 一种基于云原生和容器技术的云边端协同管理方法 | |
CN103970901A (zh) | 一种地理信息图形数据整合方法 | |
US20220215679A1 (en) | Method of determining a density of cells in a cell image, electronic device, and storage medium | |
CN113159326B (zh) | 基于人工智能的智能业务决策方法 | |
CN101488148A (zh) | 一种从多个数据库中进行数据整理归集的方法 | |
CN104636324B (zh) | 话题溯源方法和系统 | |
CN113849659A (zh) | 一种审计制度时序知识图谱的构建方法 | |
CN112560925A (zh) | 一种复杂场景目标检测数据集构建方法及系统 | |
CN107707540A (zh) | 一种基于消息字段分隔符识别的网络协议逆向分析方法 | |
US20120271789A1 (en) | Apparatus and method for prediction development speed of technology | |
CN115982314A (zh) | 一种基于事件日志的软件开发活动聚类分析方法及系统 | |
CN115080386A (zh) | 基于自动驾驶功能要求的场景有效性分析方法与设备 | |
CN112182413A (zh) | 一种基于教学大数据的智能推荐方法及服务器 | |
CN114034260A (zh) | 一种基于流媒体与bim的深基坑围护结构变形诊断系统 | |
CN103902905B (zh) | 基于软件结构聚类的恶意代码生成器识别方法及系统 | |
CN116501726B (zh) | 基于GraphX图计算的信创云平台数据化运营系统 |
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 |