[发明专利]一种基于执行跟踪的微服务提取方法有效
申请号: | 202110480199.2 | 申请日: | 2021-04-30 |
公开(公告)号: | CN113204465B | 公开(公告)日: | 2022-05-17 |
发明(设计)人: | 李莹;陈斌;毛义华;张凌飞 | 申请(专利权)人: | 浙江大学;浙江大学滨海产业技术研究院 |
主分类号: | G06F11/30 | 分类号: | G06F11/30;G06F16/18;G06K9/62 |
代理公司: | 杭州天勤知识产权代理有限公司 33224 | 代理人: | 彭剑 |
地址: | 310013 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 执行 跟踪 微服 提取 方法 | ||
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的次数。
5.根据权利要求4所述的基于执行跟踪的微服务提取方法,其特征在于,使用average-linkage的具体过程为:
把两个集合中的点两两的距离全部放在一起求一个平均值,从而分离簇类间有噪声的数据集,公式为:
其中,Dismn表示候选簇类m和候选簇类n之间的距离,∑dij表示候选簇类m和候选簇类n中的类两两距离之和,sizem和sizen分别表示候选簇类m和候选簇类n所含类的个数,clusterm和clustern分别表示候选簇类m和候选簇类n。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学;浙江大学滨海产业技术研究院,未经浙江大学;浙江大学滨海产业技术研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110480199.2/1.html,转载请声明来源钻瓜专利网。