本发明属于服务器监测领域,具体而言涉及一种微服务架构运行异常的监测方法及系统。
背景技术:
1、随着互联网技术的发展和业务需求的不断增长,现代软件系统的复杂性与规模日益增加。传统的单体架构逐渐难以满足快速迭代、弹性扩展和高可用性的要求,微服务架构因此应运而生。微服务架构通过将单一的大型应用拆分为多个独立的小型服务,每个服务专注于完成特定的业务功能,并通过轻量级的通信机制(如http/rest、grpc等)进行交互。这种架构在提升系统灵活性、开发效率和扩展能力方面展现出了显著优势。
2、然而,微服务架构的引入也带来了新的挑战。由于服务数量的增加及其独立部署的特性,服务间的依赖关系变得复杂且动态。服务之间的调用链可能涉及多个节点,系统的整体状态难以通过传统的监控手段来全面掌握。同时,服务调用的频率、响应时间、错误率等性能指标会受到多方面因素的影响,在实际运行中,这些指标的波动可能预示着潜在的异常或系统故障。如果这些异常不能及时被发现和处理,可能会导致系统性能下降,甚至引发更严重的服务中断。
3、传统的监控方法主要依赖于对单个服务或节点的静态监控,如资源使用率、请求数和响应时间等。这些方法往往只能捕捉单点问题,难以有效监测复杂系统中服务间的动态依赖关系。此外,传统方法缺乏对系统整体行为的分析,无法捕捉到微服务架构中由于服务调用关系变化引发的潜在异常。因此,如何实时、准确地监控微服务架构中的服务依赖关系,及时发现并响应异常,成为了当前系统运维和管理领域急需解决的技术问题。
技术实现思路
1、为了解决现有技术中的智能合同审核问题,提出一种微服务架构运行异常的监测方法及系统。
2、在一种实施方式中,本发明提出一种微服务架构运行异常的监测方法,包括如下步骤:
3、通过滑动窗口的方式获取所述微服务所涉及的网关的日志;
4、解析所述网关的日志提取服务调用链;
5、根据所述服务调用链构建服务间依赖关系;
6、根据所述依赖关系构建有向图,所述有向图中节点表示微服务,边表示服务间的调用关系,边的方向从来源服务指向目标服务,边的属性为服务调用次数、响应时间以及错误率;
7、根据所述边的属性将所述有向图分割成多个子图;
8、对每一个子图,检测最近预设数量个滑动窗口内是否有相似子图,如果没有,则相应的子图内的微服务之间存在调用异常。
9、进一步地,解析所述网关的日志提取服务调用链具体包括:
10、从api网关获取记录的日志数据;
11、对收集到的日志进行过滤,保留与服务调用相关的信息;
12、根据请求id,将同一请求在不同服务节点的日志记录关联在一起;
13、通过分析关联的日志记录,确定请求在各个服务节点之间的调用顺序;
14、将提取到的服务调用链以结构化的形式输出。
15、进一步地,所述根据所述服务调用链构建服务间依赖关系包括:
16、从服务调用链中识别出所有涉及的服务节点,每个节点代表一个独立的微服务;
17、对于每一条服务调用链,分析其中的调用顺序,确定哪些服务之间存在直接的调用关系;
18、根据所述调用关系进行依赖关系的累积与聚合;
19、根据调用频率、响应时间、错误率为依赖关系进行权重赋值。
20、进一步地,所述根据所述依赖关系构建有向图包括:
21、从服务依赖关系中提取所有微服务,创建相应的节点;
22、根据服务依赖关系中的调用顺序,在节点之间创建有向边;
23、为每条边赋予属性,包括服务调用次数、响应时间和错误率。
24、进一步地,所述根据所述边的属性将所述有向图分割成多个子图的约束条件为:
25、子图内的服务之间具有强的依赖关系;
26、子图之间的服务依赖少,减少跨子图的服务调用。
27、进一步地,所述根据所述边的属性将所述有向图分割成多个子图的步骤为:
28、对于每条边计算其权重:
29、;
30、其中,α、β、γ 是可调节的权重系数,用于平衡不同属性的重要性,其中i,j是节点编号,调用次数ij表示节点i调用节点j的次数,响应时间ij表示表示节点i调用节点j时的响应时间,错误率ij表示节点i调用节点j时的错误率;
31、根据计算得到的权重值,对所有边进行排序,从高到低排列;
32、将每个节点视为单独的子图 ,开始时系统中有 n个子图,其中 n是节点的总数,i和j是节点编号;
33、从权重最高的边开始,依次检查每条边,如果边连接的节点i和j分属不同的子图,则合并这两个子图合并后的新子图包含所有从i到j的路径,并保留该路径上的所有节点;继续合并操作,直到满足子图数量达到预期值或跨子图的边权重低于某个阈值;
34、当所有边都被处理完毕,或跨子图的边权重均低于预设的阈值时,算法停止;此时,图被划分为若干个子图,每个子图内部的节点依赖关系强,子图之间的依赖较弱。
35、进一步地,计算两个子图之间的边权重相似度的方法包括:
36、对于当前子图 和前一个滑动窗口的子图,计算它们的相似度:
37、;
38、其中和分别表示当前子图和过去子图中相应边e的权重,e是两个子图中共同的边集。
39、进一步地,所述滑动窗口的大小为10分钟,步长为5分钟。
40、进一步地,确定服务调用出现异常的子图后,向用户展示子图内的节点以及调用关系。
41、另一方面,本发明还提供一种微服务架构运行异常的监测系统,包括如下模块:
42、获取模块,用于通过滑动窗口的方式获取所述微服务所涉及的网关的日志;
43、解析模块,用于解析所述网关的日志提取服务调用链;
44、构建模块,用于根据所述服务调用链构建服务间依赖关系;
45、构图模块,用于根据所述依赖关系构建有向图,所述有向图中节点表示微服务,边表示服务间的调用关系,边的方向从来源服务指向目标服务,边的属性为服务调用次数、响应时间以及错误率;
46、分割模块,用于根据所述边的属性将所述有向图分割成多个子图;
47、检测模块,用于对每一个子图,检测最近预设数量个滑动窗口内是否有相似子图,如果没有,则相应的子图内的微服务之间存在调用异常。
48、本发明通过上述技术方案,可以产生如下有益效果:
49、(1)通过滑动窗口和有向图技术,精确捕捉微服务架构中服务之间的调用关系和依赖变化。结合边权重(如调用次数、响应时间、错误率)的相似性计算,能够精确检测出异常调用行为,而不仅仅是依赖关系的简单变化,从而减少误报,提高异常检测的准确性。
50、(2)利用滑动窗口技术,方案能够实时更新并监控系统中服务之间的依赖关系。随着时间的推移,滑动窗口可以捕捉到系统的动态变化,确保监控结果的时效性和准确性。这种动态监控方式适应了微服务架构的弹性和变化性,能够及时发现潜在的异常情况。
51、(3)通过将复杂的有向图分割成多个子图,并对每个子图进行独立的相似性检测,方案有效地简化了复杂依赖关系的分析。模块化的子图分析不仅有助于快速定位异常服务,还能将故障范围限制在局部区域,降低系统整体受到的影响。
52、(4)滑动窗口技术和相似子图检测的结合,不仅可以用于短期的异常检测,还可以通过长期数据积累进行趋势分析。运维团队可以利用这些趋势数据进行系统优化,识别出长期存在的性能问题或潜在瓶颈,进一步提升系统的整体性能和稳定性。
1.一种微服务架构运行异常的监测方法,其特征在于,所述方法包括如下步骤:
2.根据权利要求1所述的一种微服务架构运行异常的监测方法,其特征在于,所述解析所述网关的日志提取服务调用链具体包括:
3.根据权利要求1所述的一种微服务架构运行异常的监测方法,其特征在于,所述根据所述服务调用链构建服务间依赖关系包括:
4.根据权利要求1所述的一种微服务架构运行异常的监测方法,其特征在于,所述根据所述依赖关系构建有向图包括:
5.根据权利要求1所述的一种微服务架构运行异常的监测方法,其特征在于,所述根据所述边的属性将所述有向图分割成多个子图的约束条件为:
6.根据权利要求5所述的一种微服务架构运行异常的监测方法,其特征在于,所述根据所述边的属性将所述有向图分割成多个子图的步骤为:
7.根据权利要求1所述的一种微服务架构运行异常的监测方法,其特征在于,计算两个子图之间的边权重相似度的方法包括:
8.根据权利要求1所述的一种微服务架构运行异常的监测方法,其特征在于,所述滑动窗口的大小为10分钟,步长为5分钟。
9.根据权利要求1所述的一种微服务架构运行异常的监测方法,其特征在于,确定服务调用出现异常的子图后,向用户展示子图内的节点以及调用关系。
10.一种微服务架构运行异常的监测系统,其特征在于,所述系统包括如下模块:
