基于MDC多线程链路追踪方法、装置及计算机可读存储介质与流程

文档序号:23392001发布日期:2020-12-22 13:58阅读:91来源:国知局
本发明涉及日志追踪系统
技术领域
:,具体来说,涉及基于mdc多线程链路追踪方法、装置及计算机可读存储介质。
背景技术
::springboot微服务在接收到http请求之后,会调用自定义的controller、service、dao、driver等模块完成基本业务流程,在该过程中,controller、service、dao、driver都会并发响应多个http请求,服务日志会由多个http请求并发写入,同比一个服务的日志会交替写入到日志文件中,如果服务发生异常时,交替打印日志的方式会导致无法准确快速通过日志定位到时异常是由哪次请求发生的,无法准确的排查问题,同时无法快速的定位每个http请求的响应时间,无法为优化系统提供依据。因此,需要一套针对多线程情况的链路追踪方案,通过唯一表示能够区分出每个http请求的执行时间、入参、响应时间。多线程链路追踪不仅能在单个http请求流程,还需要做到内嵌多线程的情况下的链路传递追踪。在controller、service、dao、driver等模块中形成一条全链路。同时对系统开发的侵入小、开发无感知等,从而提高线上问题处理的能力。技术实现要素:针对相关技术中的问题,本发明提出基于mdc多线程链路追踪方法、装置及计算机可读存储介质,以克服现有相关技术所存在的上述技术问题。为此,本发明采用的具体技术方案如下:根据本发明的一个方面,提供了一种基于mdc的多线程链路追踪方法,包括以下步骤:s1、标识创建,通过预设法则完成链路的标识创建;s2、参数继承,采用预设规则完成对多线程链路参数的继承;s3、时间记录,根据预设方法完成响应时间的记录;s4、结果输出,采用预设原则将所述响应时间的记录结果输出至日志文件;s5、标识记录,根据预设准则完成所述多线程链路唯一标识的记录。进一步的,所述s1中通过预设法则完成链路的标识创建具体包括以下步骤:通过预设拦截器拦截http请求,向映射调适上下文mdc框架中添加链路唯一表示全链路跟踪id,并添加所述http请求的起始时间,同时将所述链路唯一表示全链路跟踪id添加至本地可继承线程池中,完成链路标识创建。进一步的,所述s2中采用预设规则完成对多线程链路参数的继承具体包括以下步骤:在调用服务service方法时,所述映射调适上下文mdc框架会通过所述本地可继承线程池完成对所述链路唯一表示全链路跟踪id的传递,并将所述多线程链路的唯一标识继承到后续的线程中。进一步的,所述s3中根据预设方法完成响应时间的记录具体包括以下步骤:所述拦截器通过所述映射调适上下文mdc框架取到之间创建的所述http请求的开始时间,并与当前时间进行比较,完成响应时间的记录。进一步的,所述http请求的响应时间采用spring拦截器进行计算。进一步的,所述s4中采用预设原则将所述响应时间的记录结果输出至日志文件具体包括以下步骤:用户选择自定义的日志打印方式,并将所述响应时间的记录结果通过自定义的日志模板输出到日志文件。进一步的,所述s4中还可以实现日志打印方式的动态激活,通过修改配置文件,用户可以动态选择使用的日志框架,打印日志的格式。进一步的,所述s5中根据预设准则完成所述多线程链路唯一标识的记录具体包括以下步骤:如果所述http请求处理的链路中单独开启线程,同时使用的选择日志打印不支持上下文集成,则需要使用提供的工具里阶段执行接口来完成对所述多线程链路唯一标识的记录。根据本发明的另一个方面,还提供了一种电子装置,所述电子装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的基于mdc的多线程链路追踪程序,所述基于mdc的多线程链路追踪程序被所述处理器执行,以实现上述基于mdc的多线程链路追踪方法的步骤。根据本发明的又一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有基于mdc的多线程链路追踪程序,所述基于mdc的多线程链路追踪程序可被一个或者多个处理器执行,以实现上述基于mdc的多线程链路追踪方法的步骤。本发明的有益效果为:1)、通过提供一种基于mdc的多线程链路的追踪方法,针对每个http请求生成链路唯一标识,并可以在唯一标识的作用下快速查找每个http请求,区分出每个http请求的执行时间、入参及响应时间,同时能够实现对日志文件中所有日志的筛选,从而可以快速定位并排查线上问题,进而有效地提高了线上问题的处理能力。2)、本发明通过统计每个http请求的执行时间及入参等,可以帮助系统进行优化;此外,本发明的用户可以自定义日志打印格式及打印框架,并提供打印框架在多线程情境下的解决方案,供使用者灵活的使用。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本发明实施例的一种基于mdc的多线程链路追踪方法的流程示意图。具体实施方式为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。根据本发明的实施例,提供了基于mdc多线程链路追踪方法、装置及计算机可读存储介质。现结合附图和具体实施方式对本发明进一步说明,如图1所示,根据本发明的一个实施例,提供了一种基于mdc的多线程链路追踪方法,包括以下步骤:s1、标识创建,通过预设法则完成链路的标识创建;其中,所述s1具体包括以下步骤:通过预设拦截器拦截http请求,向映射调适上下文mdc框架中添加链路唯一表示全链路跟踪id(trace-id),并添加所述http请求的起始时间,同时将所述链路唯一表示全链路跟踪id添加至本地可继承线程池(inheritablethreadlocal)中,完成链路标识创建。s2、参数继承,采用预设规则完成对多线程链路参数的继承;其中,所述s2具体包括以下步骤:在调用服务service方法时,所述映射调适上下文mdc框架会通过所述本地可继承线程池完成对所述链路唯一表示全链路跟踪id的传递,并将所述多线程链路的唯一标识继承到后续的线程中。s3、时间记录,根据预设方法完成响应时间的记录;其中,所述s3具体包括以下步骤:所述拦截器通过所述映射调适上下文mdc框架取到之间创建的所述http请求的开始时间,并与当前时间进行比较,完成响应时间的记录。具体的,所述http请求的响应时间采用spring拦截器进行计算。s4、结果输出,采用预设原则将所述响应时间的记录结果输出至日志文件;其中,所述s4具体包括以下步骤:用户选择自定义的日志打印方式,并将所述响应时间的记录结果通过自定义的日志模板输出到日志文件。具体的,所述s4中还可以实现日志打印方式的动态激活,通过修改配置文件,用户可以动态选择使用的日志框架,打印日志的格式。s5、标识记录,根据预设准则完成所述多线程链路唯一标识的记录。其中,所述s5具体包括以下步骤:如果所述http请求处理的链路中单独开启线程,同时使用的选择日志打印不支持上下文集成,则需要使用提供的工具里阶段执行接口(completionstageexecutor)来完成对所述多线程链路唯一标识的记录。相比于现有技术,本发明的上述技术方案具备以下优点:1)、减少对现有系统的侵入利用spring拦截器、mdc(mappeddiagnosticcontext,映射调试上下文)实现链路追踪,多线程上下文继承,完成服务内部多线程的链路追踪;2)、针对每个http请求提供唯一的表示利用mdc框架自定义生成请求的唯一表示trace-id,通过inheritablethreadlocal完成http处理流程中多线程唯一表示的集成,并能传递到子线程或者子链路中;3)、http请求的时间计算在链路执行完毕后,通过spring拦截器计算请求的响应时间;4)、提供多线程链路标识继承方案在处理http请求时,如果处理流程需要单独开启线程处理剩下业务,为此场景提供链路唯一表示集成方案;5)、日志打印实现方式可以动态激活基于mdc的方案可以实现日志打印方式的动态激活,通过修改配置文件,用户可以动态选择使用的日志框架,打印日志的格式。根据本发明的另一个实施例,还提供了一种电子装置。在本实施例中,所述电子装置可以是电脑或服务器。所述电子装置至少包括存储器、处理器、通信总线以及网络接口。其中,存储器至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器在一些实施例中可以是电子装置的内部存储单元,例如所述电子装置的硬盘。存储器在另一些实施例中也可以是电子装置的外部存储设备,例如电子装置上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器还可以既包括电子装置的内部存储单元也包括外部存储设备。存储器不仅可以用于存储安装于电子装置的应用软件及各类数据,例如基于mdc的多线程链路追踪程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。处理器在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器中存储的程序代码或处理数据。通信总线用于实现这些组件之间的连接通信。网络接口可选的可以包括标准的有线接口、无线接口(如wi-fi接口),通常用于在电子装置与其他电子设备之间建立通信连接。可选地,电子装置还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子装置中处理的信息以及用于显示可视化的用户界面。所述电子装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的基于mdc的多线程链路追踪程序,所述处理器执行所述存储器中存储的基于mdc的多线程链路追踪程序时实现如下步骤:标识创建,通过预设法则完成链路的标识创建;具体包括以下步骤:通过预设拦截器拦截http请求,向映射调适上下文mdc框架中添加链路唯一表示全链路跟踪id,并添加所述http请求的起始时间,同时将所述链路唯一表示全链路跟踪id添加至本地可继承线程池中,完成链路标识创建。参数继承,采用预设规则完成对多线程链路参数的继承;具体包括以下步骤:在调用service方法时,所述映射调适上下文mdc框架会通过所述本地可继承线程池完成对所述链路唯一表示全链路跟踪id的传递,并将所述多线程链路的唯一标识继承到后续的线程中。时间记录,根据预设方法完成响应时间的记录;具体包括以下步骤:所述拦截器通过所述映射调适上下文mdc框架取到之间创建的所述http请求的开始时间,并与当前时间进行比较,完成响应时间的记录。具体的,所述http请求的响应时间采用spring拦截器进行计算。结果输出,采用预设原则将所述响应时间的记录结果输出至日志文件;具体包括以下步骤:用户选择自定义的日志打印方式,并将所述响应时间的记录结果通过自定义的日志模板输出到日志文件。还可以实现日志打印方式的动态激活,通过修改配置文件,用户可以动态选择使用的日志框架,打印日志的格式。标识记录,根据预设准则完成所述多线程链路唯一标识的记录。具体包括以下步骤:如果所述http请求处理的链路中单独开启线程,同时使用的选择日志打印不支持上下文集成,则需要使用提供的工具里阶段执行接口来完成对所述多线程链路唯一标识的记录。根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有基于mdc的多线程链路追踪程序,所述基于mdc的多线程链路追踪程序可被一个或者多个处理器执行,以实现如下操作:标识创建,通过预设法则完成链路的标识创建;参数继承,采用预设规则完成对多线程链路参数的继承;时间记录,根据预设方法完成响应时间的记录;结果输出,采用预设原则将所述响应时间的记录结果输出至日志文件;标识记录,根据预设准则完成所述多线程链路唯一标识的记录。本发明计算机可读存储介质具体实施方式与上述电子装置和方法各实施例基本相同,在此不作累述。综上所述,借助于本发明的上述技术方案,通过提供一种基于mdc的多线程链路的追踪方法,针对每个http请求生成链路唯一标识,并可以在唯一标识的作用下快速查找每个http请求,区分出每个http请求的执行时间、入参及响应时间,同时能够实现对日志文件中所有日志的筛选,从而可以快速定位并排查线上问题,进而有效地提高了线上问题的处理能力;此外,本发明通过统计每个http请求的执行时间及入参等,可以帮助系统进行优化;此外,本发明的用户可以自定义日志打印格式及打印框架,并提供打印框架在多线程情境下的解决方案,供使用者灵活的使用。需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1