CN115118621B - 一种基于依赖关系图的微服务性能诊断方法及系统 - Google Patents
一种基于依赖关系图的微服务性能诊断方法及系统 Download PDFInfo
- Publication number
- CN115118621B CN115118621B CN202210732879.3A CN202210732879A CN115118621B CN 115118621 B CN115118621 B CN 115118621B CN 202210732879 A CN202210732879 A CN 202210732879A CN 115118621 B CN115118621 B CN 115118621B
- Authority
- CN
- China
- Prior art keywords
- abnormal
- service
- slo
- index data
- node
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于依赖关系图的微服务性能诊断方法及系统,涉及数据处理技术领域,首先收集微服务系统中各服务实例间的网络连接信息和实例自身的SLO指标数据,并持续监测SLO指标数据,一旦检测到异常,自动构建表示异常传播路径的依赖关系图,然后遍历整个依赖关系图给出一个可能造成性能问题的候选列表,最终根据皮尔逊相关系数得分推断出最有可能的性能瓶颈点。本发明仅获取服务实例间的网络连接信息和服务实例的SLO指标数据进行诊断,不需要获取源代码,基于非侵入式的依赖关系图构建对采用微服务架构的系统进行自动性能诊断、定位性能瓶颈,能够适用于多种业务场景,并具有较好的实时性、可扩展性。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种基于依赖关系图的微服务性能诊断方法及系统。
背景技术
在新兴商业模式(例如,电商平台)和IT技术(例如,云计算和云原生)驱动下,软件的体系结构正在快速地从庞大的单体架构向微服务架构转变。微服务是一种架构设计思想,正在成为设计现代大型应用的流行选择,通过微服务,可将大型单体应用分解成多个独立的组件,其中每个组件都有各自的责任领域并可以独立地开发和部署,微服务架构在电商网站、物流平台、支付系统等应用领域均有成功案例。其主要优势包括极大地加速了开发、部署和交付的速度,简化了故障调试和恢复的过程,使软件系统具备强大的可扩展性,并产生丰富的软件开发技术栈。
尽管微服务架构有那么多优势,但是由于外部(例如资源争用、硬件故障、配置环境更改等)和内部(例如软件BUG)的问题,性能问题在微服务系统中并不罕见,而这会对企业收入带来重大影响。为了保证微服务连续可靠地运行,及时地检测出性能问题、诊断出导致性能问题反复发生的根本原因、定位可能的性能瓶颈并向管理员或运维人员给出一些可能的操作建议是至关重要的。
然而,随着越来越多的具有复杂交互关系的微服务运行在动态云环境中,识别和定位异常服务变得非常困难。现有的技术要么在性能诊断的精确性上存在很大偏差;要么要求侵入应用程序或平台的源代码以获得服务依赖指标;要么就是不能适应动态的微服务环境,一旦微服务的架构发生改变或扩展,性能诊断的精确性就会急速下降。
因此,本领域亟需一种不需要获取源代码,能够适应多种微服务架构且准确度高的技术方案。
发明内容
本发明的目的是提供一种基于依赖关系图的微服务性能诊断方法及系统,通过服务实例间的网络连接信息和服务实例的SLO指标数据进行诊断,不需要获取源代码,其通过构建服务实例间的依赖关系图推断出微服务系统性能问题的根本原因,有效解决了现有技术中准确性和适应性不高的问题。
为实现上述目的,本发明提供了如下方案:
一种基于依赖关系图的微服务性能诊断方法,所述方法包括:
采集服务实例间的网络连接信息和服务实例的SLO指标数据;
利用3σ经验规则检测所述SLO指标数据是否异常;
当检测到所述SLO指标数据异常时:
利用所述网络连接信息构建所述服务实例间的通信服务实例依赖;
利用所述SLO指标数据构建所述服务实例间的非通信服务实例依赖;
将所述通信服务实例依赖与所述非通信服务实例依赖合并,得到依赖关系图;所述依赖关系图中的每个节点表示服务实例,两个节点之间的有向边表示两个服务实例之间的依赖关系;
从所述依赖关系图中的根异常节点开始,沿着目标方向遍历所述依赖关系图,寻找异常节点;所述异常节点为SLO指标数据异常的节点;所述根异常节点为建立所述依赖关系图时检测到的异常节点;所述目标方向为依赖关系的相反方向;
找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点;
若所有相邻节点均为正常的相邻节点,则将所述异常节点添加至异常节点候选集;若相邻节点中存在异常的相邻节点,则将所述异常的相邻节点作为异常节点,并返回“找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点”步骤;
利用皮尔逊相关系数计算所述异常节点候选集中的异常节点的分数;
输出分数最高的异常节点。
在一些实施例中,所述服务实例为M个微服务组件同时部署在不同的N台服务器上得到的若干个服务实例。
在一些实施例中,所述采集服务实例间的网络连接信息和服务实例的SLO指标数据,具体包括:
通过一直轮询拦截网络套接字的方式捕获服务实例间的网络连接信息;
从所述服务器中获取SLO指标数据。
在一些实施例中,在所述采集服务实例间的网络连接信息和服务实例的SLO指标数据之后,还包括:
将所述SLO指标数据以时间折线图的形式进行可视化展示。
在一些实施例中,所述利用所述网络连接信息构建所述服务实例间的通信服务实例依赖,具体包括:
利用设定时间内收集的网络连接信息构建所述服务实例间的通信服务实例依赖;所述通信服务实例依赖表示通过网络直接通信的服务实例之间的依赖关系;所述设定时间为距离检测到异常之前的设定时间。
在一些实施例中,利用所述SLO指标数据构建所述服务实例间的非通信服务实例依赖,具体包括:
将SLO指标数据对应的服务实例节点以两两连线的方式生成一个完全无向图;
删除所述完全无向图中条件独立的服务实例节点间的无向边;
利用D分隔原理确定所述无向边的依赖方向,得到所述服务实例间的非通信服务实例依赖。
在一些实施例中,所述利用皮尔逊相关系数计算所述异常节点候选集中的异常节点的分数,具体包括:
计算所述异常节点候选集中的异常节点与前端节点在发生异常后的SLO指标数据的皮尔森相关系数,计算公式为:其中,xi,yi分别为前端节点和异常节点在发生异常后的SLO指标数据,μx,μy分别为前端节点和异常节点的在发生异常后的SLO指标数据平均值,n为设定的SLO指标数据数量。
在一些实施例中,在所述输出分数最高的异常节点之后,还包括:
将所述分数最高的异常节点进行展示。
在一些实施例中,所述3σ经验规则的判断公式为:P(μ-3σ<x<μ+3σ)≈0.9973;
其中,σ为标准差,x为实时的SLO指标数据,μ为SLO指标数据的平均值。
本发明还提供了一种基于依赖关系图的微服务性能诊断系统,所述系统包括:
数据获取单元,用于采集服务实例间的网络连接信息和服务实例的SLO指标数据;
监测单元,用于利用3σ经验规则检测所述SLO指标数据是否异常;
通信服务实例依赖构建单元,用于利用所述网络连接信息构建所述服务实例间的通信服务实例依赖;
非通信服务实例依赖构建单元,用于利用所述SLO指标数据构建所述服务实例间的非通信服务实例依赖;
依赖关系图构建单元,用于将所述通信服务实例依赖与所述非通信服务实例依赖合并,得到依赖关系图;所述依赖关系图中的每个节点表示服务实例,两个节点之间的有向边表示两个服务实例之间的依赖关系;
异常节点获取单元,用于:
从所述依赖关系图中的根异常节点开始,沿着目标方向遍历所述依赖关系图,寻找异常节点;所述异常节点为SLO指标数据异常的节点;所述根异常节点为建立所述依赖关系图时检测到的异常节点;所述目标方向为依赖关系的相反方向;
找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点;
若所有相邻节点均为正常的相邻节点,则将所述异常节点添加至异常节点候选集;若相邻节点中存在异常的相邻节点,则将所述异常的相邻节点作为异常节点,并返回“找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点”步骤;
异常节点分数计算单元,用于利用皮尔逊相关系数计算所述异常节点候选集中的异常节点的分数;
输出单元,用于输出分数最高的异常节点。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明提供了一种基于依赖关系图的微服务性能诊断方法及系统,首先收集微服务系统中各服务实例间的网络连接信息和服务实例自身的SLO指标(服务级别指标)数据,并持续监测SLO指标数据,一旦检测到异常,自动构建表示异常传播路径的依赖关系图,然后遍历整个依赖关系图给出一个可能造成性能问题的候选列表,最终根据皮尔逊相关系数得分推断出最有可能的性能瓶颈点。由于本发明仅获取服务实例间的网络连接信息和服务实例的SLO指标数据进行诊断,不需要获取源代码。本发明基于非侵入式的依赖关系图构建对采用微服务架构的系统进行自动性能诊断、定位性能瓶颈,能够适用于多种业务场景,并具有较好的实时性、可扩展性。本发明通过有效的依赖关系构建策略以及性能诊断策略,并引入了皮尔森相关系数作为排名分数以达到更好的性能和精准度,有效解决了现有技术中准确性和适应性不高的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的基于依赖关系图的微服务性能诊断方法流程图。
图2为本发明实施例一提供的依赖关系图的示意图。
图3为本发明实施例二提供的基于依赖关系图的微服务性能诊断系统的框图。
图4为本发明实施例二提供的基于依赖关系图的微服务性能诊断系统的总体架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在新兴商业模式(例如,电商平台)和IT技术(例如,云计算和云原生)驱动下,软件的体系结构正在快速地从庞大的单体架构向微服务架构转变。微服务是一种架构设计思想,正在成为设计现代大型应用的流行选择,通过微服务,可将大型单体应用分解成多个独立的组件,其中每个组件都有各自的责任领域并可以独立地开发和部署,微服务架构在电商网站、物流平台、支付系统等应用领域均有成功案例。其主要优势包括极大地加速了开发、部署和交付的速度,简化了故障调试和恢复的过程,使软件系统具备强大的可扩展性,并产生丰富的软件开发技术栈。
尽管微服务架构有那么多优势,但是由于外部(例如资源争用、硬件故障、配置环境更改等)和内部(例如软件BUG)的问题,性能问题在微服务系统中并不罕见,而这会对企业收入带来重大影响。为了保证微服务连续可靠地运行,及时地检测出性能问题、诊断出导致性能问题反复发生的根本原因、定位可能的性能瓶颈并向管理员或运维人员给出一些可能的操作建议是至关重要的。
随着计算机技术的不断发展,已有一些技术用来解决微服务架构中的性能诊断问题。然而,随着越来越多的具有复杂交互关系的微服务运行在动态云环境中,识别和定位异常服务变得非常困难。这些研究要么在性能诊断的精确性上存在很大偏差;要么要求侵入应用程序或平台的源代码以获得服务依赖指标;要么就是不能适应动态的微服务环境,一旦微服务的架构发生改变或扩展,性能诊断的精确性就会急速下降。
基于上述情况,为了能够更可靠地保证微服务的正常运行、更精确地进行微服务性能诊断,本发明提出了一种基于依赖关系图的微服务性能诊断方法及系统。
在微服务环境中实现可靠的微服务性能诊断这一目标存在以下挑战:
(1)复杂的网络依赖,微服务之间存在着极其复杂的网络拓扑关系。
(2)持续集成与交付,一个商业应用一年可能会更新成百上千次。
(3)动态的运行环境,微服务经常运行在容器化环境中。
(4)庞大的监测指标集,一个微服务有成千上万个可供监测的指标。
为了应对上述挑战以及弥补背景技术中提到的现有技术存在的缺陷。本发明提供了一种基于依赖关系图的微服务性能诊断方法及系统。
本发明主要功效在于:提供的是一种轻量级、非侵入式、平台无关的方法,无须侵入应用程序的源代码也无须掌握相关领域的专业知识,就可以引入到采用微服务架构的电商网站、支付系统等应用当中,使应用具备高可用性,缩短因性能问题而导致的应用宕机时间。通过列出可能的异常节点候选集来识别和定位异常服务,并可以有效地构建服务依赖关系图,实时推断性能问题的原因。同时,它具有适应大规模微服务系统的良好可扩展性。通过捕获和解析网络相关的系统调用,提出了一种新颖的服务依赖发现方法,该方法自动实时地捕获服务实例间的依赖调用关系。提供了一种基于服务间依赖关系图的构建方法。通过此依赖关系图,可以及时地检测出性能问题,可以精确地诊断出服务实例级别的影响微服务性能的根本原因,定位可能的性能瓶颈并给出适当的优化建议。
本发明的目的是提供一种基于依赖关系图的微服务性能诊断方法及系统,通过服务实例间的网络连接信息和服务实例的SLO指标数据进行诊断,不需要获取源代码,其通过构建服务实例间的依赖关系图推断出微服务系统性能问题的根本原因,有效解决了现有技术中准确性和适应性不高的问题。
本发明通过构建服务实例间的依赖关系图推断出微服务系统性能问题的根本原因。本发明的数据收集模块通过API收集微服务系统中各服务实例间的网络连接信息和实例自身的SLO指标(服务级别指标)数据,将采集到的数据通过前端模块进行可视化展示并持续监测每个时间窗口内前端模块的SLO指标,一旦在前端服务中检测到异常节点,依赖关系构建模块就会自动构建表示异常传播路径的依赖关系图,然后自动触发性能诊断模块从异常节点开始遍历整个依赖关系图并给出一个可能造成性能问题的候选列表,最终根据得分推断出最有可能的性能瓶颈。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一:
如图1所示,本实施例提供了一种基于依赖关系图的微服务性能诊断方法,所述方法包括:
S1、采集服务实例间的网络连接信息和服务实例的SLO指标数据。
M个微服务组件同时部署在不同的N台服务器上就得到了若干个服务实例。本实施例主要收集两种类型的数据:每个服务实例间的网络连接信息和每个服务实例自身的SLO数据(服务级别指标)。通过不断地轮询来拦截网络套接字的系统调用捕获服务实例间的网络连接信息(不断轮询,只要调用了套接字函数就会捕获,但构建依赖关系图只使用最新10分钟的数据),并在检测到异常时使用最新10分钟内的网络连接信息构建依赖关系图。例如当拦截到服务A调用了connect()函数请求与服务B建立连接,说明A为客户端、B为服务端,那就得到了一条由客户端A与服务端B之间的连接信息。而SLO数据用于检测服务实例是否异常、构建非通信服务实例依赖以及排序异常列表。大多数微服务应用内部会产生性能指标进行监控和维护。例如,SpringBoot提供了用于监控的服务日志插件。因此,本实施例可以轻松从微服务环境中的应用获取各种不同的SLO指标数据。在本实施例中规定统一使用其中的一项指标,即请求的平均响应时间。
在采集服务实例间的网络连接信息和服务实例的SLO指标数据之后,将所述SLO指标数据以时间折线图的形式进行可视化展示。
S2、利用3σ经验规则检测所述SLO指标数据是否异常。
将收集到的各服务的SLO指标数据(请求的平均响应时间)通过前端模块以时间折线图的形式进行可视化展示,为了诊断系统异常,通过前端模块不断监测滑动时间窗口内的SLO指标。在本实施例中使用3σ的经验规则来检测一个服务是否异常,P(μ-3σ<x<μ+3σ)≈0.9973,σ为标准差,x为实时的SLO指标数据,μ为SLO指标数据的平均值,P表示概率,即所有数据值出现在平均值的3个标准差区间内的概率是99.73%,如果当前SLO指标数据的值不在最后10分钟SLO指标数据的3σ间隔内,则认为此服务实例异常。
当检测到所述SLO指标数据异常时,继续执行下述步骤:
S3、利用所述网络连接信息构建所述服务实例间的通信服务实例依赖。
利用设定时间内收集的网络连接信息构建所述服务实例间的通信服务实例依赖;所述通信服务实例依赖表示通过网络直接通信的服务实例之间的依赖关系;所述设定时间为距离检测到异常之前的设定时间。
S4、利用所述SLO指标数据构建所述服务实例间的非通信服务实例依赖。
将SLO指标数据对应的服务实例节点以两两连线的方式生成一个完全无向图。
删除所述完全无向图中条件独立的服务实例节点间的无向边。
利用D分隔原理确定所述无向边的依赖方向,得到所述服务实例间的非通信服务实例依赖。
S5、将所述通信服务实例依赖与所述非通信服务实例依赖合并,得到依赖关系图;所述依赖关系图中的每个节点表示服务实例,两个节点之间的有向边表示两个服务实例之间的依赖关系。
作为一种具体的实施方式,本实施例中当检测到SLO指标异常时,会基于通信服务实例依赖和非通信服务实例依赖共同构建依赖关系图。首先会通过网络连接信息构建通信服务实例依赖,再通过SLO指标构建非通信服务实例依赖,并与通信服务实例依赖合并以形成最终的依赖关系图,合并示意图如图2。依赖关系图中的每个节点表示服务实例,两个节点之间的有向边表示两个服务实例之间的依赖关系。图2表示了一个依赖关系图的示例。
通信服务实例依赖表示通过网络直接通信的两个服务实例之间的依赖关系。通过步骤S1可以得到一系列服务实例间的网络连接信息,为了构建通信服务实例依赖,直接使用最后10分钟收集的网络连接数据。例如当拦截到服务A调用了connect()函数请求与服务B建立连接,说明A为客户端、B为服务端,客户端A依赖服务端B向自己提供的服务,则在依赖关系图中会生成一条由服务B指向服务A的边说明服务B影响服务A。该数据包括了两个服务实例和实例间的依赖关系,因此可以动态更新依赖图,这可以排除一些不活跃的服务实例并提高精准率。
非通信服务实例依赖是指由于本地资源共享,服务可能会干扰在同一节点中运行的其他服务。例如,如果某服务实例占用物理机器的所有CPU资源,则相同节点中的其他服务实例的响应时间可能受到影响,通过统计方法构建这种非通信服务实例依赖关系。考虑到微服务环境中大量的SLO指标数据和轻量级要求,本实施例采用PC算法来加快构建非通信服务实例依赖关系,使用平均响应时间作为SLO指标数据。输入是步骤S1中采集到的微服务实例的SLO指标数据从异常时刻开始的200个数据点,PC算法首先会对输入的数据点所包含的服务实例点集中的所有节点两两连线生成一个完全无向图,遍历无向图中每一对相邻点(数据点是各服务实例(如N个服务实例)的若干SLO数据,相邻点是指这N个服务实例节点),删除条件独立的节点间的无向边(初始的完全无向图中所有节点间都存在边,而条件独立的节点间的边会被删除而非确定)以确定节点间的依赖关系(但不确定方向),PC算法采用了FisherZ Test作为条件独立性检验方法,即先生成一个无向图,然后再利用D分隔原理(D-separation)确定图中边的依赖方向,把无向图扩展为有向无环图,即完成非通信服务实例依赖的构建。
S6、从所述依赖关系图中的根异常节点开始,沿着目标方向遍历所述依赖关系图,寻找异常节点;所述异常节点为SLO指标数据异常的节点;所述根异常节点为建立所述依赖关系图时检测到的异常节点;所述目标方向为依赖关系的相反方向。
S7、找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点。
S8、若所有相邻节点均为正常的相邻节点,则将所述异常节点添加至异常节点候选集;若相邻节点中存在异常的相邻节点,则将所述异常的相邻节点作为异常节点,并返回“找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点”步骤。
作为一种具体的实施方式,本实施例中基于依赖关系图从图中的根异常节点开始(该根异常节点为步骤S2中监测到的异常服务实例节点),沿着依赖关系的相反方向(一条A指向B的边,由B向A遍历即为相反方向,称A为B相反方向上的一个相邻节点)遍历依赖关系图。当某一节点异常时,将检查其相反方向上的相邻节点。如果所有相邻节点都是正常的,则将当前节点添加到异常节点候选集并停止遍历其相反方向上的相邻节点。如果存在一个或多个相邻节点,性能诊断模块将继续遍历这些节点。当遍历完成时,获取到一组异常节点候选集。
S9、利用皮尔逊相关系数计算所述异常节点候选集中的异常节点的分数。
具体的,计算异常节点候选集中每个异常节点的分数并排序。本实施例计算所述异常节点候选集中的异常节点与前端节点在发生异常后的SLO指标数据的皮尔森相关系数作为候选者分数(前端节点和微服务应用中的其他所有节点一样也是一个微服务实例,只不过它是最终面向使用者主要为使用者提供界面功能的。比如一个采用微服务架构的商城应用,背后可能包含订单、购物车、用户、物流等微服务组件,但最终顾客都是通过前端服务来购物的。那么无论哪个节点异常最后都会导致应用无法正常提供服务也即前端节点异常。具体含义就是微服务应用众多节点中的一个功能节点,前端(界面)节点),计算公式为:其中,xi,yi分别为前端节点和异常节点在发生异常后的SLO指标数据,μx,μy分别为前端节点和异常节点的在发生异常后的SLO指标数据平均值,n为设定的SLO指标数据点数量(本实施例中设定的SLO指标数据点数量是指考虑参与计算的SLO指标数据点的总数,比如测试发现选取异常后的200个数据点准确性更高,那N就设定为200,具体的每个数据点是只考虑平均响应时间这一个指标)。
该分数是根据前端服务与异常服务来算的,因为无论异常是由哪个服务导致的,最终都会造成前端服务也异常,那么跟前端服务SLO数据相关系数最高的服务实例就最有可能是真正的罪魁祸首。如下一步的S10所说,“如果两个服务实例具有强依赖,则它们的服务请求延迟曲线非常相似,计算出来的皮尔森相关系数也将最高,即分数最高”。
S10、输出分数最高的异常节点。
对异常节点候选集中的异常节点按分数排序后,分数最高的服务实例被认为是真正的性能瓶颈点。如果两个服务实例具有强依赖,则它们的服务请求延迟曲线非常相似,计算出来的皮尔森相关系数也将最高,即分数最高。通过这种方法,即使在同一时间几个服务实例之间互相影响都检测出性能异常,也能够诊断出真正导致异常的服务实例。
然后将分数最高的服务实例做为最可能的性能瓶颈点,并将结果返回给前端界面展示,以帮助相应人员快速定位性能瓶颈以在后续进行优化。
本实施例基于非侵入式的依赖关系图构建对采用微服务架构的系统进行自动性能诊断、定位性能瓶颈并给出一定的优化建议,适用于多种业务场景,并具有较好的实时性、可扩展性。并且,本实施例具有有效的依赖关系构建策略以及性能诊断策略。本实施例的依赖关系构建模块中采用了PC算法来加快非通信服务实例依赖构建,在性能诊断模块中引入了皮尔森相关系数作为排名分数以达到更好的性能和精准度。
实施例二:
如图3所示,本实施例提供了一种基于依赖关系图的微服务性能诊断系统,所述系统包括:
数据获取单元M1,用于采集服务实例间的网络连接信息和服务实例的SLO指标数据;
监测单元M2,用于利用3σ经验规则检测所述SLO指标数据是否异常;
通信服务实例依赖构建单元M3,用于利用所述网络连接信息构建所述服务实例间的通信服务实例依赖;
非通信服务实例依赖构建单元M4,用于利用所述SLO指标数据构建所述服务实例间的非通信服务实例依赖;
依赖关系图构建单元M5,用于将所述通信服务实例依赖与所述非通信服务实例依赖合并,得到依赖关系图;所述依赖关系图中的每个节点表示服务实例,两个节点之间的有向边表示两个服务实例之间的依赖关系;
异常节点获取单元M6,用于:
从所述依赖关系图中的根异常节点开始,沿着目标方向遍历所述依赖关系图,寻找异常节点;所述异常节点为SLO指标数据异常的节点;所述根异常节点为建立所述依赖关系图时检测到的异常节点;所述目标方向为依赖关系的相反方向;
找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点;
若所有相邻节点均为正常的相邻节点,则将所述异常节点添加至异常节点候选集;若相邻节点中存在异常的相邻节点,则将所述异常的相邻节点作为异常节点,并返回“找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点”步骤;
异常节点分数计算单元M7,用于利用皮尔逊相关系数计算所述异常节点候选集中的异常节点的分数;
输出单元M8,用于输出分数最高的异常节点。本实施例的总体系统架构图如图4所示。
本实施例计算所述异常节点候选集中的异常节点与前端节点在发生异常后的SLO指标数据的皮尔森相关系数作为候选者分数,计算公式为: 其中,xi,yi分别为前端节点和异常节点在发生异常后的SLO指标数据,μx,μy分别为前端节点和异常节点的在发生异常后的SLO指标数据平均值,设定的SLO指标数据点数量。对候选集按分数排序后候选集中分数最高的服务实例被认为是真正的性能瓶颈点。如果两个服务实例具有强依赖,则它们的服务请求延迟曲线非常相似,计算出来的皮尔森相关系数也将最高,即分数最高。通过这种方法,即使在同一时间几个服务实例之间互相影响都检测出性能异常,也能够诊断出真正导致异常的服务实例
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于依赖关系图的微服务性能诊断方法,其特征在于,所述方法包括:
采集服务实例间的网络连接信息和服务实例的SLO指标数据;所述SLO指标为服务级别指标;
利用3σ经验规则检测所述SLO指标数据是否异常;如果当前SLO指标数据的值不在最后10分钟SLO指标数据的3σ间隔内,则认为此服务实例异常;
当检测到所述SLO指标数据异常时:
利用所述网络连接信息构建所述服务实例间的通信服务实例依赖;
利用所述SLO指标数据构建所述服务实例间的非通信服务实例依赖;
将所述通信服务实例依赖与所述非通信服务实例依赖合并,得到依赖关系图;所述依赖关系图中的每个节点表示服务实例,两个节点之间的有向边表示两个服务实例之间的依赖关系;
从所述依赖关系图中的根异常节点开始,沿着目标方向遍历所述依赖关系图,寻找异常节点;所述异常节点为SLO指标数据异常的节点;所述根异常节点为建立所述依赖关系图时检测到的异常节点;所述目标方向为依赖关系的相反方向;
找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点;
若所有相邻节点均为正常的相邻节点,则将所述异常节点添加至异常节点候选集;若相邻节点中存在异常的相邻节点,则将所述异常的相邻节点作为异常节点,并返回“找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点”步骤;
利用皮尔逊相关系数计算所述异常节点候选集中的异常节点的分数;
输出分数最高的异常节点。
2.根据权利要求1所述的基于依赖关系图的微服务性能诊断方法,其特征在于,所述服务实例为M个微服务组件同时部署在不同的N台服务器上得到的若干个服务实例。
3.根据权利要求2所述的基于依赖关系图的微服务性能诊断方法,其特征在于,所述采集服务实例间的网络连接信息和服务实例的SLO指标数据,具体包括:
通过一直轮询拦截网络套接字的方式捕获服务实例间的网络连接信息;
从所述服务器中获取SLO指标数据。
4.根据权利要求1所述的基于依赖关系图的微服务性能诊断方法,其特征在于,在所述采集服务实例间的网络连接信息和服务实例的SLO指标数据之后,还包括:
将所述SLO指标数据以时间折线图的形式进行可视化展示。
5.根据权利要求1所述的基于依赖关系图的微服务性能诊断方法,其特征在于,所述利用所述网络连接信息构建所述服务实例间的通信服务实例依赖,具体包括:
利用设定时间内收集的网络连接信息构建所述服务实例间的通信服务实例依赖;所述通信服务实例依赖表示通过网络直接通信的服务实例之间的依赖关系;所述设定时间为距离检测到异常之前的设定时间。
6.根据权利要求1所述的基于依赖关系图的微服务性能诊断方法,其特征在于,利用所述SLO指标数据构建所述服务实例间的非通信服务实例依赖,具体包括:
将SLO指标数据对应的节点以两两连线的方式生成一个完全无向图;
删除所述完全无向图中条件独立的节点间的无向边;
利用D分隔原理确定所述无向边的依赖方向,得到所述服务实例间的非通信服务实例依赖。
8.根据权利要求1所述的基于依赖关系图的微服务性能诊断方法,其特征在于,在所述输出分数最高的异常节点之后,还包括:
将所述分数最高的异常节点进行展示。
9.根据权利要求1所述的基于依赖关系图的微服务性能诊断方法,其特征在于,所述3σ经验规则的判断公式为:P(μ-3σ<x<μ+3σ)≈0.9973;
其中,σ为标准差,x为实时的SLO指标数据,μ为SLO指标数据的平均值。
10.一种基于依赖关系图的微服务性能诊断系统,其特征在于,所述系统包括:
数据获取单元,用于采集服务实例间的网络连接信息和服务实例的SLO指标数据;
监测单元,用于利用3σ经验规则检测所述SLO指标数据是否异常;
通信服务实例依赖构建单元,用于利用所述网络连接信息构建所述服务实例间的通信服务实例依赖;
非通信服务实例依赖构建单元,用于利用所述SLO指标数据构建所述服务实例间的非通信服务实例依赖;
依赖关系图构建单元,用于将所述通信服务实例依赖与所述非通信服务实例依赖合并,得到依赖关系图;所述依赖关系图中的每个节点表示服务实例,两个节点之间的有向边表示两个服务实例之间的依赖关系;
异常节点获取单元,用于:
从所述依赖关系图中的根异常节点开始,沿着目标方向遍历所述依赖关系图,寻找异常节点;所述异常节点为SLO指标数据异常的节点;所述根异常节点为建立所述依赖关系图时检测到的异常节点;所述目标方向为依赖关系的相反方向;
找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点;
若所有相邻节点均为正常的相邻节点,则将所述异常节点添加至异常节点候选集;若相邻节点中存在异常的相邻节点,则将所述异常的相邻节点作为异常节点,并返回“找到异常节点后,检测所述异常节点沿着所述目标方向上的所有相邻节点”步骤;
异常节点分数计算单元,用于利用皮尔逊相关系数计算所述异常节点候选集中的异常节点的分数;
输出单元,用于输出分数最高的异常节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210732879.3A CN115118621B (zh) | 2022-06-27 | 2022-06-27 | 一种基于依赖关系图的微服务性能诊断方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210732879.3A CN115118621B (zh) | 2022-06-27 | 2022-06-27 | 一种基于依赖关系图的微服务性能诊断方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115118621A CN115118621A (zh) | 2022-09-27 |
CN115118621B true CN115118621B (zh) | 2023-05-09 |
Family
ID=83331155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210732879.3A Active CN115118621B (zh) | 2022-06-27 | 2022-06-27 | 一种基于依赖关系图的微服务性能诊断方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115118621B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11704188B2 (en) * | 2021-12-17 | 2023-07-18 | Atlassian Pty Ltd | Apparatuses, computer-implemented methods, and computer program products for improved data event root cause identification and remediation |
CN115756929B (zh) * | 2022-11-23 | 2023-06-02 | 北京大学 | 一种基于动态服务依赖图的异常根因定位方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9842045B2 (en) * | 2016-02-19 | 2017-12-12 | International Business Machines Corporation | Failure recovery testing framework for microservice-based applications |
US11500888B2 (en) * | 2020-08-07 | 2022-11-15 | NEC Laboratories Europe GmbH | Methods and systems for detecting anomalies in cloud services based on mining time-evolving graphs |
CN112698975B (zh) * | 2020-12-14 | 2022-09-27 | 北京大学 | 一种微服务架构信息系统的故障根因定位方法及系统 |
CN113014421B (zh) * | 2021-02-08 | 2022-05-20 | 武汉大学 | 一种面向云原生系统的微服务根因定位方法 |
CN113282635B (zh) * | 2021-04-12 | 2023-11-24 | 国电南瑞科技股份有限公司 | 一种微服务系统故障根因定位方法及装置 |
-
2022
- 2022-06-27 CN CN202210732879.3A patent/CN115118621B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115118621A (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115118621B (zh) | 一种基于依赖关系图的微服务性能诊断方法及系统 | |
CN109933452B (zh) | 一种面向异常传播的微服务智能监测方法 | |
JP6706321B2 (ja) | サービス呼び出し情報処理の方法及びデバイス | |
US7680753B2 (en) | System and method for fault identification in an electronic system based on context-based alarm analysis | |
Fu et al. | Execution anomaly detection in distributed systems through unstructured log analysis | |
US8156377B2 (en) | Method and apparatus for determining ranked causal paths for faults in a complex multi-host system with probabilistic inference in a time series | |
EP2759938B1 (en) | Operations management device, operations management method, and program | |
US20080133288A1 (en) | Grouping Failures to Infer Common Causes | |
US11144376B2 (en) | Veto-based model for measuring product health | |
US20040010733A1 (en) | System and method for fault identification in an electronic system based on context-based alarm analysis | |
US10831579B2 (en) | Error detecting device and error detecting method for detecting failure of hierarchical system, computer readable recording medium, and computer program product | |
CN111737033A (zh) | 一种基于运行时图谱分析的微服务故障定位方法 | |
CN109936479B (zh) | 基于差分检测的控制平面故障诊断系统及其实现方法 | |
US10904290B2 (en) | Method and system for determining incorrect behavior of components in a distributed IT system generating out-of-order event streams with gaps | |
CN115357418A (zh) | 微服务故障检测方法、装置、存储介质及计算机设备 | |
Su et al. | Diagnosability of Discrete-Event Systems with Uncertain Observations. | |
CN114201326A (zh) | 一种基于属性关系图的微服务异常诊断方法 | |
CN113467421A (zh) | 获取微服务健康状态指标的方法和微服务异常诊断方法 | |
Yu et al. | TraceRank: Abnormal service localization with dis‐aggregated end‐to‐end tracing data in cloud native systems | |
Salah et al. | Fusing information from tickets and alerts to improve the incident resolution process | |
CN110875853B (zh) | 一种基于元数据的自动质量监测方法及终端 | |
Strasser et al. | Diagnostic alarm sequence maturation in timed failure propagation graphs | |
Duarte Jr et al. | A distributed system-level diagnosis model for the implementation of unreliable failure detectors | |
CN113454950A (zh) | 基于流量统计的网络设备及链路实时故障检测方法和系统 | |
Narayanan et al. | Towards' integrated'monitoring and management of datacenters using complex event processing techniques |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310058 Yuhang Tang Road, Xihu District, Hangzhou, Zhejiang 866 Applicant after: ZHEJIANG University Applicant after: Shanghai Observation Future Information Technology Co.,Ltd. Address before: 310058 Yuhang Tang Road, Xihu District, Hangzhou, Zhejiang 866 Applicant before: ZHEJIANG University Applicant before: SHANGHAI CLOUDCARE INFORMATION TECHNOLOGY CO.,LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |