一种基于两阶段的微服务异味检测方法

文档序号:37194309发布日期:2024-03-01 13:07阅读:14来源:国知局
一种基于两阶段的微服务异味检测方法

本发明属于计算机,涉及一种微服务系统异味检测方法,具体涉及一种静态阶段和运行态阶段下的多而杂的微服务异味的检测方法。


背景技术:

1、对微服务架构缺乏足够的经验和知识会导致微服务在设计和实现过程中引入糟糕的做法和模式,我们称这种糟糕的做法和模式为微服务异味。微服务异味不仅体现在代码的不良设计上,而且会伤害微服务系统的性能、可靠性和可扩展性等,增加维护难度。微服务异味具有较强的潜藏性,若不能及时发现和消除,这些异味会逐渐积累并对系统的多个质量属性造成严重的损害。及时精准的检测微服务异味并指导开发人员进行修复,才能保证微服务系统健康、持久运行,保障良好的服务质量。

2、现阶段,微服务系统的异味检测分为两大类。一类是在静态阶段下分析微服务源码,通过基于规则的算法检测异味。另一类是在运行态阶段,分析微服务系统实时数据检测异味。第一种检测方法能够快速检测出异味,但检测的微服务异味类型相对较少,且某些异味的检测方法具有一定的局限性。第二种检测方法能够检测运行态下实时产生的异味,虽然检测精准,但检测的微服务异味类型也较少。


技术实现思路

1、为了解决现有微服务异味检测方法中存在的局限性,本发明提供了一种基于两阶段的微服务异味检测方法。该方法采用静态和运行态两阶段结合的方法,能够全面检测、精准定位多而杂的微服务异味。本发明有助于微服务开发人员及时进行系统修复,避免对系统造成进一步损害,保障系统可靠持久运行。

2、本发明的目的是通过以下技术方案实现的:

3、一种基于两阶段的微服务异味检测方法,包括如下步骤:

4、步骤s1、根据微服务系统源码文件,采取具体的分析项(度量指标),基于一个或多个分析项,检测不同类型的微服务异味,具体步骤如下:

5、步骤s11、遍历全部微服务模块,读取类文件和配置文件的内容,提取涉及到微服务异味的代码结构分析、依赖关系分析、调用关系分析、语言使用情况分析、配置文件分析5个方面的分析项,其中:代码结构分析包括api、目标字符串匹配、服务模块实体数量的分析;依赖关系分析包括接口和类之间的关系,类和接口的传入、传出数量,每个类(接口)中对其他类(接口)的引用情况的分析;调用关系分析包括每个服务对其他服务的调用情况、每个服务中方法调用情况的分析;语言使用情况分析指统计分析不同语言的使用量和占比;配置文件分析包括对pom文件、yaml或properities文件的具体分析。

6、步骤s12、将1个或多个分析项结合,以此为基础进行不同异味的检测。

7、步骤s2、将步骤s1中不同类型异味检测算法的结果汇总,包括采取静态分析检测方式的判定结果、采取静态和运行态结合分析检测方式的初步判定结果。

8、步骤s3、在微服务系统运行时,实时收集运行时容器性能日志、运行时路径追踪日志、运行时数据库操作日志。具体步骤如下:

9、步骤s31、请求kubernetesapiserver,收集不同微服务相应的容器的性能信息,主要包括容器名、容器cpu使用情况和内存使用情况。

10、步骤s32、通过自定义注解和自定义用于添加或修改请求头信息的过滤器,实现在运行态下发生服务间调用时输出并持久化服务调用信息,收集不同服务间调用时的基本信息,包括被调用方的服务名和接口名、整个服务调用链路traceid、当前调用链路id、前驱调用链路parentid、服务调用方ip和port等,将上述基本信息作为运行时路径追踪信息持久化存储到日志中。

11、步骤s33、自定义注解和切面类,通过springaop技术实现在运行时输出服务访问数据库的操作信息,包括增、删、改、查4类操作;收集不同服务模块访问关系型数据库时的数据操作信息,包括日志输出时间、数据访问框架、访问数据库的服务名、数据库url、数据库名称、第二数据库url、第二数据库名称、数据表名称、数据操作。

12、步骤s4、根据步骤s2收集的静态和运行态结合分析检测方式的初步判定结果、步骤s3收集的各种微服务运行时日志,进行运行态下异味的判定。具体步骤如下:

13、步骤s41、根据步骤s2收集的静态和运行态结合分析检测方式的初步判定结果,结合实时收集的运行时路径追踪日志和数据操作信息,通过基于规则的算法做出异味的最终判定。

14、步骤s42、根据步骤s3收集的容器性能日志和运行时路径追踪日志,对采取运行态分析方式的异味做出检测。

15、步骤s5、将静态分析、运行态分析、静态和运行态结合分析3种不同检测方式的结果汇总,以json字符串形式输出,每种异味的每个检测结果均包含位置信息。

16、相比于现有技术,本发明具有如下优点:

17、1、本发明将微服务的静态和运行态两阶段结合,能够提取静态度量信息和运行态度量信息,用于检测多而杂的微服务异味。

18、2、本发明提出了3种具体的微服务异味检测方式,每种检测方式适用于不同类型的异味。当定义新的微服务异味类型时,可根据异味特点选择最佳检测方式。

19、3、本发明提出了静态阶段下用于检测微服务异味的具体分析项,覆盖了5个方面的11个分析项,基于此提出了针对不同类型异味的检测方法。

20、4、本发明能够实现收集运行态下微服务的3种实时日志信息,通过具体的基于规则的算法,检测不同类型的异味。



技术特征:

1.一种基于两阶段的微服务异味检测方法,其特征在于所述方法包括如下步骤:

2.根据权利要求1所述的基于两阶段的微服务异味检测方法,其特征在于所述步骤s1的具体步骤如下:

3.根据权利要求1所述的基于两阶段的微服务异味检测方法,其特征在于所述步骤s3的具体步骤如下:

4.根据权利要求1所述的基于两阶段的微服务异味检测方法,其特征在于所述步骤s4的具体步骤如下:

5.根据权利要求4所述的基于两阶段的微服务异味检测方法,其特征在于所述采取运行态分析方式的异味具体包括循环依赖、服务可用性低、服务使用不均、服务接口使用不均、服务资源使用不均共5种异味。

6.根据权利要求5所述的基于两阶段的微服务异味检测方法,其特征在于对于循环依赖的检测,根据收集到的路径追踪日志信息,构造完整的服务调用链路,每个链路通过id唯一标识当前链路,通过parentid与前驱链路相连,通过traceid标识所属请求链;去除链路数为0或首条链路的parentid不为null的无效调用链;遍历有效调用链的每个节点,构造调用图,通过拓扑排序来判断图中是否存在调用环;若存在,则证明存在循环依赖异味,记录该异味的相关信息;

7.根据权利要求6所述的基于两阶段的微服务异味检测方法,其特征在于所述为整个系统服务调用次数的标准差,n代表服务总数,si代表服务编号,callsi代表服务si对其他服务的调用次数。


技术总结
本发明公开了一种基于两阶段的微服务异味检测方法,所述方法包括如下步骤:S1、根据微服务系统源码文件,采取具体的分析项,基于一个或多个分析项,检测不同类型的微服务异味;S2、将不同类型异味检测算法的结果汇总;S3、在微服务系统运行时,实时收集运行时容器性能日志、运行时路径追踪日志、运行时数据库操作日志;S4、根据静态和运行态结合分析检测方式的初步判定结果、各种微服务运行时日志,进行运行态下异味的判定;S5、将3种不同检测方式的结果汇总,以JSON字符串形式输出,每种异味的每个检测结果均包含位置信息。该方法采用静态和运行态两阶段结合的方法,能够全面检测、精准定位多而杂的微服务异味。

技术研发人员:涂志莹,邢永超,杨伟攀,初佃辉
受保护的技术使用者:哈尔滨工业大学(威海)
技术研发日:
技术公布日:2024/2/29
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1