CN115599621A - 微服务异常诊断方法、装置、设备及存储介质 - Google Patents
微服务异常诊断方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115599621A CN115599621A CN202110721823.3A CN202110721823A CN115599621A CN 115599621 A CN115599621 A CN 115599621A CN 202110721823 A CN202110721823 A CN 202110721823A CN 115599621 A CN115599621 A CN 115599621A
- Authority
- CN
- China
- Prior art keywords
- micro
- service
- calling
- preset
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
Abstract
本申请实施例提供一种微服务异常诊断方法、装置、设备及存储介质,其中,方法包括:接收异常诊断请求,异常诊断请求中包括待诊断的微服务调用链;采用预设划分方式,对微服务调用链进行划分,形成至少一个微服务调用子链;将每一微服务调用子链输入至预设诊断模型中,得到所述预设诊断模型预测出的微服务调用子链中最后一个微服务所调用的目标微服务;根据微服务调用链中的微服务标识、和目标微服务标识,对微服务调用链进行异常诊断。如此,通过预设诊断模型对每一调用子链所调用的目标微服务进行预测,使得运维人员能够在复杂的调用链中确定异常的微服务调用之间的关联关系,快速的定位微服务故障点。
Description
技术领域
本申请实施例涉及计算机技术领域,涉及但不限于一种微服务异常诊断方法、装置、设备及存储介质。
背景技术
目前,微服务架构的整个应用分散为多个服务,在进行故障点定位时非常困难。在大访问量的场景下,微服务故障是必然会出现的,微服务故障会导致微服务架构的稳定性下降,且微服务数量变多会导致微服务架构中某一微服务出现故障的概率增大。
针对上述问题,相关技术中,技术人员提出了微服务链路追踪方法,该方法可以在复杂的微服务调用中定位故障点。但是,当微服务架构极为复杂的时候,人工仍然无法从纷繁杂乱的调用链中整理出正常和异常的微服务调用关联,运维人员无法快速的定位微服务故障点。
发明内容
基于相关技术中所存在的上述问题,本申请实施例提供一种微服务异常诊断方法、装置、设备及存储介质。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种微服务异常诊断方法,包括:
接收异常诊断请求,所述异常诊断请求中包括待诊断的微服务调用链,所述微服务调用链包括依次调用的多个微服务的微服务标识;
采用预设划分方式,对所述微服务调用链进行划分,形成至少一个微服务调用子链,每一所述微服务调用子链中包括至少一个所述微服务标识;
将每一所述微服务调用子链输入至预设诊断模型中,得到所述预设诊断模型预测出的所述微服务调用子链中最后一个微服务所调用的目标微服务的目标微服务标识;
根据所述微服务调用链中的微服务标识、和每一所述微服务调用子链对应的所述目标微服务标识,对所述微服务调用链进行异常诊断。
本申请实施例提供一种微服务异常诊断装置,包括:
接收模块,用于接收异常诊断请求,所述异常诊断请求中包括待诊断的微服务调用链,所述微服务调用链包括依次调用的多个微服务的微服务标识;
划分模块,用于采用预设划分方式,对所述微服务调用链进行划分,形成至少一个微服务调用子链,每一所述微服务调用子链中包括至少一个所述微服务标识;
预测模块,用于将每一所述微服务调用子链输入至预设诊断模型中,得到所述预设诊断模型预测出的所述微服务调用子链中最后一个微服务所调用的目标微服务的目标微服务标识;
诊断模块,用于根据所述微服务调用链中的微服务标识、和每一所述微服务调用子链对应的所述目标微服务标识,对所述微服务调用链进行异常诊断。
本申请实施例提供一种微服务异常诊断设备,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现上述的微服务异常诊断方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行所述可执行指令时,实现上述的微服务异常诊断方法。
本申请实施例提供的微服务异常诊断方法、装置、设备及存储介质,在对微服务调用链中的微服务进行异常诊断时,采用预设的划分方式,对微服务调用链进行划分形成至少一个调用子链,将调用子链输入至预设诊断模型中,对调用子链中最后一个微服务所调用的目标微服务进行预测,并获取该目标微服务的目标微服务标识,根据该目标微服务标识和微服务调用链中的微服务标识,对微服务调用链进行异常诊断。如此,通过预设诊断模型对每一调用子链所调用的目标微服务进行预测,使得运维人员能够在复杂的调用链中确定异常的微服务调用之间的关联关系,快速的定位微服务故障点,减少了工作量,提高了异常诊断的效率。
附图说明
图1是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图;
图2是本申请实施例提供的微服务异常诊断方法的应用场景示意图;
图3是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图;
图4A是本申请实施例提供的预设诊断模型的结构示意图;
图4B是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图;
图5是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图;
图6是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图;
图7是本申请实施例提供的预设诊断模型训练方法的一个可选的流程示意图;
图8是本申请实施例中时延及执行时间的关系示意图;
图9是本申请实施例提供的一种的系统架构示意图;
图10为本申请实施例提供的微服务异常诊断方法的一个可选的前馈神经网络示意图;
图11是本申请实施例提供的微服务异常诊断装置的组成结构示意图;
图12是本申请实施例提供的微服务异常诊断设备的组成结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在解释本申请实施例的方案之前,首先对本申请实施例所涉及到的名词和专用术语进行解释:
1)微服务:微服务是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的应用程序接口(API,Application Programming Interface)集相互通信。
2)调用链:在系统完成一次业务调用的过程中,把服务之间的调用信息(包括:时间、接口、层次、结果)记录下来,然后将所有的记录连接为树状链条就产生了调用链。调用链能够实现将业务端到端的执行完整的调用过程进行还原,可以根据不同维度进行统计分析,从而标识出有异常的服务调用,能够快速分析定界到出异常的服务,同时可根据数据统计分析系统性能瓶颈。
3)Span:表示调用链路的基本单元,即微服务调用单元,微服务使用SpanID作为标识;每个微服务的每次调用都对应一个Span,在其中记录服务名称、时间等基本信息。
4)Trace:表示一个调用链路,由若干Span组成,Trace使用traceID作为标识,每个Trace对应一次完整的服务请求。
5)全文搜索服务器:可以近乎实时的存储、检索数据,广泛应用于日志检索,全站搜索等领域。能通过简单的RESTful API(Representational State Transfer,一种网络应用程序的设计风格和开发方式)来隐藏底层全文搜索的复杂性;能具备高扩展性,轻易可以扩展到上百台服务器,处理PB(petabyte)级别的数据。一般具备实用性的全文搜索服务器还需要支持分布式多用户能力,例如Lucene和Elasticsearch等。
6)异常检测:在数据挖掘中,异常检测用于实现对不符合预期的模式或数据集中其他项目的项目、事件或观测值进行识别。通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。异常通常也包括:离群值、新奇、噪声、偏差和例外等。
7)双向长短时记忆(Bi-LSTM,Bi-Directional Long Short-Term Memory):是由前向LSTM与后向LSTM组合而成,其中,长短期记忆网络(LSTM,Long Short-Term Memory)是循环神经网络(RNN,Recurrent Neural Network)的一种。LSTM由于其设计的特点,非常适合用于对时序数据的建模,如文本数据。
微服务架构的整个应用分散成多个服务,在进行故障点定位时非常困难。微服务架构的稳定性下降,服务数量变多会导致其中一个服务出现故障的概率增大。在微服务架构中,一个服务故障可能会产生雪崩效用并导致整个系统故障,事实上,在大访问量的生产场景下,故障是必然会出现的。在传统的单体应用中发生了故障时,运维人员排查问题的方法通常是观察日志,研究错误信息和调用堆栈。但如果在微服务架构采用相同的故障排查方法,进行故障点定位会非常困难,这是因为在微服务架构中,整个应用分散成多个服务,运维人员如果采用相同的故障排查方法,则需要一个台机器一台机器地查看日志,一个服务接一个服务地进行手工调用,排查效率会十分低下。
针对这种问题,技术人员提出了微服务链路追踪方法,该方法可以在复杂的服务调用中定位问题点;也可以分析服务的性能瓶颈,以方便在流量激增的情况下扩容。链路追踪是通过向微服务调用的请求和回复中添加记录调用关系、调用时间和逻辑实体等信息,通过收集并分析这些信息,重构出调用关系链路。
但是,在微服务架构极为复杂的情况下,人工无法从纷繁杂乱的调用链中整理出正常和异常的调用关联,运维人员无法快速的定位故障点并修复;即使采集到链路追踪数据,但在欠缺有效的分析方法时,运维人员依然无法有效地解决故障。
针对上述问题,本申请实施例基于链路追踪数据,构建监控平台,集中采集、管理和检索采集到的追踪数据,且本申请实施例基于监控平台,根据采集到的数据实现微服务调用链的异常检测:首先,根据具体业务情况的时间迟滞,确认微服务之间的时间先后次序;其次,将含有先后次序的调用链信息输入到Bi-LSTM模型中,由模型学习正常流程下的微服务调用链的执行模式。
综上所述,本申请实施例通过采集到的调用链数据,构建能自动学习微服务调用链的正常的调用关系次序的异常检测模型,实现微服务自动异常检测机制。
本申请实施例提出的微服务异常诊断方法,在对微服务调用链中的微服务进行异常诊断时,采用预设的划分方式,对微服务调用链进行划分形成至少一个调用子链,将调用子链输入至预设诊断模型中,对调用子链中最后一个微服务所调用的目标微服务进行预测,并获取该目标微服务的目标微服务标识,根据该目标微服务标识和微服务调用链中的微服务标识,对微服务调用链进行异常诊断。如此,通过预设诊断模型对每一个调用子链所调用的目标微服务进行预测,使得运维人员能够在复杂的调用链中确定异常的微服务调用关联,快速的定位微服务故障点,减少了工作量,提高了异常诊断的效率。
下面说明本申请实施例提供的微服务异常诊断设备的示例性应用,本申请实施例提供的微服务异常诊断设备可以实施为笔记本电脑、平板电脑、台式计算机、移动设备等各种类型的终端,也可以实施为服务器。下面,将说明微服务异常诊断设备实施为服务器时的示例性应用。
参见图1,图1是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图,将结合图1示出的步骤进行说明。
步骤S101、接收异常诊断请求,所述异常诊断请求中包括待诊断的微服务调用链,所述微服务调用链包括依次调用的多个微服务的微服务标识。
这里,异常诊断可以是实时诊断,也可以是非实时诊断,即定时诊断,例如:每小时进行一次异常诊断。异常诊断请求可以是运维人员触发的,也可以是服务器自动触发的。
在一些实施例中,微服务调用链是指一个完整的微服务系统包含多个微服务,各个微服务存在互相调用的情况,就会形成一个调用链,这个调用链就是微服务调用链。微服务调用链包括一个客户端请求从发出到被响应经历了哪些微服务、请求总时长和每个微服务所花时长等信息,因此,对微服务调用链进行异常诊断有利于运维人员快速定位故障微服务节点。
在一些实施例中,微服务调用链的形成可以通过以下步骤实现:
步骤S1011、获取微服务调用过程中多个被调用的微服务,形成微服务集合,其中,每一微服务对应一时间戳和微服务标识。
在一些实施例中,数据采集可以在微服务侧安装用于采集数据的采集模块,例如:可以安装代理器(agent),由agentHTTP或远程过程调用(gRPC,Goo gle Remote ProcedureCall)向统一管理平台中提交采集到的调用链数据,其中,统一管理平台用于检测和管理整个微服务调用链异常检测的执行过程。
在一些实施例中,微服务标识可以是指SpanID,用于表示一次微服务调用;每一个微服务调用链也可以有一个标识:traceID;每次微服务调用的调用者也可以有一个标识:ParentID。
步骤S1012、根据每一微服务对应的时间戳,确定每一微服务在微服务调用过程中的调用顺序。
步骤S1013、按照调用顺序,对微服务集合中的微服务对应的微服务标识进行排序,形成微服务标识序列。
在一些实施例中,在微服务调用出现异常后,为了得到完整的微服务调用过程的时延记录,可以为每一个微服务设置一时间戳,通过该时间戳可以得到微服务调用的时长。例如:客户端已发送(Client Sent)时间戳,用于表示客户端发起到服务器的调用请求的时刻;服务器已接收(Server Received)时间戳,用于表示服务器接收到了客户端的调用请求的时刻;服务器已发送(Serve r Sent)时间戳,用于表示服务器完成了处理,准备将信息返给客户端的时刻;客户端已收到(Client Received)时间戳,用于表示客户端接收到了服务器的返回信息的时刻。
在一些实施例中,根据微服务调用链的标识、微服务的标识和时间戳,能够获知微服务调用链中每一个微服务的调用顺序和层级关系,形成微服务标识序列。
步骤S1014、对所述微服务标识序列进行聚合,得到所述微服务调用链。
这里,聚合是指将一次请求中所调用的微服务整合并串联为完整的微服务调用链。
步骤S102、采用预设划分方式,对所述微服务调用链进行划分,形成至少一个微服务调用子链,每一所述微服务调用子链中包括至少一个所述微服务标识。
这里,微服务子链是指将微服务调用链经过预设划分方式进行划分之后,所形成的具有固定长度的微服务调用链,微服务子链的长度小于或等于微服务调用链的长度,微服务子链中包括的微服务标识的数量小于或等于微服务调用链中微服务标识的数量。
在一些实施例中,预设划分方式可以是通过窗口大小为N的窗口,在微服务调用链上进行滑动,每移动一个微服务标识即可得到一个微服务子链。通过遍历整个微服务调用链,能够获得多个长度为N的微服务调用子链,每一微服务调用子链中至少包括一个微服务。
步骤S103、将每一所述微服务调用子链输入至预设诊断模型中,得到所述预设诊断模型预测出的所述微服务调用子链中最后一个微服务所调用的目标微服务的目标微服务标识。
这里,预设诊断模型用于预测每一个微服务调用子链最后一个微服务所调用的微服务,将该微服务称为目标微服务,该微服务的标识称为目标微服务标识。
预设诊断模型可以是具有特定结构的神经网络模型,可以采用预先训练好的预设诊断模型对每一个微服务调用子链进行预测,以得到每一个微服务调用子链中最后一个微服务所调用的目标微服务的目标微服务标识。
步骤S104、根据所述微服务调用链中的微服务标识、和每一所述微服务调用子链对应的所述目标微服务标识,对所述微服务调用链进行异常诊断。
在一些实施例中,在获取目标微服务标识后,获取微服务调用链中该微服务调用子链实际调用的实际微服务标识,判断目标微服务标识与实际微服务标识是否相同,对所述微服务调用链进行异常诊断。
本申请实施例对微服务调用链中的微服务进行异常诊断时,采用预设的划分方式,对微服务调用链进行划分形成至少一个调用子链,将调用子链输入至预设诊断模型中,对调用子链中最后一个微服务所调用的目标微服务进行预测,并获取该目标微服务的目标微服务标识,根据该目标微服务标识和微服务调用链中的微服务标识,对微服务调用链进行异常诊断。如此,通过预设诊断模型对每一调用子链所调用的目标微服务进行预测,使得运维人员能够在复杂的调用链中确定异常的微服务调用关联,快速的定位微服务故障点,减少了工作量,提高了异常诊断的效率。
参见图2,图2是本申请实施例提供的微服务异常诊断方法的应用场景示意图。为实现对微服务调用链进行异常诊断,本申请实施例提供的微服务异常诊断系统20中包括终端100、网络200和服务器300,其中,终端100上运行有客户端,在进行微服务异常诊断时,终端100通过网络200向服务器300发送异常诊断请求,服务器在接收到异常诊断请求之后,可以采用本申请实施例的方法,对异常诊断请求进行解析,获取到微服务调用链,然后,自动确定出客户端运行时的微服务调用链是否异常,并形成异常结果并显示。在进行异常检测时,服务器采用预设的划分方式,对微服务调用链进行划分形成至少一个调用子链,将调用子链输入至预设诊断模型中,对调用子链中最后一个微服务所调用的目标微服务进行预测,并获取该目标微服务的目标微服务标识,根据该目标微服务标识和微服务调用链中的微服务标识,对微服务调用链进行异常诊断,形成诊断结果并通过网络200将微服务调用链诊断结果发送给终端100。当终端100接收到微服务调用链诊断结果之后,可以在当前界面100-1上直接显示接收到的微服务调用链诊断结果。
基于前述实施例,图3是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图,如图3所示,在一些实施例中,步骤S102可以通过以下步骤实现:
步骤S301、确定所述预设划分方式对应的划分窗口大小和步长。
在一些实施例中,将微服务调用子链输入预设诊断模型之后,为了使得预设诊断模型中输出的目标微服务标识的准确度更高,需要设置一个理想的窗口大小来对微服务调用链进行划分,例如:将划分窗口大小设为N,步长为1,即每N个调用的微服务划分为一个微服务调用子链,滑动窗口从微服务调用链的第一个微服务开始滑动,每滑动一个步长之后,进行下一次划分,得到一个新的微服务调用子链。如此,可以避免滑动窗口太小而使得微服务调用子链中微服务样本不足,而导致的预设诊断模型中输出的目标微服务标识不准确的问题;也可以避免滑动窗口太大在微服务调用子链中引入噪声;而导致预设诊断模型中输出的目标微服务标识不准确的问题。
步骤S302、按照所述划分窗口大小和所述步长,依次对所述微服务调用链进行至少一次划分,形成长度相同的所述微服务调用子链。
在一些实施例中,对所述微服务调用链进行至少一次划分,得到至少一个微服务调用子链,将微服务调用子链输入预设诊断模型中,对微服务调用链进行异常诊断。
本申请实施例通过预设的窗口大小和步长对微服务调用链进行划分,通过划分后的微服务调用子链进行异常诊断,使得本申请实施例中提供的微服务异常诊断方法能够更加准确的获取异常微服务节点,降低了运维人员的工作量。
在一些实施例中,微服务异常诊断方法还可以通过预设诊断模型来实现,图4A是本申请实施例提供的预设诊断模型的结构示意图,如图4A所示,预设诊断模型400包括:特征提取层410、中间处理层420和微服务预测层430,其中,特征提取层410用于对微服务调用子链中的每一微服务标识进行特征提取,得到每一微服务标识对应的特征向量;中间处理层420,用于依次对每一特征向量进行激活处理,以确定出预设微服务集合中的每一预设微服务作为所述目标微服务的调用概率;微服务预测层430,用于根据每一所述预设微服务的所述调用概率,在所述预设微服务集合中确定出所述目标微服务和所述目标微服务的目标微服务标识。
在一些实施例中,预设微服务集合是指应用在运行时能够调用的所有微服务形成的集合,该微服务集合可以是用户预先设置的,也可以是在应用运行过程中,服务器根据应用运行时所调用的微服务数据自动生成的,本申请实施例不做限制。
基于图4A的预设诊断模型,本申请实施例提供一种微服务异常诊断方法,图4B是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图,如图4B所示,在一些实施例中,步骤S103可以通过以下步骤实现:
步骤S401、将每一所述微服务调用子链输入至预设诊断模型中,通过所述预设诊断模型的特征提取层,对所述微服务调用子链中的每一所述微服务标识进行特征提取,得到每一所述微服务标识对应的特征向量。
本申请实施例中,特征提取层用于将微服务调用子链中的微服务标识数据进行特征提取,以得到微服务调用子链中每一个微服务的特征向量。
步骤S402、通过所述预设诊断模型的中间处理层,依次对每一所述特征向量进行激活处理,以确定出预设微服务集合中的每一预设微服务作为所述目标微服务的调用概率。
在一些实施例中,对特征向量进行激活处理可以是通过激活函数实现的,例如:通过softmax激活函数对特征向量进行激活处理,可以确定出预设微服务集合中的每一预设微服务作为所述目标微服务的调用概率,根据调用概率即可得到目标微服务。
步骤S403、通过所述预设诊断模型的微服务预测层,根据每一所述预设微服务的所述调用概率,在所述预设微服务集合中确定出所述目标微服务和所述目标微服务的目标微服务标识。
在一些实施例中,所述目标微服务具有至少一个;可以通过以下步骤在所述预设微服务集合中确定出所述目标微服务和所述目标微服务的目标微服务标识:
步骤S4031、按照所述调用概率由大到小的顺序,对所述预设微服务集合中的所述预设微服务进行排序,得到预设微服务序列。
在一些实施例中,在确定出预设微服务集合中每一微服务被微服务调用子链中最后一个微服务调用的调用概率后,对每一微服务调用概率的数字由大到小进行排序,得到预设微服务序列。
步骤S4032、将所述预设微服务序列中的前K个预设微服务,确定为K个目标微服务。
步骤S4033、获取所述K个目标微服务中每一所述目标微服务的目标微服务标识。
在一些实施例中,将调用概率高的前K个目标微服务确定为微服务调用子链对应的目标微服务,并获取每一目标微服务的目标微服务标识。
本申请实施例提供的微服务诊断方法,通过预设诊断模型获得每一微服务调用子链的目标微服务,使得服务器能够迅速判断出异常为服务节点,降低了运维人员的工作量,提高了工作效率。
在获取目标微服务标识之后,根据微服务调用子链实际调用的微服务,可以进行异常诊断。基于前述实施例,图5是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图,如图5所示,在一些实施例中,步骤S104可以通过以下步骤实现:
步骤S501、对于每一所述微服务调用子链,将所述微服务调用链中位于所述微服务调用子链之后的微服务,确定为所述微服务调用子链的实际调用微服务。
步骤S502、获取所述实际调用微服务的实际微服务标识。
这里,实际微服务标识是指,每一微服务调用子链在实际调用时,所调用微服务的标识。
步骤S503、判断在K个目标微服务标识中,是否能匹配到与所述实际微服务标识相同的目标微服务标识。
在一些实施例中,当每一所述微服务调用子链,在所述K个目标微服务标识中,能够匹配到与所述实际微服务标识相同的目标微服务标识时,执行步骤S504;当在K个目标微服务标识中,不能匹配到与所述实际微服务标识相同的目标微服务标识时,执行步骤S505。
步骤S504、所述微服务调用子链的调用正常。
在一些实施例中,对于每一微服务调用子链,获取调用概率最高的前K个目标微服务标识,当实际微服务标识在这K个目标微服务标识中能够匹配到相同的微服务标识时,说明该微服务调用子链实际调用的微服务是正确的,也就是说,该微服务节点无异常。例如:一个微服务调用子链实际调用的微服务为微服务A,微服务标识为1,当调用概率最高的前K个目标微服务标识中有标识为1的目标微服务标识时,说明该微服务调用子链实际调用微服务A是正确的,即该微服务A的节点无异常。
步骤S505、所述微服务调用子链的调用异常。
在一些实施例中,当实际微服务标识不能在这K个目标微服务标识中匹配到相同的微服务标识时,说明该微服务调用子链实际调用的微服务是错误的,也就是说,该微服务节点存在异常。例如:一个微服务调用子链实际调用的微服务为微服务A,微服务标识为1,当调用概率最高的前K个目标微服务标识中没有有标识为1的目标微服务标识时,说明该微服务调用子链实际调用微服务A是错误的,即该微服务A的节点存在异常。
本申请实施例通过将实际调用的微服务标识与目标微服务标识进行匹配,能够快速确定微服务异常节点。
在一些实施例中,在确定出微服务节点异常之后,需要对用户或运维人员进行告警。图6是本申请实施例提供的微服务异常诊断方法的一个可选的流程示意图,如图6所示,在一些实施例中,步骤S105之后还可以包括以下步骤:
步骤S601、当确定所述微服务调用链的调用异常时,确定所述微服务调用链中出现异常调用的微服务节点。
步骤S602、根据所述异常调用的微服务节点生成告警信息。
在一些实施例中,告警信息可以包括:微服务名称,异常时间、调用过程的执行时长和调用过程的延迟等数据。
步骤S603、在终端的当前界面上显示所述告警信息。
在一些实施例中,可以通过图形用户接口(GUI,Graphical User Interface)可视化界面对异常结果和告警信息进行查看。
本申请实施例对微服务诊断的异常结果进行处理,使得微服务业务数据出现异常时,及时通知用户和运维人员,能够及时解决微服务异常问题,提高了工作效率。
基于前述实施例,图7是本申请实施例提供的预设诊断模型训练方法的一个可选的流程示意图,如图7所示,在一些实施例中,预设诊断模型的训练可以通过以下步骤实现:
步骤S701、将划分后形成的样本微服务调用子链和样本预设微服务集合,输入至所述预设诊断模型中。
在一些实施例中,样本预设微服务集合是指所有可以被调用的微服务形成的集合。
步骤S702、通过所述预设诊断模型的特征提取层,对所述样本微服务调用子链中的每一样本微服务标识进行特征提取,得到每一所述样本微服务标识对应的样本特征向量。
步骤S703、通过所述预设诊断模型的中间处理层,依次对每一所述样本特征向量进行激活处理,以确定出样本预设微服务集合中的每一样本预设微服务作为样本目标微服务的样本调用概率。
步骤S704、通过所述预设诊断模型的微服务预测层,根据每一所述样本预设微服务的所述样本调用概率,在所述样本预设微服务集合中确定出所述样本目标微服务和所述样本目标微服务的样本目标微服务标识。
步骤S705、将所述样本目标微服务标识输入至预设损失模型中,得到损失结果。
本申请实施例中,预设损失模型中包括损失函数,通过损失函数计算样本目标微服务标识与预先标注的实际微服务标识之间的相似度,将所得到的相似度确定为该损失结果。
在一些实施例中,当样本目标微服务标识为多个时,样本目标微服务标识与预先标注的实际微服务标识之间的相似度可以取值0到100%之间的任意值,只要相似度不为0,则表示样本目标微服务标识中至少有一个微服务标识与实际微服务标识相同,说明预设诊断模型的参数正确无需修正,因此无需对预设诊断模型进行进一步的训练,即可以停止对预设诊断模型的继续训练;当样本目标微服务标识只有一个时,样本目标微服务标识与预先标注的实际微服务标识之间的相似度可以取值0或100%,只有当相似度为100%时,说明样本目标微服务标识与实际微服务标识相同,说明预设诊断模型的参数正确无需修正,因此无需对预设诊断模型进行进一步的训练,即可以停止对预设诊断模型的继续训练。
在一些实施例中,无论样本目标微服务标识为多个还是一个,只要当样本目标微服务标识与预先标注的实际微服务标识之间的相似度取值为0时,表明预设诊断模型不能准确的预测出目标微服务标识,因此需要继续对预设诊断模型进行进一步的训练。
在一些实施例中,还可以设置预设诊断模型训练过程的收敛条件,例如,收敛条件可以是当训练时长达到时长阈值时,则停止对预设诊断模型的训练,或者,收敛条件可以是当训练次数达到次数阈值时,则停止对预设诊断模型的训练,或者,收敛条件可以是当预设诊断模型输出的样本诊断结果与预先标注的损失结果之间的相似度不为0时,则停止对预设诊断模型的训练。
步骤S706、根据所述损失结果,对所述特征提取层、所述中间处理层和所述微服务预测层中的参数进行修正,以得到训练后的预设诊断模型。
本申请实施例中通过对预设诊断模型中的参数进行修正,得到训练后的预设诊断模型,如此,在微服务异常诊断时,通过训练后的预设诊断模型对微服务调用链进行诊断,提高了微服务异常诊断的准确性。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例提供一种微服务异常诊断方法,本申请实施例的实现流程可以分为数据采集和异常分析两个阶段,其中异常分析包括:异常检测模型(即预设诊断模型)的训练和识别两个阶段。
在一些实施例中,微服务是一个分布式的架构,如果要分析整个微服务流程出现问题的环节,就需要先将服务流程串联起来,形成微服务调用链。为此,在数据采集中,引入了用于标识每次微服务调用的标识符(SpanID),用于标记每次请求的标记符(TraceID),用于标记每次微服务调用的调用者的标识符(ParentID),如表1所示,表1是本申请实施例中标识符和对应的用途对照示意图。
表1
标识符 | 用途 |
SpanID | 用于标识每次微服务调用 |
TraceID | 用于标记每次请求 |
ParentID | 用于标记每次微服务调用的调用者 |
在一些实施例中,通过上述标识符即可获知微服务的调用顺序和层级关系,但是微服务调用出现问题后,还需要计算出耗时,但要计算耗时,仅通过上述的三个标识还不够,还需要加上时间戳。为了统计出完整的时延记录,需要包括下述时间戳:客户端已发送时间戳(Client Sent),用于表示客户端发起到服务器的调用请求的时刻;服务器已接收时间戳(Server Received),用于表示服务器接收到了客户端的调用请求的时刻;服务器已发送时间戳(Server Sent),用于表示服务器完成了处理,准备将信息返给客户端的时刻;客户端已收到时间戳(Client Received),用于表示客户端接收到了服务器的返回信息的时刻,如表2所示,表2是本申请实施例中时间戳和对应的含义对照示意图。
表2
时间戳 | 含义 |
Client Sent | 客户端发起到服务器的调用请求的时刻 |
Server Received | 服务器接收到了客户端的调用请求的时刻 |
Server Sent | 服务器完成了处理,准备将信息返给客户端的时刻 |
Client Received | 客户端接收到了服务器的返回信息的时刻 |
图8是本申请实施例中时延及执行时间的关系示意图,如图8所示,通过上述的时间戳,可以得到微服务A调用微服务B中不同过程的执行时长或延迟,例如:客户端已收到时间戳至服务器已接收时间戳(即Server Received至Client Sent)是指用时的网络延迟;服务器已发送时间戳至服务器已接收时间戳(即Server Received至Client Sent)是指服务执行时间;客户端已收到时间戳至服务器已发送时间戳(即Server Received至ClientSent)是指服务响应的延迟;客户端已收到时间戳至客户端已发送时间戳(即ServerReceived至Client Sent)是指整个服务调用执行的时间,如表3所示,表3是本申请实施例中交互时间戳和对应的含义对照示意图。
表3
时间戳 | 含义 |
Server Received-Client Sent | 用时的网络延迟 |
Server Sent-Server Received | 服务执行时间 |
Client Received-Server Sent | 服务响应的延迟 |
Client Received-Client Sent | 整个服务调用执行的时间 |
图9是本申请实施例提供的一种系统架构示意图,如图9所示,通过采集模块910进行数据采集,可以在微服务侧安装用于采集数据的代理(agent),通过agentHTTP或gRPC方式向统一管理平台920提交采集到的调用链数据,其中,统一管理平台920包括监控平台921和汇聚模块922,监控平台921通过采集接口收集到调用链数据后,通过汇聚模块922会对调用链数据进行必要的数据分析和汇聚,然后将调用链数据存储到数据存储模块930中。数据存储模块与统一管理平台之间采用松耦合的依赖关系,例如:可以采用Elasticsearch(基于Lucene的搜索服务器)等全文存储检索库存储调用链数据,也可以将调用链数据存储在MySQL(关系型数据库管理系统)这样的传统关系型数据库中。
在一些实施例中,用户可以通过图形用户接口(GUI,Graphical User Interface)的可视化界面对最终的异常检测结果进行查看。
在一些实施例中,异常分析包括:异常检测模型的训练和识别两个阶段。在训练阶段,为了构建能识别异常情况下的微服务调用执行,需要在正常的环境中采集足够的数据。首先需要为建模中所涉及的微服务进行编号,形成微服务-编号的映射表。表4是本申请实施例中微服务和编号的映射表,如表4所示,微服务A对应编号1;微服务B对应编号2,直至微服务X对应N。
表4
编号 | 微服务 |
1 | 微服务A |
2 | 微服务B |
3 | 微服务C |
..... | ...... |
N | 微服务X |
将采集到的数据按照TraceID划分,每一个独立的TraceID形成一个独立的样本调用链(即为微服务调用链),同一个TraceID的样本调用链中含有多个SpanID(即为微服务)。每个SpanID所对应的微服务ID为样本值。表5是本申请实施例中TraceID和样本调用链的映射表,如表5所示,当TraceID为1001时,样本调用链为[微服务A,微服务B,微服务C,微服务B,微服务C];当TraceID为1002时,样本调用链为[微服务C,微服务A,微服务B];直至当TraceID为N时,样本调用链为[微服务X,微服务Y,微服务Z]。
表5
Trace ID | 样本调用链 |
1001 | [微服务A,微服务B,微服务C,微服务B,微服务C] |
1002 | [微服务C,微服务A,微服务B] |
….. | …... |
N | [微服务X,微服务Y,微服务Z] |
根据表5所示的映射表,可以将TraceID对应的样本调用链转化为ID序列,表6是本申请实施例中TraceID和ID序列的映射表,如表6所示,当TraceID为1001时,ID序列为[1,2,3,2,3];当TraceID为1002时,ID序列为[3,1,2]。
表6
Trace ID | ID序列 |
1001 | [1,2,3,2,3] |
1002 | [3,1,2] |
..... | ...... |
在获得ID序列后,通过设定窗口大小为h的窗口,对ID序列进行分割,得到长度统一为h的切片ID子序列(即为微服务调用子链)及下一步的实际ID值(即为实际调用微服务标识),例如原始序列为:[15,22,9,11,9,7],窗口大小为3,则切片结果为:第一个ID子序列为[15,22,9],下一步的实际ID值为11;第二个ID子序列为[22,9,11],下一步的实际ID值为9;第二个ID子序列为[9,11,9],下一步的实际ID值为7。切片结果构成了训练Bi-LSTM的训练和测试数据,Bi-LSTM模型最后接上一个前馈神经网络,并采用softmax作为激活函数,以使得能够输出可能的预测ID(即为目标微服务标识)。
图10为本申请实施例提供的微服务异常诊断方法的一个可选的前馈神经网络示意图,图10中记载了一个双向循环神经网络,从图10可以看出来,双向循环神经网络的隐藏层要保存两个值Ai和Ai′,其中,Ai参与正向计算,si为正向隐藏层当前时刻为i时的状态,是正向循环神经网络的记忆单元;Ai′参与反向计算,si′为反向隐藏层当前时刻为i时的状态,是反向循环神经网络的记忆单元。
在双向循环神经网络中,当前时刻的输出不仅和之前的状态有关,还可能和未来的状态有关系,对于每个时刻i,输入会同时提供给两个方向相反的单向循环神经网络,输出由这两个单向循环神经网络共同决定。每输入一步,每一层各自都共享正向和反向的参数U、U′、V、V′、W和W′,最终yi的输出值由Ai和Ai′通过以下公式(1-1)至(1-3)来计算,这里,xi表示双向循环神经网络在第i时刻的输入数据,i=1、2、3、…,yi表示双向循环神经网络在第i时刻的输出数据,公式(1-1)至(1-3)中是以i=2为例进行说明的:
A2=f(Ux2+WA1) (1-1)
A2′=f(U′x2+W′A3′) (1-2)
y2=g(VA2+V′A2′) (1-3)
其中,公式(1-1)是正向隐藏层的计算公式,公式(1-2)是反向隐藏层的计算公式,其中,x2表示双向循环神经网络在i=2时刻的输入数据;y2表示双向循环神经网络在i=2时刻的输出数据;U是在正向隐藏层计算时,输入数据x2的权重矩阵;U′是在反向隐藏层计算时,输入数据x2的权重矩阵;W是在正向循环时,将上一次的值作为这一次输入数据x2的权重矩阵;A1是正向隐藏层在i=1时刻隐藏层的值;W′是在反向循环时,将上一次的值作为这一次输入数据x2的权重矩阵;A3′是反向隐藏层在i=3时刻隐藏层的值;f是激活函数;公式(1-3)是输出层的计算公式,V是正向输出y2的权重矩阵;V′是反向输出y2的权重矩阵;g是激活函数。
在一些实施例中,通过上述前馈神经网络可以得到特征序列(即微服务调用子链)与预测值(即目标微服务标识)之间的映射关系,表7是本申请实施例中TraceID和ID序列的映射表。
表7
特征序列 | 预测值 |
[15,22,9] | 11 |
[22,9,11] | 9 |
... | ... |
[9,11,9] | 7 |
在训练好异常检测模型后,统一管理平台实时采集数据,并将采集的数据根据训练阶段的数据预处理方式将其映射为ID序列,并对ID序列进行窗口切分;然后将切分好的ID子序列输入模型,模型会输出所有微服务ID的概率分布,将其中概率最高的前K个作为正常的输出,当实际的微服务ID不在这K个微服务ID中,即可以判断微服务调用过程中发生了异常。
图11是本申请实施例提供的微服务异常诊断装置的组成结构示意图,如图11所示,该微服务异常诊断装置110包括:
接收模块111,用于接收异常诊断请求,所述异常诊断请求中包括待诊断的微服务调用链,所述微服务调用链包括依次调用的多个微服务的微服务标识;划分模块112,用于采用预设划分方式,对所述微服务调用链进行划分,形成至少一个微服务调用子链,每一所述微服务调用子链中包括至少一个所述微服务标识;预测模块113,用于将每一所述微服务调用子链输入至预设诊断模型中,得到所述预设诊断模型预测出的所述微服务调用子链中最后一个微服务所调用的目标微服务的目标微服务标识;诊断模块114,用于根据所述微服务调用链中的微服务标识、和每一所述微服务调用子链对应的所述目标微服务标识,对所述微服务调用链进行异常诊断。
在一些实施例中,所述装置还包括:获取模块,用于在微服务调用过程中,获取多个被调用的微服务,形成微服务集合;其中,每一所述微服务对应一时间戳和所述微服务标识;第一确定模块,用于根据每一所述微服务对应的时间戳,确定每一所述微服务在所述微服务调用过程中的调用顺序;排序模块,用于按照所述调用顺序,对所述微服务集合中的微服务对应的所述微服务标识进行排序,形成微服务标识序列;聚合模块,用于对所述微服务标识序列进行聚合,得到所述微服务调用链。
在一些实施例中,所述划分模块还用于确定所述预设划分方式对应的划分窗口大小和步长;按照所述划分窗口大小和所述步长,依次对所述微服务调用链进行至少一次划分,形成长度相同的所述微服务调用子链。
在一些实施例中,所述预测模块还用于将每一所述微服务调用子链输入至预设诊断模型中,通过所述预设诊断模型的特征提取层,对所述微服务调用子链中的每一所述微服务标识进行特征提取,得到每一所述微服务标识对应的特征向量;通过所述预设诊断模型的中间处理层,依次对每一所述特征向量进行激活处理,以确定出预设微服务集合中的每一预设微服务作为所述目标微服务的调用概率;通过所述预设诊断模型的微服务预测层,根据每一所述预设微服务的所述调用概率,在所述预设微服务集合中确定出所述目标微服务和所述目标微服务的目标微服务标识;其中,所述预设微服务集合中的全部预设微服务的所述调用概率之和为1。
在一些实施例中,所述预测模块还用于按照所述调用概率由大到小的顺序,对所述预设微服务集合中的所述预设微服务进行排序,得到预设微服务序列;将所述预设微服务序列中的前K个预设微服务,确定为K个目标微服务;获取所述K个目标微服务中每一所述目标微服务的目标微服务标识。
在一些实施例中,所述预测模块还用于对于每一所述微服务调用子链,将所述微服务调用链中位于所述微服务调用子链之后的微服务,确定为所述微服务调用子链的实际调用微服务;获取所述实际调用微服务的实际微服务标识;根据每一所述微服务调用子链的K个目标微服务标识、和所述实际微服务标识,对所述微服务调用链进行异常诊断。
在一些实施例中,所述预测模块还用于对于每一所述微服务调用子链,当在所述K个目标微服务标识中,能够匹配到与所述实际微服务标识相同的目标微服务标识时,确定出所述微服务调用子链的调用正常;当在K个目标微服务标识中,不能匹配到与所述实际微服务标识相同的目标微服务标识时,确定出所述微服务调用子链的调用异常;如果存在至少一个微服务调用子链的调用异常时,确定出所述微服务调用链的调用异常;如果全部微服务调用子链的调用正常时,确定出所述微服务调用链的调用正常。
在一些实施例中,所述装置还包括:第二确定模块,用于当确定所述微服务调用链的调用异常时,确定所述微服务调用链中出现异常调用的微服务节点;生成模块,用于根据所述异常调用的微服务节点生成告警信息;显示模块,用于在终端的当前界面上显示所述告警信息。
在一些实施例中,所述预设诊断模型通过以下步骤进行训练:将划分后形成的样本微服务调用子链和样本预设微服务集合,输入至所述预设诊断模型中;通过所述预设诊断模型的特征提取层,对所述样本微服务调用子链中的每一样本微服务标识进行特征提取,得到每一所述样本微服务标识对应的样本特征向量;通过所述预设诊断模型的中间处理层,依次对每一所述样本特征向量进行激活处理,以确定出样本预设微服务集合中的每一样本预设微服务作为样本目标微服务的样本调用概率;其中,样本目标微服务是所述样本微服务调用子链中最后一个微服务所调用的微服务;通过所述预设诊断模型的微服务预测层,根据每一所述样本预设微服务的所述样本调用概率,在所述样本预设微服务集合中确定出所述样本目标微服务和所述样本目标微服务的样本目标微服务标识;将所述样本目标微服务标识输入至预设损失模型中,得到损失结果;根据所述损失结果,对所述特征提取层、所述中间处理层和所述微服务预测层中的参数进行修正,以得到训练后的预设诊断模型。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的微服务异常诊断方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
本申请实施例提供一种微服务异常诊断设备,图12是本申请实施例提供的微服务异常诊断设备的组成结构示意图,如图12所示,所述微服务异常诊断设备120至少包括:处理器121和配置为存储可执行指令的计算机可读存储介质122,其中处理器121通常控制所述微服务异常诊断设备的总体操作。计算机可读存储介质122配置为存储由处理器121可执行的指令和应用,还可以缓存待处理器121和微服务异常诊断设备120中各模块待处理或已处理的数据,可以通过闪存或随机访问存储器(RAM,Random Access Memory)实现。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的微服务异常诊断方法,例如,如图1示出的方法。
在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种微服务异常诊断方法,其特征在于,所述方法包括:
接收异常诊断请求,所述异常诊断请求中包括待诊断的微服务调用链,所述微服务调用链包括依次调用的多个微服务的微服务标识;
采用预设划分方式,对所述微服务调用链进行划分,形成至少一个微服务调用子链,每一所述微服务调用子链中包括至少一个所述微服务标识;
将每一所述微服务调用子链输入至预设诊断模型中,得到所述预设诊断模型预测出的所述微服务调用子链中最后一个微服务所调用的目标微服务的目标微服务标识;
根据所述微服务调用链中的微服务标识、和每一所述微服务调用子链对应的所述目标微服务标识,对所述微服务调用链进行异常诊断。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在微服务调用过程中,获取多个被调用的微服务,形成微服务集合;其中,每一所述微服务对应一时间戳和所述微服务标识;
根据每一所述微服务对应的时间戳,确定每一所述微服务在所述微服务调用过程中的调用顺序;
按照所述调用顺序,对所述微服务集合中的微服务对应的所述微服务标识进行排序,形成微服务标识序列;
对所述微服务标识序列进行聚合,得到所述微服务调用链。
3.根据权利要求1所述的方法,其特征在于,所述采用预设划分方式,对所述微服务调用链进行划分,形成至少一个微服务调用子链,包括:
确定所述预设划分方式对应的划分窗口大小和步长;
按照所述划分窗口大小和所述步长,依次对所述微服务调用链进行至少一次划分,形成长度相同的所述微服务调用子链。
4.根据权利要求1所述的方法,其特征在于,所述将每一所述微服务调用子链输入至预设诊断模型中,得到所述预设诊断模型预测出的所述微服务调用子链中最后一个微服务所调用的目标微服务的目标微服务标识,包括:
将每一所述微服务调用子链输入至预设诊断模型中,通过所述预设诊断模型的特征提取层,对所述微服务调用子链中的每一所述微服务标识进行特征提取,得到每一所述微服务标识对应的特征向量;
通过所述预设诊断模型的中间处理层,依次对每一所述特征向量进行激活处理,以确定出预设微服务集合中的每一预设微服务作为所述目标微服务的调用概率;
通过所述预设诊断模型的微服务预测层,根据每一所述预设微服务的所述调用概率,在所述预设微服务集合中确定出所述目标微服务和所述目标微服务的目标微服务标识;
其中,所述预设微服务集合中的全部预设微服务的所述调用概率之和为1。
5.根据权利要求4所述的方法,其特征在于,所述目标微服务具有至少一个;
所述根据每一所述预设微服务的所述调用概率,在所述预设微服务集合中确定出所述目标微服务和所述目标微服务的目标微服务标识,包括:
按照所述调用概率由大到小的顺序,对所述预设微服务集合中的所述预设微服务进行排序,得到预设微服务序列;
将所述预设微服务序列中的前K个预设微服务,确定为K个目标微服务;
获取所述K个目标微服务中每一所述目标微服务的目标微服务标识。
6.根据权利要求5所述的方法,其特征在于,所述根据所述微服务调用链中的微服务标识、和每一所述微服务调用子链对应的所述目标微服务标识,对所述微服务调用链进行异常诊断,包括:
对于每一所述微服务调用子链,将所述微服务调用链中位于所述微服务调用子链之后的微服务,确定为所述微服务调用子链的实际调用微服务;
获取所述实际调用微服务的实际微服务标识;
根据每一所述微服务调用子链的K个目标微服务标识、和所述实际微服务标识,对所述微服务调用链进行异常诊断。
7.根据权利要求6所述的方法,其特征在于,所述根据每一所述微服务调用子链的K个目标微服务标识、和所述实际微服务标识,对所述微服务调用链进行异常诊断,包括:
对于每一所述微服务调用子链,当在所述K个目标微服务标识中,能够匹配到与所述实际微服务标识相同的目标微服务标识时,确定出所述微服务调用子链的调用正常;
当在K个目标微服务标识中,不能匹配到与所述实际微服务标识相同的目标微服务标识时,确定出所述微服务调用子链的调用异常;
如果存在至少一个微服务调用子链的调用异常时,确定出所述微服务调用链的调用异常;
如果全部微服务调用子链的调用正常时,确定出所述微服务调用链的调用正常。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
当确定所述微服务调用链的调用异常时,确定所述微服务调用链中出现异常调用的微服务节点;
根据所述异常调用的微服务节点生成告警信息;
在终端的当前界面上显示所述告警信息。
9.根据权利要求1至7任一项所述的方法,其特征在于,所述预设诊断模型通过以下步骤进行训练:
将划分后形成的样本微服务调用子链和样本预设微服务集合,输入至所述预设诊断模型中;
通过所述预设诊断模型的特征提取层,对所述样本微服务调用子链中的每一样本微服务标识进行特征提取,得到每一所述样本微服务标识对应的样本特征向量;
通过所述预设诊断模型的中间处理层,依次对每一所述样本特征向量进行激活处理,以确定出样本预设微服务集合中的每一样本预设微服务作为样本目标微服务的样本调用概率;其中,样本目标微服务是所述样本微服务调用子链中最后一个微服务所调用的微服务;
通过所述预设诊断模型的微服务预测层,根据每一所述样本预设微服务的所述样本调用概率,在所述样本预设微服务集合中确定出所述样本目标微服务和所述样本目标微服务的样本目标微服务标识;
将所述样本目标微服务标识输入至预设损失模型中,得到损失结果;
根据所述损失结果,对所述特征提取层、所述中间处理层和所述微服务预测层中的参数进行修正,以得到训练后的预设诊断模型。
10.一种微服务异常诊断装置,其特征在于,包括:
接收模块,用于接收异常诊断请求,所述异常诊断请求中包括待诊断的微服务调用链,所述微服务调用链包括依次调用的多个微服务的微服务标识;
划分模块,用于采用预设划分方式,对所述微服务调用链进行划分,形成至少一个微服务调用子链,每一所述微服务调用子链中包括至少一个所述微服务标识;
预测模块,用于将每一所述微服务调用子链输入至预设诊断模型中,得到所述预设诊断模型预测出的所述微服务调用子链中最后一个微服务所调用的目标微服务的目标微服务标识;
诊断模块,用于根据所述微服务调用链中的微服务标识、和每一所述微服务调用子链对应的所述目标微服务标识,对所述微服务调用链进行异常诊断。
11.一种微服务异常诊断设备,其特征在于,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至9任一项所述的微服务异常诊断方法。
12.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行所述可执行指令时,实现权利要求1至9任一项所述的微服务异常诊断方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110721823.3A CN115599621A (zh) | 2021-06-28 | 2021-06-28 | 微服务异常诊断方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110721823.3A CN115599621A (zh) | 2021-06-28 | 2021-06-28 | 微服务异常诊断方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599621A true CN115599621A (zh) | 2023-01-13 |
Family
ID=84840226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110721823.3A Pending CN115599621A (zh) | 2021-06-28 | 2021-06-28 | 微服务异常诊断方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599621A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116846741A (zh) * | 2023-08-31 | 2023-10-03 | 广州嘉为科技有限公司 | 一种告警收敛方法、装置、设备及存储介质 |
-
2021
- 2021-06-28 CN CN202110721823.3A patent/CN115599621A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116846741A (zh) * | 2023-08-31 | 2023-10-03 | 广州嘉为科技有限公司 | 一种告警收敛方法、装置、设备及存储介质 |
CN116846741B (zh) * | 2023-08-31 | 2023-11-28 | 广州嘉为科技有限公司 | 一种告警收敛方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6691249B1 (en) | Probabilistic diagnosis, in particular for embedded and remote applications | |
US8087001B2 (en) | Computer-implemented systems and methods for software application testing | |
CN109947646A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
EP2572294B1 (en) | System and method for sql performance assurance services | |
CN105095059B (zh) | 一种自动化测试的方法和装置 | |
CN102143008A (zh) | 用于数据中心的诊断故障事件的方法及装置 | |
CN113946499A (zh) | 一种微服务链路跟踪及性能分析方法、系统、设备及应用 | |
CN116450399B (zh) | 微服务系统故障诊断及根因定位方法 | |
CN108304286A (zh) | 一种对转码服务器并发性能进行自动化测试的系统及方法 | |
CN111259073A (zh) | 基于日志、流量和业务访问的业务系统运行状态智能研判系统 | |
CN110362479B (zh) | 系统升级测试方法和系统 | |
CN116719664B (zh) | 基于微服务部署的应用和云平台跨层故障分析方法及系统 | |
CN111913824B (zh) | 确定数据链路故障原因的方法及相关设备 | |
CN110489317A (zh) | 基于工作流的云系统任务运行故障诊断方法与系统 | |
CN111881014A (zh) | 一种系统测试方法、装置、存储介质及电子设备 | |
CN115204536A (zh) | 楼宇设备故障预测方法、装置、设备及存储介质 | |
CN111782532A (zh) | 一种基于网络异常节点分析的软件故障定位方法及系统 | |
CN115599621A (zh) | 微服务异常诊断方法、装置、设备及存储介质 | |
CN113672506A (zh) | 基于机器学习的动态比例测试用例排序选择方法及系统 | |
CN115759885B (zh) | 一种基于分布式物资供应下的物资抽检方法和装置 | |
CN115248782B (zh) | 一种自动化测试方法、装置及计算机设备 | |
CN115170097B (zh) | 一种空间数据分布式质检方法及系统 | |
Hryszko et al. | Cost effectiveness of software defect prediction in an industrial project | |
CN110502424A (zh) | 一种应用软件的性能数据处理方法、装置、系统及终端 | |
CN115982049A (zh) | 性能测试中的异常检测方法、装置和计算机设备 |
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 |