CN111341445A - 微服务调用链的健康检测方法和健康检测系统 - Google Patents

微服务调用链的健康检测方法和健康检测系统 Download PDF

Info

Publication number
CN111341445A
CN111341445A CN202010080261.4A CN202010080261A CN111341445A CN 111341445 A CN111341445 A CN 111341445A CN 202010080261 A CN202010080261 A CN 202010080261A CN 111341445 A CN111341445 A CN 111341445A
Authority
CN
China
Prior art keywords
detection
interface
service
microservice
calling
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.)
Granted
Application number
CN202010080261.4A
Other languages
English (en)
Other versions
CN111341445B (zh
Inventor
刘志文
王延
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN202010080261.4A priority Critical patent/CN111341445B/zh
Publication of CN111341445A publication Critical patent/CN111341445A/zh
Application granted granted Critical
Publication of CN111341445B publication Critical patent/CN111341445B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H50/00ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics
    • G16H50/30ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics for calculating health indices; for individual health risk assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Abstract

本发明实施例提供一种微服务调用链的健康检测方法和健康检测系统、网络设备、以及计算机可读存储介质,属于健康检测技术领域。其中,微服务调用链的健康检测方法可以包括:通过目标微服务的检测接口来模拟目标微服务的业务接口的调用过程;判断检测接口的调用过程中的各个检测环节是否发生异常;若任意检测环节发生异常,则记录异常日志,并中断检测接口当前的调用过程。采用本发明,能够确定微服务调用链上的任意业务调用环节是否异常,及时精确定位微服务调用链上出现异常的位置。同时,健康检测基于检测接口进行,不污染实际的业务数据。

Description

微服务调用链的健康检测方法和健康检测系统
技术领域
本发明涉及健康检测技术领域,特别涉及一种微服务调用链的健康检测方法和健康检测系统。
背景技术
早期的业务服务系统通常基于单体架构来搭建。随着互联网技术的不断发展,业务服务系统的规模也在的不断扩大。为了使业务服务便于部署、维护、以及扩展等,可以基于微服务架构来搭建业务服务系统。这样,各个微服务可以独立部署、维护、扩展等,在功能上则表现为作为一个统一的整体。
在基于微服务架构搭建的业务服务系统中,通常需要多个微服务相互调用才能实现对一条业务请求的业务服务。为了获取各个微服务的健康状态,确定业务服务是否稳定可靠,微服务健康检测程序可以周期性地对微服务调用链上的各个微服务进行心跳检测,根据各个微服务发送的心跳包来确定各个微服务是否正常提供服务。
本专利申请的发明人,通过研究微服务的心跳检测过程发现,现有技术至少存在以下问题:现有的心跳检测技术仅针对单一微服务,健康检测程序仅能分别检测各个微服务在本地的业务功能是否正常,无法发现微服务间的调用异常。
发明内容
本申请的目的在于提供一种微服务调用链的健康检测方法和微服务,所述技术方案如下:
第一方面,提供了一种微服务调用链的健康检测方法,所述方法包括:
通过目标微服务的检测接口来模拟所述目标微服务的业务接口的调用过程;
判断所述检测接口的调用过程中的各个检测环节是否发生异常;
若任意所述检测环节发生异常,则记录异常日志,并中断所述检测接口当前的调用过程。
在实施中,可以在各个微服务上创建与业务接口的业务逻辑相同的检测接口,利用检测接口可以模拟业务接口的整个调用过程。检测接口调用过程中任意检测环节异常时可以记录异常日志。这样,基于异常日志便可确定对应的业务接口的哪一调用环节发生异常,便于及时精确定位微服务调用链上出现异常的位置,为及时处理和解除异常以优化微服务调用链整体的业务服务性能提供了基础。同时,健康检测基于检测接口进行,不污染实际的业务数据,也不会对微服务上的正常业务产生影响。
可选的,所述目标微服务的检测接口基于单元测试框架被创建。
在实施中,采用单元测试技术创建检测接口,不仅可以对调用链进行健康检测,还便于自动化测试微服务的业务功能,利于程序开发。
可选的,若所述目标微服务的业务接口的调用过程包括调用所述目标微服务依赖的关联微服务的业务接口,则所述目标微服务的检测接口的调用过程具体包括:
通过所述目标微服务的检测接口调用所述关联微服务的检测接口,并接收所述关联微服务的检测接口返回的响应结果。
在实施中,通过检测接口之间的相互调用来模拟业务接口之间的互相调用。这样,基于检测接口间的调用是否正常便可以确定相应的业务接口之间的调用是否正常。
可选的,若所述目标微服务的业务接口的调用过程包括调用所述目标微服务依赖的外部业务接口,则所述目标微服务的检测接口的调用过程具体包括:
通过所述目标微服务的检测接口调用Mock接口;其中,所述Mock接口用于代替所述外部业务接口;
接收所述Mock接口返回的响应结果。
在实施中,通过调用Mock接口来替代调用外部业务接口。这样,可以避免健康检测的各个检测环节受到外部业务接口的限制,使得针对目标微服务自身业务逻辑以及微服务间调用的健康检测能够顺利进行。
可选的,若所述目标微服务的业务接口的调用过程包括调用所述目标微服务依赖的外部业务接口,则所述目标微服务的检测接口的调用过程具体包括:
通过所述目标微服务的检测接口调用外部检测接口;其中,所述外部检测接口用于代替所述外部业务接口;
接收所述外部服务的检测接口返回的响应结果。
在实施中,外部服务也可以对外提供检测接口,外部检测接口可以用于模拟外部服务的业务接口。这样,基于外部检测接口的调用是否正常便可以确定外部业务接口的调用是否正常。
进一步的,判断所述调用过程中的各个检测环节是否发生异常,包括:
判断各个检测环节返回的响应结果是否为预期结果;
若当前检测环节返回的响应结果不是预期结果,则确定当前检测环节发生异常。
可选的,所述目标微服务的检测接口基于预设检测周期被调用。
在实施中,可以根据实际需要预先设置检测周期的大小,从而及时发现发生异常的检测环节,定位相应的发生异常的业务调用环节。
第二方面,提供了另一种微服务调用链的健康检测方法,所述方法包括:
接收并分析任意微服务的检测接口发送的异常日志;其中,所述检测接口用于模拟所述任意微服务的业务接口的调用过程;
若接收到的异常日志满足预设阈值,则触发告警。
在实施中,各个微服务上创建有与业务接口的业务逻辑相同的检测接口,利用检测接口可以模拟业务接口的整个调用过程。当某一检测接口的调用过程中的任意检测环节发生异常,该检测接口可以向健康检测程序发送异常日志。健康检测程序通过分析检测接口发送的异常日志,便能够确定业务接口的调用环节发生异常。并且,异常日志满足预设阈值时才触发阈值告警,避免频繁告警,使得技术人员能够及时并且高效地处理微服务调用链上发生异常的业务调用环节。同时,健康检测基于检测接口进行,不污染实际的业务数据。
可选的,所述方法还包括:
基于预设检测周期向微服务调用链上的第一个微服务发送健康检测请求。
第三方面,提供了一种微服务调用链的健康检测系统,所述健康检测系统包括:
检测接口,用于模拟所述微服务的业务接口的调用过程;
判断模块,用于判断所述检测接口的调用过程中的各个检测环节是否发生异常;
日志模块,用于在任意所述检测环节发生异常时记录异常日志,并中断所述检测接口当前的调用过程;
健康检测模块,用于接收并分析任意微服务的检测接口发送的异常日志,若接收到的异常日志满足预设阈值,则触发告警。
可选的,所述微服务上的检测接口基于单元测试框架被创建。
第四方面,提供了一种网络设备,所述网络设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行,以实现如第一方面所述的微服务调用链的健康检测方法,或者实现如第二方面所述的微服务调用链的健康检测方法。
第五方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行,以实现如第一方面所述的微服务调用链的健康检测方法,或者实现如第二方面所述的微服务调用链的健康检测方法。
本发明实施例提供的技术方案带来的有益效果是:第一,为各个微服务创建检测接口来模拟业务接口的业务逻辑,通过调用检测接口可以确定业务接口的各个业务调用环节是否正常,便于及时精确定位微服务调用链上出现异常的位置,为及时处理和解除异常以优化微服务调用链整体的业务服务性能提供了基础。第二,健康检测基于检测接口进行,不污染实际的业务数据,也不会对微服务上的正常业务产生影响。第三,采用单元测试技术创建检测接口,不仅可以对调用链进行健康检测,还便于自动化测试微服务的业务功能,利于程序开发。第四,通过调用Mock接口来替代调用外部业务接口,可以避免健康检测的各个检测环节受到外部业务接口的限制,使得针对目标微服务自身业务逻辑以及微服务间调用的健康检测能够顺利进行。第五,可以根据实际需要预先设置检测周期的大小,从而及时发现发生异常的检测环节。第六,异常日志满足预设阈值时触发健康检测程序告警,可以避免频繁告警,使得技术人员能够及时并且高效地处理微服务调用链上发生异常的业务调用环节,从而及时处理和解除异常以优化微服务调用链整体的业务服务性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种微服务调用链的健康检测方法的流程图;
图2为本发明实施例提供的一种微服务调用链的调用环节示意图;
图3为本发明实施例提供的一种微服务调用链的健康检测系统的结构示意图;
图4为本发明实施例提供的一种基于业务接口对微服务进行业务调用的流程图;
图5为本发明实施例提供的一种基于检测接口对微服务进行健康检测的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种微服务调用链的健康检测方法,该方法可以应用于微服务调用链上的任意微服务,即将微服务调用链上的所有微服务作为健康检测的对象。并且,该方法可以由健康检测程序辅助实现。其中,健康检测程序的部署方法可以包括设置定时任务和基于业务服务系统原有的监控程序来创建等等,本发明对此不做限制。为了便于描述,可以将位于微服务调用链上的任意两个相邻的微服务依次称作目标微服务和关联微服务。本发明提供的目标微服务及关联微服务上均部署有检测接口。各个微服务上的检测接口与业务接口具有相同的业务逻辑。业务接口用于业务调用,为用户提供业务服务,而检测接口用于健康检测。这样,健康检测过程需要的数据以及产生的数据与业务调用产生的数据分离,健康检测过程不会污染业务数据。
在对微服务调用链进行健康检测时,微服务调用链上的第一个微服务的检测接口可以调用第二个微服务的检测接口,第二个微服务的检测接口可以调用第三个微服务的检测接口,以此类推,一次健康检测涵盖的检测环节将与微服务调用链上的业务调用环节一一对应。其中,目标微服务的检测接口的调用过程所涵盖的检测环节可以包括:目标微服务的检测接口在本地的运行环节、以及目标微服务的检测接口调用目标微服务所依赖的关联微服务的检测接口的环节。目标微服务上的检测接口与业务接口的逻辑对等,因此,通过调用目标微服务的检测接口便可以确定业务接口的各个业务调用环节是否异常,便于及时精确定位微服务调用链上出现异常的位置,为及时处理和解除异常以优化微服务调用链整体的业务服务性能提供了基础。
需要说明的是,各个微服务所实现的处理可以理解为由业务服务系统中实际的一台或多台网络设备具体执行。上述网络设备可以包括处理器、存储器、收发器,处理器可以用于进行下述流程中对微服务调用链进行健康检测的处理,存储器可以用于存储下述处理过程中需要的数据以及产生的数据,收发器可以用于接收和发送下述处理过程中的相关数据。
值得一提的是,在对微服务调用链进行健康检测之前,可以利用单元测试(UnitTest)框架在微服务调用链上的各个微服务中创建检测接口。基于单元测试框架创建的检测接口不仅可用于微服务调用链的健康检测,还有利于在各个微服务上实现测试驱动开发(Test-Driven Development,TDD),使得技术人员可以更自由得对业务程序进行开发和改进。并且,检测接口可以是RPC(Remote Procedure Call,远程过程调用)接口,可以保证远程过程调用对调用方而言是透明的。当然,在实施中,也可以基于其他技术为各个微服务创建与业务接口逻辑对等的检测接口,本发明对此不作限制。
下面将结合具体实施方式,对图1所示的处理流程进行详细的说明。为了便于理解,请结合参考图2所示的一种微服务调用链的调用环节示意图。
步骤101,健康检测程序基于预设检测周期向微服务调用链上的第一个微服务发送健康检测请求。
在实施中,健康检测程序可以部署在任意网络设备上,例如可以部署于微服务注册中心。可以根据实际需要在健康检测程序的配置文件中预先设置检测周期。其中,检测周期也可称为心跳间隔。例如,检测周期可以是5秒。这样,健康检测程序可以每隔5秒向微服务调用链上的第一个微服务发送健康检测请求来调用第一个微服务的检测接口,之后,第一个微服务可以向第二个微服务发送输入参数来调用第二个微服务的检测接口,进而使得其他微服务上的检测接口依次被调用。当然,检测周期可以按需要设置为其他数值,本发明此不作限制。
步骤102,目标微服务通过自身检测接口来模拟自身业务接口的调用过程。
在实施中,基于健康检测程序周期性发出的健康检测请求,各个微服务的检测接口也可以周期性地被调用。当自身检测接口获取到输入参数时,目标微服务便可以按照业务接口的业务逻辑执行各个检测环节。
需要说明的是,调用各个检测接口的触发条件也可以不依赖于健康检测程序发送的健康检测请求。例如,可以在微服务调用链上的第一个微服务的配置文件中预先设置检测周期,第一个微服务可以基于配置文件周期性地自动执行各个检测环节。其中,第一个微服务可以通过自身检测接口调用第二微服务的检测接口,进而使得其他微服务上的检测接口依次被调用,实现对整条微服务调用链的健康检测。当然,在实施中,还可以通过其他方式触发调用各个微服务上的检测接口,本发明对此不作限制。
可选的,目标微服务自身的业务接口的调用过程可以包括:调用目标微服务依赖的关联微服务的业务接口。相应的,目标微服务自身的检测接口的调用过程可以包括:通过目标微服务的检测接口调用关联微服务的检测接口,并接收关联微服务的检测接口返回的响应结果。
以图2为例,微服务调用链A-B-C上有三个微服务,依次可称作微服务A、微服务B和微服务C。微服务A中的部分业务功能依赖于微服务B,而微服务B中的部分业务功能又依赖于微服务C。其中,结合参考图2和图4,业务接口API A的业务逻辑可以包括三个业务调用环节,具体可以为:首先,基于用户提供的输入参数m和n调用本地函数X(m,n),并获得函数X(m,n)的输出数据Y。其次,将Y作为输入参数调用外部业务接口HTTP API,并获得HTTP API的响应结果Z。再次,将Z作为输入参数来调用微服务B的业务接口API B,并获得API B返回的响应结果F。此外,API A可以对接收到的响应结果F进行相关处理并向用户输出调用结果,完成一次完整的业务调用。
业务接口API B的业务逻辑可以包括两个业务调用环节,具体可以为:首先,基于API A传递的输入参数Z调用微服务C的业务接口API C,并接收API C返回的响应数据E。其次,调用本地函数(图2中未示出)对E进行处理,并向API A发送响应结果F。
业务接口API C的业务逻辑可以包括一个业务调用环节,具体可以为:基于API B传递的输入参数Z调用本地函数(图2中未示出),并向API B发送响应结果E。
以目标微服务为微服务B、关联微服务为微服务C为例,微服务B的检测接口TEST B与业务接口API B具有相同业务逻辑,微服务C的检测接口TEST C与业务接口API C具有相同业务逻辑。相应的,当业务接口API B正常提供业务服务时,检测接口TEST B的调用过程包括:微服务B的检测接口TEST B可以将微服务A的检测接口TEST A传入的数据Z′作为输入参数来调用微服务C的检测接口TEST C,并接收TEST C返回的响应数据E′。当然,TEST B的调用过程还可以包括其他检测环节。例如,在获得TEST C返回的响应数据E′之后,调用本地函数(图2中未示出)对E′进行处理,并向TEST A发送响应结果F′。
可选的,目标微服务的业务接口的调用过程可以包括:调用目标微服务依赖的外部业务接口。检测接口与业务接口具有相同的业务逻辑,因此,目标微服务的检测接口的调用过程可以包括:通过目标微服务的检测接口调用Mock接口,并接收所述Mock接口返回的响应结果。
在实施中,Mock技术是指在测试过程中,通过创建一个Mock对象来模拟某一不容易构造/获取的对象的技术。考虑到需要检测目标微服务的业务接口自身的业务服务是否符合预期,但无需检测目标微服务依赖的外部业务接口是否正常提供业务服务的情况,可以通过Mock技术创建用于代替目标微服务依赖的外部业务接口的Mock对象。其中,可以将用于代替该外部业务接口的Mock对象称作Mock接口。Mock接口可以拦截目标微服务将要发送给外部业务接口的数据,并返回模拟数据。采用Mock接口可以避免目标微服务的检测接口的调用过程受到外部业务接口的限制,微服务调用链的健康检测能够顺利进行。其中,调用Mock接口的响应结果可以按需求定制,定制Mock数据的具体过程在此不做赘述。
以目标微服务为微服务A为例,微服务A的检测接口TEST A与业务接口API A具有相同业务逻辑。当业务接口API A正常提供业务服务时,相应的,检测接口TEST A的调用过程将正常运行。检测接口TEST A的正常调用过程包括:微服务A的检测接口TEST A接收到健康检测环节发送的健康检测请求时,首先将配置文件中预先设置的参数m′和n′作为输入参数调用本地函数X(m,n),并获得函数X(m,n)的输出数据Y′。其次,将Y′作为输入参数调用与外部业务接口对应的Mock接口,并获得Mock接口的响应结果Z′。再次,将Z′作为输入参数来调用微服务B的检测接口TEST B,并获得TEST B返回的响应结果F′。
值得一提的是,参数m′和n′也可以是外部传入的,例如,健康检测程序将参数m′和n′封装在健康检测请求中发送给微服务A。并且,由于目标微服务的检测接口并不用于实现业务功能,目标微服务的检测接口的调用过程需要的数据和产生的数据均可以通过Mock技术预先定制,避免某些不容易构造或者不容易获取的对象对健康检测过程造成限制。
可选的,目标微服务的业务接口的调用过程可以包括:调用目标微服务依赖的外部业务接口。检测接口与业务接口具有相同的业务逻辑,因此,目标微服务的检测接口的调用过程可以包括:通过目标微服务的检测接口调用外部服务的检测接口,并接收所述外部服务的检测接口返回的响应结果。
在实施中,如果目标微服务的检测接口所依赖的外部服务也部署有检测接口,则在对微服务调用链进行健康检测时,目标微服务的检测接口可以调用外部服务提供的检测接口来确定目标微服务对外部业务接口的调用是否正常。当然,外部服务的检测接口与外部服务用于对外提供业务服务的外部业务接口是否具有相同的业务逻辑,本发明对此不作限制。
步骤103,目标微服务判断自身检测接口的调用过程中的各个检测环节是否发生异常。
具体的,目标微服务可以判断各个检测环节返回的响应结果是否为预期结果。如果当前检测环节返回的响应结果不是预期结果,则可以确定当前检测环节发生异常,并记录异常日志。当目标微服务的任意检测环节发生异常时,则说明对应的业务调用环节发生异常。
在实施中,目标微服务可以根据自身检测接口的调用过程中各个检测环节的响应结果来判断各个检测环节是否发生异常。具体而言,可以预先为目标微服务设置各个检测环节的预期结果。当目标微服务的检测接口执行到任意检测环节时,可以将当前检测环节返回的响应结果与相应的预期结果进行比较。如果当前检测环节返回的响应结果与预期结果相同,则确定当前检测环节未发生异常,相当于对应的业务调用环节的业务功能正常。如果当前检测环节返回的响应结果与预期结果不同,则确定当前检测环节发生异常,相当于对应的业务调用环节的业务功能发生异常。
例如,以目标微服务为微服务B,关联微服务为微服务C为例。可以假设TEST B基于TEST A传入的输入参数Z′调用TEST C这一检测环节的预期结果为E′,TEST B基于输入参数E′调用本地函数(图2中未示出)这一检测环节的预期结果为F′。在调用TEST B的过程中,如果TEST B将Z′作为输入参数调用TEST C之后,接收到TEST C返回的响应结果为e。微服务B可以断言判断响应结果e与预期结果E′是否相同。如果e与E′不同,则微服务B确定TEST B调用TEST C这一检测环节出错。此时,微服务B可以记录异常日志:TEST C调用出错。如果e与E′相同,则TEST B可以进行后续检测环节,例如调用本地函数对E′进行处理。假如微服务B的本地函数向TEST B返回的响应结果为f,微服务B可以断言判断响应结果f与预期结果F′是否相同。如果f与F′不同,则微服务B确定TEST B调用本地函数这一检测环节出错。此时,微服务B可以记录异常日志:本地函数调用出错。如果f与F′相同,则微服务B将F′返回给TEST A。
步骤104,若任意检测环节发生异常,目标微服务则将异常日志发送至健康检测程序,并中断检测接口当前的调用过程。
在实施中,如果目标微服务当前正在执行的检测环节发生异常,则可以在记录异常日志后将异常日志发送给健康检测程序。例如,以目标微服务为微服务B,关联微服务为微服务C为例。在微服务B记录异常日志:TEST C调用出错之后,微服务B可以通过检测接口TEST B将异常日志发送给健康检测程序。同时,目标微服务可以中断自身检测接口当前的调用过程。此外,即使当前的调用过程被中断,目标微服务仍然可以基于预设检测周期来调用自身检测接口。当然,目标微服务也可以暂停自身检测接口后续的周期性调用过程,直到技术人员排除对应的业务接口的业务故障。
结合参考图2和图5,以目标微服务为微服务A为例,对健康检测的流程进行详细说明。可以预先将TEST A基于输入参数m′和n′调用本地函数X(m,n)这一检测环节的预期结果设置为Y′,将TEST A基于参数Y′调用Mock接口这一检测环节的的预期结果设置为Z′,将TEST A基于参数Z′调用微服务B的检测接口TEST B这一检测环节的的预期结果设置为F′。
在调用TEST A的过程中,假如微服务A的本地函数X(m,n)向TEST A返回的响应结果为y,微服务A可以断言判断响应结果y与预期结果Y′是否相同。如果y与Y′不同,则微服务A确定TEST A调用本地函数这一检测环节出错。此时,微服务A可以记录异常日志:本地函数调用出错,并将异常日志发送给健康检测程序。同时,中断TEST A当前的调用过程,即中止当前健康检测过程的后续检测环节。如果y与Y′相同,则TEST A基于参数Y′调用Mock接口。
假如Mock接口向TEST A返回的响应结果为z,微服务A可以断言判断响应结果z与预期结果Z′是否相同。如果z与Z′不同,则微服务A确定TEST A调用Mock接口这一检测环节出错。此时,微服务A可以记录异常日志:Mock接口调用出错,并将异常日志发送给健康检测程序。同时,中断TEST A当前的调用过程,即中止当前健康检测过程的后续检测环节。如果z与Z′相同,则TEST A基于参数Z′调用TEST B。
假如TEST B向TEST A返回的响应结果为f,微服务A可以断言判断响应结果f与预期结果F′是否相同。如果f与F′不同,则微服务A确定TEST A调用TEST B这一检测环节出错。此时,微服务A可以记录异常日志:TEST B调用出错,并将异常日志发送给健康检测程序。同时,中断TEST A当前的调用过程,即中止当前健康检测过程的后续检测环节。如果f与F′相同,则完成TEST A的调用过程,表示整个微服务调用链A-B-C中的各个业务调用环节均处于正常状态。
值得一提的是,微服务B中的部分业务功能依赖于微服务C。假如在TEST B调用TEST C时出现异常,即使TEST B自身的业务逻辑未发生异常,TEST A调用TEST B时也很可能无法接收到TEST B返回的正常响应结果。例如,TEST A在预先设置的超时时长(TimeOut)内未收到TEST B返回的响应结果,则TEST A可以认为响应结果f与F′不同,TEST B调用出错。当然,如果TEST A接收到TEST B返回的响应结果,可以获得微服务A与微服务B进行通信的通信响应时长。如果微服务间通信响应时长大于预设的时间间隔,则TEST A可以认为TEST B调用异常,记录的异常日志可以包含微服务间通信响应时长。之后,健康检测程序可以综合分析微服务B和微服务C上传的异常日志。这样,可以精确定位微服务调用链A-B-C上出现异常的位置为API B调用API C这一业务调用环节,而不是API A调用API B这一业务调用环节。
步骤105,健康检测程序分析目标微服务的检测接口发送的异常日志,若接收到的异常日志满足预设阈值,则触发告警。
在实施中,健康检测程序可以接收各个微服务的检测接口发送的异常日志。并且在自动分析接收到的异常日志时,基于预先设定的阈值来确定是否告警,或者基于预先设定的阈值进行分级告警。通过预先为健康检测程序设置触发告警的阈值,可以避免健康检测程序频繁告警,使得技术人员能够及时并且高效地处理微服务调用链上发生异常的业务调用环节。
例如,预设阈值可以是Level=Error,可以表示日志级别为Error(错误)时触发告警。以图2所示的调用关系为例,TEST A调用TEST B,TEST B调用TEST C。在某一次健康检测过程中,健康检测程序接收到TEST B发送的异常日志:TEST C调用出错。然而,该异常日志的日志级别为Warn(警告),未达到预设阈值Error,可以理解为当前异常对业务服务的影响可以忽略。因此,健康检测程序针对此次异常可以不发出告警。
当然,预设阈值也可以是其他内容,本发明对此不作限制。例如,预设阈值也可以是RTT>50ms,可以表示微服务间通信响应时长(即往返时延(Round-Trip Time))超过50毫秒时触发告警。
相较于现有技术,本发明实施例至少可以带来以下有益效果:第一,为各个微服务创建检测接口来模拟业务接口的业务逻辑,通过调用检测接口可以确定业务接口的各个业务调用环节是否正常,便于及时精确定位微服务调用链上出现异常的位置,为及时处理和解除异常以优化微服务调用链整体的业务服务性能提供了基础。第二,健康检测基于检测接口进行,不污染实际的业务数据。第三,采用单元测试技术创建检测接口,不仅可以对调用链进行健康检测,还便于自动化测试微服务的业务功能,利于程序开发。第四,通过调用Mock接口来替代调用外部业务接口,可以避免健康检测的各个检测环节受到外部业务接口的限制,使得针对目标微服务自身业务逻辑以及微服务间调用的健康检测能够顺利进行。第五,可以根据实际需要预先设置检测周期的大小,从而及时发现发生异常的检测环节。第六,异常日志满足预设阈值时触发健康检测程序告警,可以避免频繁告警,使得技术人员能够及时并且高效地处理微服务调用链上发生异常的业务调用环节,从而及时处理和解除异常以优化微服务调用链整体的业务服务性能。
基于相同的技术构思,本发明实施例还提供了一种微服务调用链的健康检测系统,所述健康检测系统包括:
检测接口,用于模拟所述微服务的业务接口的调用过程;
判断模块,用于判断所述检测接口的调用过程中的各个检测环节是否发生异常;
日志模块,用于在任意所述检测环节发生异常时记录异常日志,并中断所述检测接口当前的调用过程;
健康检测模块,用于接收并分析任意微服务的检测接口发送的异常日志,若接收到的异常日志满足预设阈值,则触发告警。
可选的,所述微服务上的检测接口基于单元测试框架被创建。
可选的,若所述微服务的业务接口的调用过程包括调用所述微服务依赖的关联微服务的业务接口,则所述微服务的检测接口具体用于:
调用所述关联微服务的检测接口,并接收所述关联微服务的检测接口返回的响应结果。
可选的,若所述微服务的业务接口的调用过程包括调用所述微服务依赖的外部业务接口,则所述微服务的检测接口具体用于:
调用Mock接口;所述Mock接口用于代替所述外部业务接口;
接收所述Mock接口返回的响应结果。
可选的,若所述目标微服务的业务接口的调用过程包括调用所述目标微服务依赖的外部业务接口,则所述微服务的检测接口具体用于:
调用外部检测接口;其中,所述外部检测接口用于模拟所述外部业务接口的调用过程;
接收所述外部服务的检测接口返回的响应结果。
进一步的,所述判断模块具体用于:
判断各个检测环节返回的响应结果是否为预期结果;
若当前检测环节返回的响应结果不是预期结果,则确定当前检测环节发生异常。
可选的,所述健康检测模块具体用于:基于预设检测周期向微服务调用链上的第一个微服务发送健康检测请求。
需要说明的是:上述实施例提供的微服务调用链的健康检测系统在对微服务调用链进行健康检测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将健康检测系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的健康检测系统的具体实现原理和所要达到的技术效果可以参见图1所示的方法实施例,在此不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该实现微服务业务链健康检测的软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括存储若干指令用以使得一台网络设备执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种微服务调用链的健康检测方法,其特征在于,所述方法包括:
通过目标微服务的检测接口来模拟所述目标微服务的业务接口的调用过程;
判断所述检测接口的调用过程中的各个检测环节是否发生异常;
若任意所述检测环节发生异常,则记录异常日志,并中断所述检测接口当前的调用过程。
2.如权利要求1所述的方法,其特征在于,所述目标微服务的检测接口基于单元测试框架被创建。
3.如权利要求1所述的方法,其特征在于,若所述目标微服务的业务接口的调用过程包括调用所述目标微服务依赖的关联微服务的业务接口,则所述目标微服务的检测接口的调用过程具体包括:
通过所述目标微服务的检测接口调用所述关联微服务的检测接口,并接收所述关联微服务的检测接口返回的响应结果。
4.如权利要求1所述的方法,其特征在于,若所述目标微服务的业务接口的调用过程包括调用所述目标微服务依赖的外部业务接口,则所述目标微服务的检测接口的调用过程具体包括:
通过所述目标微服务的检测接口调用Mock接口;其中,所述Mock接口用于代替所述外部业务接口;
接收所述Mock接口返回的响应结果。
5.如权利要求1所述的方法,其特征在于,若所述目标微服务的业务接口的调用过程包括调用所述目标微服务依赖的外部业务接口,则所述目标微服务的检测接口的调用过程具体包括:
通过所述目标微服务的检测接口调用外部检测接口;其中,所述外部检测接口用于代替所述外部业务接口;
接收所述外部服务的检测接口返回的响应结果。
6.如权利要求1-5任一项所述的方法,其特征在于,判断所述调用过程中的各个检测环节是否发生异常,包括:
判断各个检测环节返回的响应结果是否为预期结果;
若当前检测环节返回的响应结果不是预期结果,则确定当前检测环节发生异常。
7.如权利要求1所述的方法,其特征在于,所述目标微服务的检测接口基于预设检测周期被调用。
8.一种微服务调用链的健康检测方法,其特征在于,所述方法包括:
接收并分析任意微服务的检测接口发送的异常日志;其中,所述检测接口用于模拟所述任意微服务的业务接口的调用过程;
若接收到的异常日志满足预设阈值,则触发告警。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
基于预设检测周期向微服务调用链上的第一个微服务发送健康检测请求。
10.一种微服务调用链的健康检测系统,其特征在于,所述健康检测系统包括:
检测接口,用于模拟所述微服务的业务接口的调用过程;
判断模块,用于判断所述检测接口的调用过程中的各个检测环节是否发生异常;
日志模块,用于在任意所述检测环节发生异常时记录异常日志,并中断所述检测接口当前的调用过程;
健康检测模块,用于接收并分析任意微服务的检测接口发送的异常日志,若接收到的异常日志满足预设阈值,则触发告警。
11.如权利要求10所述的健康检测系统,其特征在于,所述微服务上的检测接口基于单元测试框架被创建。
12.一种网络设备,其特征在于,所述网络设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行,以实现如权利要求1至7任一项所述的微服务调用链的健康检测方法,或者实现如权利要求8至9任一项所述的微服务调用链的健康检测方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行,以实现如权利要求1至7任一项所述的微服务调用链的健康检测方法,或者实现如权利要求8至9任一项所述的微服务调用链的健康检测方法。
CN202010080261.4A 2020-02-05 2020-02-05 微服务调用链的健康检测方法和健康检测系统 Active CN111341445B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010080261.4A CN111341445B (zh) 2020-02-05 2020-02-05 微服务调用链的健康检测方法和健康检测系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010080261.4A CN111341445B (zh) 2020-02-05 2020-02-05 微服务调用链的健康检测方法和健康检测系统

Publications (2)

Publication Number Publication Date
CN111341445A true CN111341445A (zh) 2020-06-26
CN111341445B CN111341445B (zh) 2024-04-16

Family

ID=71185211

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010080261.4A Active CN111341445B (zh) 2020-02-05 2020-02-05 微服务调用链的健康检测方法和健康检测系统

Country Status (1)

Country Link
CN (1) CN111341445B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112039723A (zh) * 2020-08-18 2020-12-04 北京金和网络股份有限公司 微服务网络状态检测方法、装置及电子设备
CN112732499A (zh) * 2020-12-30 2021-04-30 广州品唯软件有限公司 一种基于微服务架构的测试方法、装置及计算机系统
CN113516174A (zh) * 2021-06-03 2021-10-19 清华大学 调用链异常检测方法、计算机设备以及可读存储介质
CN113704755A (zh) * 2021-07-13 2021-11-26 奇安信科技集团股份有限公司 一种文件检测方法、装置、电子设备、程序及存储介质
WO2022022446A1 (zh) * 2020-07-31 2022-02-03 华为技术有限公司 一种打印日志的方法、装置及系统
CN114363221A (zh) * 2021-12-29 2022-04-15 武汉烽火信息集成技术有限公司 一种基于微服务系统的心跳检测方法、存储介质、电子设备及系统
CN115185736A (zh) * 2022-09-09 2022-10-14 南京航空航天大学 基于图卷积神经网络的微服务调用链异常检测方法及装置

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1956442A (zh) * 2005-10-26 2007-05-02 中兴通讯股份有限公司 一种多模块健康检测方法
CN104407957A (zh) * 2014-10-29 2015-03-11 中国建设银行股份有限公司 一种系统健康检测方法及装置
CN105939228A (zh) * 2015-08-27 2016-09-14 杭州迪普科技有限公司 一种健康检测方法及装置
CN106227611A (zh) * 2016-07-26 2016-12-14 北京北森云计算股份有限公司 一种多语言云编译的动态微服务调用方法及装置
CN106250199A (zh) * 2016-07-26 2016-12-21 北京北森云计算股份有限公司 一种多语言云编译的动态微服务调用方法及装置
CN106878393A (zh) * 2017-01-16 2017-06-20 深圳市商沃科技发展有限公司 一种基于融合微服务架构的系统
CN107566153A (zh) * 2017-07-21 2018-01-09 哈尔滨工程大学 一种自管理的微服务实现方法
CN107612727A (zh) * 2017-09-14 2018-01-19 掌阅科技股份有限公司 分布式健康检查方法、计算设备及计算机存储介质
CN108306917A (zh) * 2017-01-13 2018-07-20 中国移动通信集团江西有限公司 数据处理方法和装置、微服务模块的注册方法及装置
CN108400904A (zh) * 2018-01-26 2018-08-14 北京奇艺世纪科技有限公司 一种基于微服务架构的健康检查方法和装置
US20180309637A1 (en) * 2017-04-25 2018-10-25 Nutanix, Inc. Systems and methods for networked microservice modeling and visualization
WO2018201978A1 (zh) * 2017-05-04 2018-11-08 平安科技(深圳)有限公司 接口调用数据处理方法、装置、计算机设备和存储介质
CN109088762A (zh) * 2018-08-14 2018-12-25 安徽云才信息技术有限公司 一种基于微服务的服务健康监测方法
US20190004871A1 (en) * 2017-06-28 2019-01-03 Intel Corporation Microservices architecture
CN109495559A (zh) * 2018-11-06 2019-03-19 用友网络科技股份有限公司 微服务客户端的服务注册及调用方法、注册及调用系统
CN109542639A (zh) * 2018-11-06 2019-03-29 用友网络科技股份有限公司 一种保障微服务调用数据一致性的处理方法、处理装置
US20190188774A1 (en) * 2017-12-20 2019-06-20 Sap Se Recommendation engine for micro services
CN109961204A (zh) * 2017-12-26 2019-07-02 中国移动通信集团浙江有限公司 一种微服务架构下业务质量分析方法和系统
US20190243910A1 (en) * 2018-02-05 2019-08-08 Microsoft Technology Licensing, Llc Visual Search as a Service
CN110149364A (zh) * 2019-04-15 2019-08-20 厦门市美亚柏科信息股份有限公司 基于数据服务平台提供微服务的方法、装置、存储介质
CN110413333A (zh) * 2018-04-28 2019-11-05 网宿科技股份有限公司 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置

Patent Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1956442A (zh) * 2005-10-26 2007-05-02 中兴通讯股份有限公司 一种多模块健康检测方法
CN104407957A (zh) * 2014-10-29 2015-03-11 中国建设银行股份有限公司 一种系统健康检测方法及装置
CN105939228A (zh) * 2015-08-27 2016-09-14 杭州迪普科技有限公司 一种健康检测方法及装置
CN106227611A (zh) * 2016-07-26 2016-12-14 北京北森云计算股份有限公司 一种多语言云编译的动态微服务调用方法及装置
CN106250199A (zh) * 2016-07-26 2016-12-21 北京北森云计算股份有限公司 一种多语言云编译的动态微服务调用方法及装置
CN108306917A (zh) * 2017-01-13 2018-07-20 中国移动通信集团江西有限公司 数据处理方法和装置、微服务模块的注册方法及装置
CN106878393A (zh) * 2017-01-16 2017-06-20 深圳市商沃科技发展有限公司 一种基于融合微服务架构的系统
US20180309637A1 (en) * 2017-04-25 2018-10-25 Nutanix, Inc. Systems and methods for networked microservice modeling and visualization
WO2018201978A1 (zh) * 2017-05-04 2018-11-08 平安科技(深圳)有限公司 接口调用数据处理方法、装置、计算机设备和存储介质
US20190004871A1 (en) * 2017-06-28 2019-01-03 Intel Corporation Microservices architecture
CN107566153A (zh) * 2017-07-21 2018-01-09 哈尔滨工程大学 一种自管理的微服务实现方法
CN107612727A (zh) * 2017-09-14 2018-01-19 掌阅科技股份有限公司 分布式健康检查方法、计算设备及计算机存储介质
US20190188774A1 (en) * 2017-12-20 2019-06-20 Sap Se Recommendation engine for micro services
CN109961204A (zh) * 2017-12-26 2019-07-02 中国移动通信集团浙江有限公司 一种微服务架构下业务质量分析方法和系统
CN108400904A (zh) * 2018-01-26 2018-08-14 北京奇艺世纪科技有限公司 一种基于微服务架构的健康检查方法和装置
US20190243910A1 (en) * 2018-02-05 2019-08-08 Microsoft Technology Licensing, Llc Visual Search as a Service
CN110413333A (zh) * 2018-04-28 2019-11-05 网宿科技股份有限公司 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置
CN109088762A (zh) * 2018-08-14 2018-12-25 安徽云才信息技术有限公司 一种基于微服务的服务健康监测方法
CN109495559A (zh) * 2018-11-06 2019-03-19 用友网络科技股份有限公司 微服务客户端的服务注册及调用方法、注册及调用系统
CN109542639A (zh) * 2018-11-06 2019-03-29 用友网络科技股份有限公司 一种保障微服务调用数据一致性的处理方法、处理装置
CN110149364A (zh) * 2019-04-15 2019-08-20 厦门市美亚柏科信息股份有限公司 基于数据服务平台提供微服务的方法、装置、存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022022446A1 (zh) * 2020-07-31 2022-02-03 华为技术有限公司 一种打印日志的方法、装置及系统
CN112039723A (zh) * 2020-08-18 2020-12-04 北京金和网络股份有限公司 微服务网络状态检测方法、装置及电子设备
CN112732499A (zh) * 2020-12-30 2021-04-30 广州品唯软件有限公司 一种基于微服务架构的测试方法、装置及计算机系统
CN113516174A (zh) * 2021-06-03 2021-10-19 清华大学 调用链异常检测方法、计算机设备以及可读存储介质
CN113704755A (zh) * 2021-07-13 2021-11-26 奇安信科技集团股份有限公司 一种文件检测方法、装置、电子设备、程序及存储介质
CN114363221A (zh) * 2021-12-29 2022-04-15 武汉烽火信息集成技术有限公司 一种基于微服务系统的心跳检测方法、存储介质、电子设备及系统
CN114363221B (zh) * 2021-12-29 2024-05-03 武汉烽火信息集成技术有限公司 一种基于微服务系统的心跳检测方法、存储介质、电子设备及系统
CN115185736A (zh) * 2022-09-09 2022-10-14 南京航空航天大学 基于图卷积神经网络的微服务调用链异常检测方法及装置
CN115185736B (zh) * 2022-09-09 2023-01-31 南京航空航天大学 基于图卷积神经网络的微服务调用链异常检测方法及装置

Also Published As

Publication number Publication date
CN111341445B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
CN111341445A (zh) 微服务调用链的健康检测方法和健康检测系统
US9652316B2 (en) Preventing and servicing system errors with event pattern correlation
CN107294808B (zh) 接口测试的方法、装置和系统
CN105512015B (zh) 一种安卓目标应用崩溃统计方法和装置
US9037914B1 (en) Error handling for widgets
CN104065526B (zh) 一种服务器故障报警的方法和装置
CN108845912B (zh) 服务接口调用故障的报警方法及计算设备
GB2418755A (en) Error handling using a structured state tear down
US20200252317A1 (en) Mitigating failure in request handling
CN109783311A (zh) 断点行为的监控处理方法、装置、设备及可读存储介质
WO2023083079A1 (zh) 第三方系统监控系统、方法、装置、设备及存储介质
CN107995066A (zh) 一种自动化测试网卡的方法和装置
US11055416B2 (en) Detecting vulnerabilities in applications during execution
CN110618853B (zh) 一种僵尸容器的检测方法、装置及设备
US10474518B1 (en) Obtaining historical information in a device core dump
CN114328110A (zh) 物联网网关的监控方法、系统及存储介质
US8582444B2 (en) Method for detecting hardware faults by determining a ratio of released connections
CN110908910B (zh) 一种基于区块链的测试监控方法、装置及可读存储介质
US11716241B1 (en) Methods, systems, and computer readable media for actively diagnosing and remediating performance degradation in a production network
Alam et al. Assessing software reliability performance under highly critical but infrequent event occurrences
WO2014040470A1 (zh) 告警消息的处理方法及装置
CN112860509A (zh) 拨测告警方法及装置
CN114546817A (zh) 一种信息处理方法、装置、存储介质及计算机程序产品
CN112671822B (zh) 服务请求处理方法、装置、存储介质、服务器和系统
Gunasekaran et al. Correlating log messages for system diagnostics

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
GR01 Patent grant
GR01 Patent grant