CN116170437A - 一种链路跟踪方法及系统 - Google Patents
一种链路跟踪方法及系统 Download PDFInfo
- Publication number
- CN116170437A CN116170437A CN202310143900.0A CN202310143900A CN116170437A CN 116170437 A CN116170437 A CN 116170437A CN 202310143900 A CN202310143900 A CN 202310143900A CN 116170437 A CN116170437 A CN 116170437A
- Authority
- CN
- China
- Prior art keywords
- link
- service
- context information
- identifier
- log
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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/06—Management of faults, events, alarms or notifications
- H04L41/069—Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种链路跟踪方法及系统,其中,该方法包括:获取链路上下文信息,链路上下文信息至少包括链路标识与第一跨度标识;至少将链路标识与第一跨度标识确定为链路信息,并将链路信息添加到调用参数中;向服务端发送业务调用请求,以使服务端根据链路信息对业务调用请求进行链路跟踪,业务调用请求携带有调用参数,可以解决相关技术中分布式系统中服务节点众多,交易请求会在多个系统和服务节点之间跳转,无法确定交易请求的服务调用关系,也无法定位服务节点的问题,通过调用参数中携带的链路标识与第一跨度标识对业务调用进行跟踪,可以完整还原出金融分布式系统中请求的调用链路,便于定位服务节点。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种链路跟踪方法及系统。
背景技术
随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络,那现在的问题是一个请求经过了这些服务后其中出现了一个调用失败的问题,只知道有异常,但具体的异常在哪个服务引起的就需要进入每一个服务里面看日志,这样的处理效率是非常低的。
金融分布式系统中同样服务节点众多,交易请求会在多个系统和服务节点之间跳转,开发人员无法确定交易请求的服务调用关系,也无法定位服务节点。
针对相关技术中分布式系统中服务节点众多,交易请求会在多个系统和服务节点之间跳转,无法确定交易请求的服务调用关系,也无法定位服务节点的问题,尚未提出解决方案。
发明内容
本发明实施例提供了一种链路跟踪方法及系统,以至少解决相关技术中分布式系统中服务节点众多,交易请求会在多个系统和服务节点之间跳转,无法确定交易请求的服务调用关系,也无法定位服务节点的问题。
根据本发明的一个实施例,提供了一种链路跟踪方法,应用于客户端,包括:
获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中;
向服务端发送业务调用请求,以使所述服务端根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数。
可选地,在向所述服务端发送所述业务调用请求之后,所述方法还包括:
接收到所述服务端在执行所述业务调用请求对应的业务之后返回的业务调用结果;
读取所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;
将所述链路日志异步写入本地预设的日志文件目录中。
可选地,在读取所述链路上下文信息之前,所述方法还包括:
触发接收响应事件;
通过客户端事件监听器订阅到所述接收响应事件。
可选地,在根据所述链路上下文信息构造并生成所述链路日志之前,所述方法还包括:
根据当前时间和所述链路上下文信息中的调用起始时间确定第一响应时间,根据所述第一响应时间更新所述链路上下文信息中的响应时间;
从所述业务调用结果中获取响应状态码,根据所述响应状态码更新所述链路上下文信息中的调用状态为成功或失败;若所述业务调用请求的调用过程中出现异常,则将异常信息写入所述链路上下文信息中。
可选地,获取所述链路上下文信息包括:
判断本地是否存在所述链路上下文信息;
若不存在链路上下文信息,创建所述链路标识与所述第一跨度标识,并根据所述链路标识与所述第一跨度标识在本地新建所述链路上下文信息;
若存在所述链路上下文信息,读取所述链路上下文信息。
可选地,所述方法还包括:
在向所述服务端发送所述业务调用请求之后,在所述链路上下文信息中标记调用所述业务调用请求的调用起始时间;和/或
在获取所述链路上下文信息之前,当客户端准备发起所述业务调用请求时,触发客户端发送事件,并通过事件监听器订阅到所述客户端发送事件。
根据本发明的又一个实施例,还提供了一种链路跟踪方法,应用于服务端,包括:
接收业务调用请求;
根据所述业务调用请求获取链路信息,其中,所述链路信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
根据所述链路信息对所述业务调用请求进行链路跟踪。
可选地,在根据所述链路信息对所述业务调用请求进行链路跟踪之后,所述方法还包括:
执行所述业务调用请求对应的业务,向所述客户端返回业务调用结果;
读取本地的所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;
将所述链路日志异步写入本地预设的日志文件目录中。
可选地,在读取本地的所述链路上下文信息之前,所述方法还包括:
触发服务响应事件;
通过事件监听器订阅到所述服务响应事件。
可选地,根据所述链路上下文信息构造并生成所述链路日志包括:
根据当前时间和所述链路上下文信息中的接收调用时间确定第二响应时间,根据所述第二响应时间更新所述链路上下文信息中的响应时间,其中,所述接收调用时间为接收到所述业务调用请求的时间;
从所述业务调用结果中获取响应状态码,根据所述响应状态码更新所述链路上下文信息中的调用状态为成功或失败;若所述业务调用请求的调用过程中出现异常,则将异常信息写入所述链路上下文信息中。
可选地,根据所述业务调用请求获取所述链路信息包括:
判断所述业务调用请求携带的调用参数中是否存在所述链路信息;
在判断结果为否的情况下,创建所述链路标识与所述第一跨度标识;
在判断结果为是的情况下,获取所述链路信息。
可选地,所述方法还包括:
在创建所述链路标识与所述跨度标识之后,根据所述链路标识与所述第一跨度标识在本地新建链路上下文信息;
在获取所述链路信息之后,根据所述链路标识与所述第一跨度标识构建对应的第二跨度标识,并根据所述链路标识与所述第二跨度标识在本地构造链路上下文信息。
根据本发明的另一个实施例,还提供了一种链路跟踪系统,包括:多个服务节点,其中,所述多个服务节点中的每个服务节点为客户端和/或服务端,其中,
所述客户端,用于获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中,并向服务端发送业务调用请求;
所述服务端,用于根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数。
可选地,所述系统还包括:日志收集模块,其中,
所述服务端,还用于执行所述业务调用请求对应的业务,向所述客户端返回业务调用结果;读取本地的所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;将所述链路日志异步写入本地预设的日志文件目录中;
所述客户端,还用于接收到所述服务端在执行所述业务调用请求对应的业务之后返回的业务调用结果;读取所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;将所述链路日志异步写入本地预设的日志文件目录中;
所述日志收集模块,还用于以预设时间周期扫描所述多个服务节点本地预设的日志文件目录,判断是否存在新的链路日志,若存在新的链路日志,将所述链路日志写入到数据库中。
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中;向服务端发送业务调用请求,以使所述服务端根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数,可以解决相关技术中分布式系统中服务节点众多,交易请求会在多个系统和服务节点之间跳转,无法确定交易请求的服务调用关系,也无法定位服务节点的问题,通过调用参数中携带的链路标识与第一跨度标识对业务调用进行跟踪,可以完整还原出金融分布式系统中请求的调用链路,便于定位服务节点。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的链路跟踪方法的移动终端的硬件结构框图;
图2是根据本发明实施例的链路跟踪方法的流程图一;
图3是根据本发明实施例的链路跟踪方法的流程图二;
图4是根据本发明实施例的面向金融分布式系统的链路跟踪方法的流程图;
图5是根据本发明实施例的链路跟踪的示意图;
图6是根据本发明实施例的链路跟踪系统的框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的链路跟踪方法的移动终端的硬件结构框图,如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的链路跟踪方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及链路跟踪处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端或网络架构的链路跟踪方法,图2是根据本发明实施例的链路跟踪方法的流程图一,如图2所示,应用于客户端,该流程包括如下步骤:
步骤S202,获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
步骤S204,至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中;
步骤S206,向服务端发送业务调用请求,以使所述服务端根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数。
可选地,在向所述服务端发送所述业务调用请求之后,所述方法还包括:接收到所述服务端在执行所述业务调用请求对应的业务之后返回的业务调用结果;读取所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;将所述链路日志异步写入本地预设的日志文件目录中。
可选地,在读取所述链路上下文信息之前,所述方法还包括:触发接收响应事件;通过客户端事件监听器订阅到所述接收响应事件。
客户端接收到服务端的业务调用结果,触发接收响应事件,客户端事件监听器订阅到所述接收响应事件,读取本地缓存的链路上下文信息,根据所述链路上下文信息构造并生成链路日志,将所述链路日志异步写入本地预设的日志文件目录中。
可选地,在根据所述链路上下文信息构造并生成所述链路日志之前,所述方法还包括:根据当前时间和所述链路上下文信息中的调用起始时间确定第一响应时间,根据所述第一响应时间更新所述链路上下文信息中的响应时间;从所述业务调用结果中获取响应状态码,根据所述响应状态码更新所述链路上下文信息中的调用状态为成功或失败;若所述业务调用请求的调用过程中出现异常,则将异常信息写入所述链路上下文信息中。
可选地,获取所述链路上下文信息包括:判断本地是否存在所述链路上下文信息;若不存在链路上下文信息,创建所述链路标识与所述第一跨度标识,并根据所述链路标识与所述第一跨度标识在本地新建所述链路上下文信息;若存在所述链路上下文信息,读取所述链路上下文信息。
可选地,所述方法还包括:在向所述服务端发送所述业务调用请求之后,在所述链路上下文信息中标记调用所述业务调用请求的调用起始时间;和/或在获取所述链路上下文信息之前,当客户端准备发起所述业务调用请求时,触发客户端发送事件,并通过事件监听器订阅到所述客户端发送事件。
当客户端准备发起业务调用请求时,触发客户端发送事件,通过事件监听器订阅到所述客户端发送事件,判断本地是否存在链路上下文信息,若不存在链路上下文信息,确定所述业务调用请求为第一次调用,创建链路标识与跨度标识,并根据所述链路标识与所述跨度标识在本地新建所述链路上下文信息;若存在所述链路上下文信息,读取所述链路上下文信息;将所述链路上下文信息中的链路标识与扩展参数作为链路信息添加到调用参数中,向服务端发送所述业务调用请求,并在所述链路上下文信息中标记调用起始时间。
根据本发明的又一个实施例,还提供了一种链路跟踪方法,图3是根据本发明实施例的链路跟踪方法的流程图二,如图3所示,应用于服务端,该流程包括如下步骤:
步骤S302,接收业务调用请求;
步骤S304,根据所述业务调用请求获取链路信息,其中,所述链路信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
步骤S306,根据所述链路信息对所述业务调用请求进行链路跟踪。
可选地,在根据所述链路信息对所述业务调用请求进行链路跟踪之后,所述方法还包括:执行所述业务调用请求对应的业务,向所述客户端返回业务调用结果;读取本地的所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;将所述链路日志异步写入本地预设的日志文件目录中。
可选地,在读取本地的所述链路上下文信息之前,所述方法还包括:触发服务响应事件;通过事件监听器订阅到所述服务响应事件。
可选地,根据所述链路上下文信息构造并生成所述链路日志包括:根据当前时间和所述链路上下文信息中的接收调用时间确定第二响应时间,根据所述第二响应时间更新所述链路上下文信息中的响应时间,其中,所述接收调用时间为接收到所述业务调用请求的时间;从所述业务调用结果中获取响应状态码,根据所述响应状态码更新所述链路上下文信息中的调用状态为成功或失败;若所述业务调用请求的调用过程中出现异常,则将异常信息写入所述链路上下文信息中。
可选地,根据所述业务调用请求获取所述链路信息包括:判断所述业务调用请求携带的调用参数中是否存在所述链路信息;在判断结果为否的情况下,创建所述链路标识与所述第一跨度标识;在判断结果为是的情况下,获取所述链路信息。
可选地,所述方法还包括:在创建所述链路标识与所述跨度标识之后,根据所述链路标识与所述第一跨度标识在本地新建链路上下文信息;在获取所述链路信息之后,根据所述链路标识与所述第一跨度标识构建对应的第二跨度标识,并根据所述链路标识与所述第二跨度标识在本地构造链路上下文信息。
当服务端接收到所述业务调用请求,触发服务端接收事件,通过事件监听器识别到所述服务端接收事件,判断是否从所述调用参数中获取到链路信息,若未获取到所述链路信息,确定所述业务调用请求为第一次调用,创建链路标识与跨度标识,根据所述链路标识与所述跨度标识在本地新建链路上下文信息;若获取到所述链路信息,根据所述链路信息在本地构造链路上下文信息。服务端执行所述业务调用请求对应的业务,向所述客户端返回业务调用结果;触发服务响应事件,通过事件监听器订阅到所述服务响应事件,读取本地缓存的所述链路上下文信息,根据所述链路上下文信息构造并生成链路日志,将所述链路日志异步写入本地预设的日志文件目录中。
本发明实施例中定义了金融分布式系统中服务调用周期内的客户端发送、客户端接收响应、服务端接收、服务端响应四类事件,并创建事件监听器订阅这四类事件。当事件发生时,会触发事件监听器处理事件实现链路跟踪。图4是根据本发明实施例的面向金融分布式系统的链路跟踪方法的流程图,如图4所示,包括:
步骤S401-S402,服务节点客户端发起请求,触发客户端发送事件,客户端事件监听器订阅客户端发送事件;
步骤S403,判断是否存在链路上下文信息;
步骤S404,若不存在链路上下文信息,则当前请求为第一次调用,创建链路唯一标识TracerId,新建本地链路上下文信息;
步骤S405-S406,若存在链路缓存上下文信息,则将读取链路上下文信息,将链路唯一标识TracerId及扩展参数作为链路信息添加到调用参数中,发起调用请求并在本地链路上下文信息中标记调用起始时间。
步骤S407-S409,当服务端接收到请求,触发服务端接收事件,服务端事件监听器订阅服务端接收事件,从调用参数中获取链路信息,若获取不到链路信息(外来服务调用),则当前请求为第一次调用,创建链路唯一标识TracerId,新建本地链路上下文信息;若获取到链路信息,则取出链路信息,根据链路信息构造本地链路上下文信息。
步骤S410-S414,服务端执行调用请求对应的业务方法,向客户端返回调用结果。触发服务响应事件,服务端事件监听器订阅到服务响应事件,取出本地链路上下文信息,构造链路日志,服务端生成链路日志,服务端响应请求,并将链路日志异步写入到服务端指定日志文件中。
步骤S415-S417,客户端接收到服务端的调用结果,触发接收响应事件,客户端事件监听器订阅到客户端接收响应事件,取出本地链路上下文信息,构造链路日志,在本地链路上下文信息标记响应时间,客户端生成链路日志并将日志异步写入到客户端指定日志文件中。
步骤S418-S420,日志收集模块定时扫描各个服务节点的日志文件目录,判断是否有新链路日志生成,若存在新链路日志,将链路日志写入到Elastic Search数据库。
通过本发明实施例,能够在不影响原有分布式系统架构及代码逻辑的基础上输出链路日志,只需要在应用项目中引入链路跟踪依赖,不需要对源代码进行改动。本发明实施例定义了金融分布式系统中服务调用周期内的客户端发送、客户端接收响应、服务端接收、服务端响应四类事件,通过监听事件触发链路日志生成。当链路日志生成时出现异常,由于事件监听器和调用请求在不同的线程中执行,并不会影响到调用请求的正常响应,不会对原有系统造成影响。
本发明实施例定义了链路唯一标识TracerId,TracerId将一个请求在各个服务节点上的链路日志串联起来,由接受请求经过的第一个服务产生,生成规则是:
服务器IP+服务节点ID+时间戳+自增序号+进程号。
前八位为当前服务器的IP,是十六进制数字,每两位代表IP中的一段。后面两位为服务节点ID,十六进制数字,最大可标识256个服务节点。后面13位为产生TracerId的时间戳。后面四位为自增序列,自增序列通过乐观锁实现。最后五位为当前进程ID。链路标识的生成规则保证了每次请求链路日志的全局唯一性。
本发明实施例定义了跨度标识spanId,spanId用于定位本次调用在整个链路中的位置,还原调用链路调用拓扑结构,每生成一次链路日志,都会对应产生一个spanId。spanId初始值为0,产生服务调用时,客户端调用请求生成的链路日志的spanId为0.1,服务端接收请求生成的链路日志的spanId为0.1.1。
图5是根据本发明实施例的链路跟踪的示意图,如图5所示,服务A接收到请求,生成链路唯一标识TracerId,本次调用的其他服务也使用此TracerId,spanId初始值0,生成链路日志。服务A调用服务B和服务C,服务A作为客户端生成链路日志spanId为0.1和0.2,服务B作为服务端,生成链路日志spanId为0.1.1,服务C生成链路日志spanId为0.2.1。服务B调用服务D,服务b作为客户端生成链路日志spanId为0.1.1.1,服务D作为服务端,生成链路日志spanId为0.1.1.1.1。
金融分布式系统中,各组件开始走向分布式化,包括微服务、消息收发、分布式数据库、分布式缓存,各组件将服务节点部署在容器化的环境中,由全栈云平台统一管理。交易请求会在组件内的多个服务节点间互相调用,也会跨系统访问其他组件。想要获取交易请求在金融各系统的调用情况,就需要依赖链路唯一标识TracerId和跨度标识spanId。每次的交易请求,初始服务节点会生成链路唯一标识TracerId,TracerId会在调用请求中流转,各服务节点生成的链路日志使用相同的TracerId。服务节点的每次调用也会生成各自的跨度标识spanId,spanId初始值0。当有调用产生时,会从本地链路上下文信息获取当前spanId,客户端调用请求生成的链路日志的spanId为0.1。服务端接收到调用请求后,会从调用参数中获取到调用方spanId,并构造自己的spanId为0.1.1。通过TracerId可以定位服务器IP及服务节点ID,通过spanId能够定位各服务节点的调用关系,最终能够完整还原出金融分布式系统中请求的调用链路及拓扑结构。
本发明实施例的链路上下文信息包括TracerId、spanId、服务名称、服务类型、服务节点、调用地址、请求大小、当前线程、调用起始时间、响应时间、调用状态、异常信息以及自定义参数。
新建本地链路上下文信息时,会初始化TracerId,spanId、服务名称、服务类型、服务节点、调用地址、请求大小、当前线程、调用起始时间以及自定义参数。
构造链路日志发生在服务端触发响应事件和客户端接收响应事件时,会更新本地链路上下文信息中的响应时间和调用状态,接收调用时间,响应调用时间,根据当前时间和调用起始时间计算响应时间,根据响应状态码更新调用状态为成功或失败,若调用过程中出现异常,则将异常信息写入链路上下文信息,方便从链路跟踪日志中排查异常问题。
金融分布式系统中服务调用时,本发明要将链路唯一标识TracerId及扩展参数作为链路信息添加到调用参数中。包括:TracerId、spanId和自定义参数。服务端接收到请求后会从调用参数中获取链路信息,构造本地链路上下文信息。
本发明实施例能够服务节点生成完善的链路日志信息。链路日志中有调用请求大小与响应时间信息,用户可根据链路日志分析各服务节点平均时延、单位时间请求量等信息,找到系统的薄弱环节,分析系统的性能瓶颈,对系统做出优化调整。也可根据服务节点、调用地址等信息找到金融分布式系统中的热门节点和热门接口,提前对服务节点进行扩容,防止分布式系统部分服务节点或接口负载压力过大。链路日志信息中包括调用状态及异常信息,可在请求异常时快速定位异常信息,协助开发人员分析问题,也可根据分析调用状态找到异常节点,提前进行熔断限流等措施。
金融分布式系统各个服务节点生成的日志分布在不同的服务器或容器化环境上,也会部署在多个AZ(可用区,AvailabilityZone)环境中,来实现高可用性。由于各AZ环境电力与网络互相隔离,通常的链路跟踪系统无法实现跨AZ的链路日志收集工作。本发明中各服务节点的链路跟踪日志目录使用同一共享持久卷,日志收集模块定时监听这一持久卷的各个服务节点的日志目录,当识别到日志更新,读取日志文件新生成的链路日志数据,将链路日志写入到ElasticSearch数据库中,进行汇总管理。
根据本发明的另一个实施例,还提供了一种链路跟踪系统,图6是根据本发明实施例的链路跟踪系统的框图,如图6所示,包括:多个服务节点,其中,所述多个服务节点中的每个服务节点为客户端和/或服务端,其中,
所述客户端,用于获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中,并向服务端发送业务调用请求;
所述服务端,用于根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数。
可选地,所述系统还包括:日志收集模块,其中,
所述服务端,还用于执行所述业务调用请求对应的业务,向所述客户端返回业务调用结果;读取本地的所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;将所述链路日志异步写入本地预设的日志文件目录中;
所述客户端,还用于接收到所述服务端在执行所述业务调用请求对应的业务之后返回的业务调用结果;读取所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;将所述链路日志异步写入本地预设的日志文件目录中;
所述日志收集模块,还用于以预设时间周期扫描所述多个服务节点本地预设的日志文件目录,判断是否存在新的链路日志,若存在新的链路日志,将所述链路日志写入到数据库(具体可以是Elastic Search数据库)中。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S11,获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
S12,至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中;
S13,向服务端发送业务调用请求,以使所述服务端根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数。
可选地,在本实施例中,上述存储介质还可以被设置为存储用于执行以下步骤的计算机程序:
S21,接收业务调用请求;
S22,根据所述业务调用请求获取链路信息,其中,所述链路信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
S23,根据所述链路信息对所述业务调用请求进行链路跟踪。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S11,获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
S12,至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中;
S13,向服务端发送业务调用请求,以使所述服务端根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数。
可选地,在本实施例中,上述处理器还可以被设置为通过计算机程序执行以下步骤:
S21,接收业务调用请求;
S22,根据所述业务调用请求获取链路信息,其中,所述链路信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
S23,根据所述链路信息对所述业务调用请求进行链路跟踪。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种链路跟踪方法,应用于客户端,其特征在于,包括:
获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中;
向服务端发送业务调用请求,以使所述服务端根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数。
2.根据权利要求1所述的方法,其特征在于,在向所述服务端发送所述业务调用请求之后,所述方法还包括:
接收到所述服务端在执行所述业务调用请求对应的业务之后返回的业务调用结果;
读取所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;
将所述链路日志异步写入本地预设的日志文件目录中。
3.根据权利要求2所述的方法,其特征在于,在读取所述链路上下文信息之前,所述方法还包括:
触发接收响应事件;
通过客户端事件监听器订阅到所述接收响应事件。
4.根据权利要求2所述的方法,其特征在于,在根据所述链路上下文信息构造并生成所述链路日志之前,所述方法还包括:
根据当前时间和所述链路上下文信息中的调用起始时间确定第一响应时间,根据所述第一响应时间更新所述链路上下文信息中的响应时间;
从所述业务调用结果中获取响应状态码,根据所述响应状态码更新所述链路上下文信息中的调用状态为成功或失败;若所述业务调用请求的调用过程中出现异常,则将异常信息写入所述链路上下文信息中。
5.根据权利要求1所述的方法,其特征在于,获取所述链路上下文信息包括:
判断本地是否存在所述链路上下文信息;
若不存在链路上下文信息,创建所述链路标识与所述第一跨度标识,并根据所述链路标识与所述第一跨度标识在本地新建所述链路上下文信息;
若存在所述链路上下文信息,读取所述链路上下文信息。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
在向所述服务端发送所述业务调用请求之后,在所述链路上下文信息中标记调用所述业务调用请求的调用起始时间;和/或
在获取所述链路上下文信息之前,当客户端准备发起所述业务调用请求时,触发客户端发送事件,并通过事件监听器订阅到所述客户端发送事件。
7.一种链路跟踪方法,应用于服务端,其特征在于,包括:
接收业务调用请求;
根据所述业务调用请求获取链路信息,其中,所述链路信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;
根据所述链路信息对所述业务调用请求进行链路跟踪。
8.根据权利要求7所述的方法,其特征在于,在根据所述链路信息对所述业务调用请求进行链路跟踪之后,所述方法还包括:
执行所述业务调用请求对应的业务,向所述客户端返回业务调用结果;
读取本地的所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;
将所述链路日志异步写入本地预设的日志文件目录中。
9.根据权利要求8所述的方法,其特征在于,在读取本地的所述链路上下文信息之前,所述方法还包括:
触发服务响应事件;
通过事件监听器订阅到所述服务响应事件。
10.根据权利要求8所述的方法,其特征在于,根据所述链路上下文信息构造并生成所述链路日志包括:
根据当前时间和所述链路上下文信息中的接收调用时间确定第二响应时间,根据所述第二响应时间更新所述链路上下文信息中的响应时间,其中,所述接收调用时间为接收到所述业务调用请求的时间;
从所述业务调用结果中获取响应状态码,根据所述响应状态码更新所述链路上下文信息中的调用状态为成功或失败;若所述业务调用请求的调用过程中出现异常,则将异常信息写入所述链路上下文信息中。
11.根据权利要求8所述的方法,其特征在于,根据所述业务调用请求获取所述链路信息包括:
判断所述业务调用请求携带的调用参数中是否存在所述链路信息;
在判断结果为否的情况下,创建所述链路标识与所述第一跨度标识;
在判断结果为是的情况下,获取所述链路信息。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在创建所述链路标识与所述跨度标识之后,根据所述链路标识与所述第一跨度标识在本地新建链路上下文信息;
在获取所述链路信息之后,根据所述链路标识与所述第一跨度标识构建对应的第二跨度标识,并根据所述链路标识与所述第二跨度标识在本地构造链路上下文信息。
13.一种链路跟踪系统,其特征在于,包括:多个服务节点,其中,所述多个服务节点中的每个服务节点为客户端和/或服务端,其中,
所述客户端,用于获取链路上下文信息,其中,所述链路上下文信息至少包括链路标识与第一跨度标识,所述第一跨度标识用于定位客户端与服务端的调用关系;至少将所述链路标识与所述第一跨度标识确定为链路信息,并将所述链路信息添加到调用参数中,并向服务端发送业务调用请求;
所述服务端,用于根据所述链路信息对所述业务调用请求进行链路跟踪,其中,所述业务调用请求携带有所述调用参数。
14.根据权利要求13所述的系统,其特征在于,所述系统还包括:日志收集模块,其中,
所述服务端,还用于执行所述业务调用请求对应的业务,向所述客户端返回业务调用结果;读取本地的所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;将所述链路日志异步写入本地预设的日志文件目录中;
所述客户端,还用于接收到所述服务端在执行所述业务调用请求对应的业务之后返回的业务调用结果;读取所述链路上下文信息,并根据所述链路上下文信息构造并生成链路日志,其中,所述链路日志用于记录链路调用情况;将所述链路日志异步写入本地预设的日志文件目录中;
所述日志收集模块,还用于以预设时间周期扫描所述多个服务节点本地预设的日志文件目录,判断是否存在新的链路日志,若存在新的链路日志,将所述链路日志写入到数据库中。
15.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至6、7至12任一项中所述的方法。
16.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至6、7至12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310143900.0A CN116170437A (zh) | 2023-02-09 | 2023-02-09 | 一种链路跟踪方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310143900.0A CN116170437A (zh) | 2023-02-09 | 2023-02-09 | 一种链路跟踪方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116170437A true CN116170437A (zh) | 2023-05-26 |
Family
ID=86417942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310143900.0A Pending CN116170437A (zh) | 2023-02-09 | 2023-02-09 | 一种链路跟踪方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116170437A (zh) |
-
2023
- 2023-02-09 CN CN202310143900.0A patent/CN116170437A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112910945B (zh) | 请求链路跟踪方法和业务请求处理方法 | |
CN109064345B (zh) | 消息处理方法、系统以及计算机可读存储介质 | |
CN108804618B (zh) | 数据库配置方法、装置、计算机设备和存储介质 | |
CN109981349B (zh) | 调用链信息查询方法以及设备 | |
CN111475376B (zh) | 处理测试数据的方法、装置、计算机设备和存储介质 | |
CN111046057B (zh) | 服务器集群的数据处理方法、装置、计算机设备和介质 | |
CN111262726B (zh) | 一种配置信息更新方法、装置及计算机可读存储介质 | |
CN112506659A (zh) | 一种边缘设备的管理方法以及相关装置 | |
CN111176941B (zh) | 一种数据处理的方法、装置和存储介质 | |
CN111400112A (zh) | 分布式集群的存储系统的写入方法、装置及可读存储介质 | |
CN109923847A (zh) | 调用链路的发现方法、装置、设备及存储介质 | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN108881066A (zh) | 一种路由请求的方法、接入服务器以及存储设备 | |
CN111258851A (zh) | 一种集群的告警方法、装置、设置及存储介质 | |
CN114745295A (zh) | 数据采集方法、装置、设备和可读存储介质 | |
CN113127732A (zh) | 业务数据的获取方法、装置、计算机设备和存储介质 | |
CN110880147A (zh) | 一种交易处理方法、相关设备及计算机存储介质 | |
CN108228432A (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
US9544214B2 (en) | System and method for optimized event monitoring in a management environment | |
CN113422739A (zh) | 数据传输方法、发送端及数据传输系统 | |
CN112363838A (zh) | 数据处理方法及装置、存储介质、电子装置 | |
CN111124542A (zh) | 一种配置信息管理系统 | |
CN116170437A (zh) | 一种链路跟踪方法及系统 | |
JP6233846B2 (ja) | 可変長ノンスの生成 | |
CN112817980B (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 |