掌桥专利:专业的专利平台
掌桥专利
首页

一种微服务系统的异常检测方法及装置

文献发布时间:2023-06-19 11:02:01


一种微服务系统的异常检测方法及装置

技术领域

本发明涉及微服务系统故障检测技术领域,具体涉及一种微服务系统的异常检测方法及装置。

背景技术

微服务系统是一种将单个应用程序作为一组软件服务套件的软件架构形式,各个服务运行于独立的进程,彼此通过轻量级协议进行通信。随着计算机技术以及网络通信技术的快速发展,微服务系统架构成为一种广泛使用的服务器架构。由于,微服务系统架构中服务关系复杂和多变,成千上万的服务器接口节点在工作的过程中,往往也会因细粒度带来额外的硬件和软件负担过重而发生异常,因此,有必要对微服务系统架构进行异常检测。

目前,现有技术中微服务系统的异常检测方法主要基于单个服务器,即通过对各个服务器单独进行业务指标监控,具体通过长时间检测各个服务器包含业务的资源指标和性能指标是否超过预设阈值,进而判断微服务系统发生异常的服务器接口节点,然后利用人工对异常节点进行排查,该检测方式一方面由于只针对单个服务器,很难获知不同服务器之间相互调用信息的关系,导致很难检测出不同服务器节点之间的异常现象,另一方面,长时间检测微服务器的业务信息,实时性也较差,并且,还需要人工排查异常节点,其也费时费力,最终导致成本较大。

发明内容

有鉴于此,本发明实施例提供了一种微服务系统的异常检测方法,以解决现有技术中利用人工对异常节点进行排查,费时费力,最终导致成本较大,实时性较差的问题。

根据第一方面,本发明实施例提供了一种微服务系统的异常检测方法,其特征在于,包括如下步骤:

构建微服务架构的节点网络图;

根据所述节点网络图,获取与业务调用请求指令对应的目标节点调用链路,所述目标节点调用链路中的各节点按照节点调用顺序依次排列;

获取所述目标节点调用链路中的各节点的数据特征,并按照所述节点调用顺序将所述各节点的数据特征组成目标节点数据特征向量;

构建节点异常检测模型,并将所述目标节点数据特征向量输入所述异常节点检测模型训练得到检测结果;

根据所述检测结果,确认发生异常故障的所述目标节点调用链路。

结合第一方面,在第一方面第一实施方式中,多个所述目标节点数据特征向量依次顺序存放至预设队长的节点消息队列中作为同时待检测的目标节点消息队列。

结合第一方面第一实施方式,在第一方面第二实施方式中,将所述目标节点消息队列输入多个顺序排列的所述节点异常检测模型训练得到检测结果,多个所述节点异常检测模型的数量等于所述目标节点消息队列中存放所述目标节点数据特征向量的数量。

结合第一方面第二实施方式,在第一方面第三实施方式中,所述构建节点异常检测模型,并将所述目标节点数据特征向量输入所述异常节点检测模型训练得到检测结果的步骤包括:

利用孤立森林算法构建所述节点异常检测模型,将所述目标节点数据特征向量或所述目标节点消息队列输入所述异常节点监测模型训练得到检测结果。

结合第一方面或第一方面任一实施方式,在第一方面第四实施方式中,所述各节点的数据特征包括节点服务时延和/或数据资源占用量和/或网络传输速度。

根据第二方面,本发明实施例提供一种微服务系统的异常检测装置,包括:

第一构建模块,用于构建微服务架构的节点网络图;

第一获取模块,用于根据所述节点网络图,获取与业务调用请求指令对应的目标节点调用链路,所述目标节点调用链路中的各节点按照节点调用顺序依次排列;

第二获取模块,用于获取所述目标节点调用链路中的各节点的数据特征,并按照所述节点调用顺序将所述各节点的数据特征组成目标节点数据特征向量;

第二构建模块,用于构建节点异常检测模型,并将所述目标节点数据特征向量输入所述异常节点检测模型训练得到检测结果;

确认模块,用于根据所述检测结果,确认发生异常故障的所述目标节点调用链路。

结合第二方面,在第二方面第一实施方式中,多个所述目标节点数据特征向量依次顺序存放至预设队长的节点消息队列中作为同时待检测的目标节点消息队列。

结合第二方面第一实施方式,在第二方面第二实施方式中,将所述目标节点消息队列输入多个顺序排列的所述节点异常检测模型训练得到检测结果,多个所述节点异常检测模型的数量等于所述目标节点消息队列中存放所述目标节点数据特征向量的数量。

结合第二方面第二实施方式,在第二方面第三实施方式中,所述第二构建模块包括:

构建子模块,用于利用孤立森林算法构建所述节点异常检测模型,将所述目标节点数据特征向量或所述目标节点消息队列输入所述异常节点监测模型训练得到检测结果。

根据第三方面,本发明实施例提供一种存储介质,其上存储有计算机指令,该指令被处理器执行时实现第一方面或第一方面任一实施方式中所述的微服务系统的异常检测方法的步骤。

根据第四方面,本发明实施例提供一种微服务系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面或第一方面任一实施方式中所述的微服务系统的异常检测方法的步骤。

本发明实施例技术方案,具有如下优点:

本发明实施例提供一种微服务系统的异常检测方法及装置,其中方法通过对目标节点调用链路的各节点的数据特征对应的目标节点数据特征向量或存储有目标节点数据特征向量的目标节点消息队列基于节点异常检测模型进行训练得到检测结果,可以快速确定发生异常故障的目标节点调用链路,不需要人工对海量的各节点数据进行标注,降低了人力成本,省时省力,提高了检测效率,同时,也保证了各节点数据的实时性,显著提高了微服务系统的响应速度。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中微服务系统的异常检测方法的流程图;

图2为本发明实施例中微服务架构的节点网络图;

图3为本发明实施例中业务调用请求指定对应的调用链路轨迹示意图;

图4为本发明实施例中目标节点数据特征向量的示意图;

图5为本发明实施例中目标节点调用链路的模型训练示意图;

图6为本发明实施例中目标节点消息队列示意图;

图7为本发明实施例中目标节点消息队列的模型训练示意图;

图8为本发明实施例中微服务系统的异常检测装置的结构框图;

图9为本发明实施例中计算机设备的硬件结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本发明实施例提供一种微服务系统的异常检测方法,用于检测微服务系统中各微服节点异常故障,如图1所示,的包括如下步骤:

步骤S1:构建微服务架构的节点网络图。此处的节点网络图可以通过Instramentation机制在微服务系统运行的过程中通过埋点或安装代理程序形成网络状节点图,如图2所示,为示意的微服务架构的节点网络图,其呈现星星点点式分布,构成网络结构图。在图2中,每个节点可以是微服务系统的组件,该组件可以是一台机器或一个技术组件(消息中间件、网络服务器)或一个数据库。其中节点网络图中各网络节点存储有微服务日志,该微服务日志相当于各网络节点的数据标签,该数据标签上存储有各网络节点的数据信息。

步骤S2:根据节点网络图,获取与业务调用请求指令对应的目标节点调用链路,目标节点调用链路中的各节点按照节点调用顺序依次排列。此处的业务调用请求指令为用户待操作的用户指令,例如:用户在淘宝客户端上在线购买商品时,用户在淘宝客户端购物可以是业务调用请求指令,用户事先登录淘宝客户端-确定目标商品-在线支付,用户的该操作顺序为用户利用淘宝购物时的目标节点调用链路。目标节点调用链路为待检测的节点调用链路。例如:业务调用请求指令为M1,其对应的目标调用链路可以为A-C-D;业务调用请求指令为M2,其对应的目标调用链路可以为A-B-E。此处的目标节点调用链路中的各节点是按照先后顺序形成的路径。如图3所示,为不同的业务对应不同的入口调用请求,两个不同的调用请求对应的目标节点调用链路分别为:

业务调用请求指令1:A->C->F;

业务调用请求指令2:D->F->E;

目标节点调用链路也可以看成是业务调用请求指令对应的用户操作运行轨迹,该运行轨迹可以看成微服务节点的ID号。

上述中各节点的数据特征包括节点服务时延和/或数据资源占用量和/或网络传输速度。该各节点的数据特征还可以包括其他类型数据特征,并不以此为限。

步骤S3:获取目标节点调用链路中的各节点的数据特征,并按照节点调用顺序将各节点的数据特征组成目标节点数据特征向量。

例如:以服务时延为例,目标节点调用链路经过A、C、F三个微服务节点,如图4所示,在时间轴上的微服务节点A、C、F的跨度分别为Span1、Span2、Span3,分别在这三个时间跨度下,抽取微服务节点A、C、F在同一次调用中的数据特征向量,可抽取的数据特征一般包括节点服务时延和/或数据资源占用量和/或网络传输速度,如CPU百分比、内存占有量、网络IO字节数等。将抽取的数据特征按找调用顺序拼接为一个特征向量,仅以服务时延特征为例,最终产生的轨迹特征向量表示为(Span1,Span2,Span3),为了区分每个节点对时间的独自占用,目标节点调用链路的轨迹特征向量也可以表示为(Span1–Span2,Span2-Span3,Span3)。

步骤S4:构建节点异常检测模型,并将目标节点数据特征向量输入异常节点检测模型训练得到检测结果。

在一具体实施例中,上述步骤S4在执行的过程中,可具体包括如下步骤:

利用孤立森林算法构建节点异常检测模型,将目标节点数据特征向量输入异常节点监测模型训练得到检测结果。

如图5所示,为节点异常检测模型训练目标节点数据特征向量的结构框图。

在图5中,目标节点数据特征向量的数量与训练模型的数量相同,即存在多种轨迹运行向量就对应存在多少个训练模型,该训练模型基于孤立森林算法构建出的节点异常检测模型。

上述孤立森林算法是一种适用于连续数据的无监督异常检测算法,该算法是对孤立树和样本点x在孤立树中的路径长度h(x)的定义。

对于孤立树:若T为孤立树的一个节点,T存在两种情况:没有子节点的外部节点,有两个子节点(Tl,Tr)和一个test的内部节点。在T的test由一个属性q和一个分割点p组成,q

孤立森林算法大致可以分为两个阶段,第一阶段需要训练t颗孤立树,组成孤立森林。随后,将每个样本点带入森林中的每颗孤立树,计算平均高度,之后再计算每个样本点的异常值分数。

第一阶段:

步骤S111:

X={x

步骤S112:从d中随机指定一个维度q,在当前数据中随机产生一个切割点p,

m

步骤S113:此切割点p生成了一个超平面,将当前数据空间划分为两个子空间:指定维度小于p的样本点放入左子节点,大于或等于p放入右子节点。

步骤S114:递归步骤S112和步骤S113,直到所有的叶子节点都只有一个样本点或者孤立树(iTree)已经达到指定的高度。

步骤S115:循环步骤S112至步骤S114,直到生成t个孤立树(iTree)。

第二阶段:

步骤S211:对于每个数据点x

通过上述孤立森林算法构建节点异常检测模型,对输入该模型内的目标节点数据特征向量进行训练得到发生异常故障的目标节点数据特征。

当然,本发明实施例还可以利用其它无监督方式的检测算法检测目标节点数据特征向量是否发生异常故障。

步骤S5:根据检测结果,确认发生异常故障的目标节点调用链路。该检测结果为[0,1]之间的数值认为正常数据,将大于1的数值认为是非正常数据,因此,根据该检测结果,可以确认发生异常故障的目标节点调用链路。

本发明实施例中的微服务系统的异常检测方法,通过对目标节点调用链路的各节点的数据特征对应的目标节点数据特征向量基于节点异常检测模型进行训练得到检测结果,可以快速确定发生异常故障的目标节点调用链路,不需要人工对海量的各节点数据进行标注,降低了人力成本,省时省力,提高了检测效率,同时,也保证了各节点数据的实时性。

实施例2

本发明实施例提供一种微服务系统的异常检测方法,为了提高微服务系统的异常检测的响应速度和实时性要求,作为一种优选的实施方式,可以将多个目标节点数据特征向量依次顺序存放至预设队长的节点消息队列中作为同时待检测的目标节点消息队列。

如图6所示,为预设队长的目标节点消息队列,该预设队长的长短可以根据不同需求设置,在图6中,预设队长的目标节点消息队列可以存储N个目标节点数据特征向量,将该N各目标节点数据特征向量依次按照顺序存放。此处的目标节点消息队列相当于一个数据存储容器。将多个目标节点数据特征依次顺序存放至预设队长的节点消息队列中作为同时待检测的目标节点消息队列,以确保同时对存储有多个目标节点数据特征进行检测,进而提高微服务系统的异常检测的响应速度。

在实施例1中的上述步骤S4在执行的过程中,还可具体包括如下步骤:

利用孤立森林算法构建节点异常检测模型,将目标节点消息队列输入异常节点监测模型训练得到检测结果。此处的目标节点消息队列可以是多个队列,目标节点消息队列中存储有多个目标节点数据特征,在节点异常检测模型中同时检测目标节点消息队列,为了提高微服务系统检测的响应速度。孤立森林算法构建节点异常检测模型的过程同上,在此不再赘述。

具体地,如图7所示,为了便于轨迹运行向量的异常检测的水平扩展,可以将多个节点异常检测模型加载于一个进程中,以并行方式部署多个同样的检测进程。生产者进程采集并拼接轨迹运行特征向量,并将轨迹运行特征向量数据发布到目标节点消息队列,异常检测进程作为消费者获取轨迹特征数据并独自进行异常检测,发现异常后通过消息队列上报异常分析、告警等模块作后续处理。

在图7中,多个节点异常检测模型的数量等于目标节点消息队列中存放目标节点数据特征的数量。

本发明实施例中的微服务系统的异常检测方法,通过对存放有多个目标节点数据特征向量的目标节点消息队列基于节点异常检测模型进行训练得到检测结果,可以快速确定发生异常故障的目标节点消息队列,不需要人工对海量的各节点数据进行标注,降低了人力成本,省时省力,提高了检测效率,同时,也保证了各节点数据的实时性,同时显著提高微服务系统异常检测的响应速度。

实施例3

本发明实施例提供一种微服务系统的异常检测装置,如图8所示,包括:

第一构建模块81,用于构建微服务架构的节点网络图。

第一获取模块82,用于根据节点网络图,获取与业务调用请求指令对应的目标节点调用链路,目标节点调用链路中的各节点按照节点调用顺序依次排列。

第二获取模块83,用于获取目标节点调用链路中的各节点的数据特征。并按照节点调用顺序将各节点的数据特征组成目标节点数据特征向量。

第二构建模块84,用于构建节点异常检测模型,并将目标节点数据特征向量输入异常节点检测模型训练得到检测结果。

确认模块85,用于根据检测结果,确认发生异常故障目标节点调用链路。

本发明实施例中的微服务系统的异常检测装置,多个目标节点数据特征依次顺序存放至预设队长的节点消息队列中作为同时待检测的目标节点消息队列。

本发明实施例中的微服务系统的异常检测装置,将目标节点消息队列输入多个顺序排列的节点异常检测模型训练得到检测结果,多个节点异常检测模型的数量等于目标节点消息队列中存放目标节点数据特征的数量。

本发明实施例中的微服务系统的异常检测装置,第二构建模块84包括:

构建子模块,用于利用孤立森林算法构建节点异常检测模型,将目标节点数据特征或目标节点消息队列输入异常节点监测模型训练得到检测结果。

本发明实施例中的微服务系统的异常检测装置,各节点的数据特征包括节点服务时延和/或数据资源占用量和/或网络传输速度。

本发明实施例中的微服务系统的异常检测装置,通过对目标节点调用链路的各节点的数据特征对应的目标节点数据特征向量或存储有目标节点数据特征向量的目标节点消息队列基于节点异常检测模型进行训练得到检测结果,可以快速确定发生异常故障的目标节点调用链路,不需要人工对海量的各节点数据进行标注,降低了人力成本,省时省力,提高了检测效率,同时,也保证了各节点数据的实时性,显著提高了微服务系统的响应速度。

实施例4

本发明实施例提供一种存储介质,其上存储有计算机指令,该指令被处理器执行时实现实施例1或实施例2中的方法的步骤。该存储介质上还存储有节点网络图、目标节点调用链路、业务调用请求、目标节点数据特征向量、检测结果等。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。

本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。

实施例5

本发明实施例提供一种计算机设备,如图9所示,该计算机设备包括存储器920、处理器910及存储在存储器920上并可在处理器910上运行的计算机程序,处理器910执行程序时实现实施例1或实施例2中方法的步骤。

图9是本发明实施例提供的执行列表项操作的处理方法的一种计算机设备的硬件结构示意图,如图9所示,该计算机设备包括一个或多个处理器910以及存储器920,图9中以一个处理器910为例。

执行列表项操作的处理方法的计算机设备还可以包括:输入装置930和输出装置940。

处理器910、存储器920、输入装置930和输出装置940可以通过总线或者其他方式连接,图9中以通过总线连接为例。

处理器910可以为中央处理器(Central Processing Unit,CPU)。处理器910还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

相关技术
  • 一种微服务系统的异常检测方法及装置
  • 用于微服务系统的异常检测方法及其装置和电子设备
技术分类

06120112774512