CN107592230B - 一种跟踪信息获取方法及装置 - Google Patents
一种跟踪信息获取方法及装置 Download PDFInfo
- Publication number
- CN107592230B CN107592230B CN201710866265.3A CN201710866265A CN107592230B CN 107592230 B CN107592230 B CN 107592230B CN 201710866265 A CN201710866265 A CN 201710866265A CN 107592230 B CN107592230 B CN 107592230B
- Authority
- CN
- China
- Prior art keywords
- information
- tracking
- computing node
- node
- structure body
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种跟踪信息获取方法及装置,包括:构造信息跟踪结构体,信息跟踪结构体中保存有计算节点路径信息;调用多线程获取计算节点路径信息;获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;从计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点。本发明调用多线程获取信息跟踪结构体中保存的计算节点路径信息,当某一服务需要采用多个线程处理时,各线程可获取信息跟踪结构体中的计算节点路径信息,获悉处理该服务的计算节点以及各计算节点的处理顺序,保证跟踪信息获取成功。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种跟踪信息获取方法及装置。
背景技术
网络信息系统通常是由许多各式各样的模块组成的复杂分布式系统,服务调用过程中,会在分布式系统中的各个模块上产生响应日志,为了发现服务调用过程中出现的问题,现有技术提出了多种方法来跟踪获取一次完整的服务调用过程中在分布式系统各个模块上产生的响应日志,通过跟踪获取的响应日志称为跟踪信息。
现有技术主要是利用Thread Local Storage来存储和传递跟踪信息,但是,不同Thread Local Storage是与不同的处理线程绑定的,每个处理线程只能从与之对应的Thread Local Storage中获取计算节点路径信息,而无法从其他处理线程对应的ThreadLocal Storage中获取计算节点路径信息。当某一服务需要采用多个线程进行处理时,由于计算节点路径信息仅保存在其中一个线程对应的Thread Local Storage中,而其他线程无法从该线程对应的Thread Local Storage中获取计算节点路径信息,也就无法获悉处理该服务的计算节点是哪些以及各个计算节点的处理顺序,从而无法获悉从哪些计算节点上获取跟踪信息,导致跟踪信息获取失败。
因此,如何提供一种适应于多线程处理模式的跟踪信息获取方法,成为目前亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供一种跟踪信息获取方法及装置,能够适应于多线程处理模式,成功获取跟踪信息。
为实现上述目的,本发明实施例提供如下技术方案:
一种跟踪信息获取方法,包括:
构造信息跟踪结构体,所述信息跟踪结构体中保存有计算节点路径信息;
调用多线程获取所述计算节点路径信息;
获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;
从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;
将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点。
优选的,当当前计算节点为计算节点路径上的初始计算节点的情况下,在将保存有跟踪信息的信息跟踪结构体由所述当前计算节点传递至下一计算节点之后,还包括:
将所述下一计算节点作为当前计算节点,返回执行所述获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中的步骤,直到执行到计算节点路径上的最后一个计算节点。
优选的,所述将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点的过程包括:
获取当前计算节点上产生的节点调用请求;
将所述节点调用请求以及保存有跟踪信息的信息跟踪结构体,由当前计算节点传递至下一计算节点。
优选的,在获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中之后,还包括:
从所述信息跟踪结构体中获取不同计算节点上产生的跟踪信息;
确定各跟踪信息的信息类型以及对应的计算节点ID号;
将具有相同信息类型的跟踪信息划分到同一跟踪信息集合中;
依据所述跟踪信息集合中的跟踪信息各自对应的计算节点ID号,对跟踪信息集合中的跟踪信息建立索引值。
优选的,所述构造信息跟踪结构体的过程包括:
依据所述计算节点路径信息,分别构造适用于远程过程调用RPC协议和/或超文本传输协议HTTP的信息跟踪结构体。
优选的,依据所述计算节点路径信息,构造适用于RPC协议的信息跟踪结构体的过程包括:
构造中间语言代码;
将所述中间语言代码转换成适用于预设编程语言的程序代码;
采用预设编程语言的程序代码基于RPC库,构造适用于RPC协议的信息跟踪结构体,并将所述计算节点路径信息保存在所述适用于RPC协议的信息跟踪结构体中。
优选的,依据所述计算节点路径信息,构造适用于HTTP协议的信息跟踪结构体的过程包括:
基于HTTP库,构造适用于HTTP协议的信息跟踪结构体,并将所述计算节点路径信息保存在适用于HTTP协议的信息跟踪结构体中。
一种跟踪信息获取装置,包括:
信息跟踪结构体构造模块,用于构造信息跟踪结构体,所述信息跟踪结构体中保存有计算节点路径信息;
计算节点路径信息获取模块,用于调用多线程获取所述计算节点路径信息;
第一跟踪信息获取模块,用于获取当前计算节点上产生的跟踪信息;
跟踪信息保存模块,用于将所述跟踪信息保存在信息跟踪结构体中;
下一计算节点确定模块,用于从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;
信息跟踪结构体传递模块,用于将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点。
优选的,所述信息跟踪结构体传递模块包括:
节点调用请求获取模块,用于获取当前计算节点上产生的节点调用请求;
传递子模块,用于将所述节点调用请求以及保存有跟踪信息的信息跟踪结构体,由当前计算节点传递至下一计算节点。
优选的,还包括:
第二跟踪信息获取模块,用于从所述信息跟踪结构体中获取不同计算节点上产生的跟踪信息;
信息类型确定模块,用于确定各跟踪信息的信息类型;
ID号确定模块,用于确定各跟踪信息对应的计算节点ID号;
跟踪信息划分模块,用于将具有相同信息类型的跟踪信息划分到同一跟踪信息集合中;
索引值建立模块,用于依据所述跟踪信息集合中的跟踪信息各自对应的计算节点ID号,对跟踪信息集合中的跟踪信息建立索引值。
优选的,所述信息跟踪结构体构造模块包括:
信息跟踪结构体构造子模块,用于依据所述计算节点路径信息,分别构造适用于远程过程调用RPC协议和/或超文本传输协议HTTP的信息跟踪结构体。
优选的,所述信息跟踪结构体构造子模块包括:
中间语言代码构造单元,用于构造中间语言代码;
转换单元,用于将所述中间语言代码转换成适用于预设编程语言的程序代码;
RPC协议信息跟踪结构体构造单元,用于采用预设编程语言的程序代码基于RPC库,构造适用于RPC协议的信息跟踪结构体,并将所述计算节点路径信息保存在所述适用于RPC协议的信息跟踪结构体中。
优选的,所述信息跟踪结构体构造子模块包括:
HTTP协议信息跟踪结构体构造单元,用于基于HTTP库,构造适用于HTTP协议的信息跟踪结构体,并将所述计算节点路径信息保存在适用于HTTP协议的信息跟踪结构体中。
基于上述技术方案,本发明实施例公开了一种跟踪信息获取方法及装置,包括:构造信息跟踪结构体,所述信息跟踪结构体中保存有计算节点路径信息;调用多线程获取所述计算节点路径信息;获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点。由于本发明实施例中可以调用多线程获取信息跟踪结构体中保存的计算节点路径信息,当某一服务需要采用多个线程进行处理时,信息跟踪结构体能够在多线程之间传递,各个线程可以获取信息跟踪结构体中保存的计算节点路径信息,从而获悉处理该服务的计算节点是哪些以及各个计算节点的处理顺序,进而从这些计算节点上成功获取跟踪信息,保证在多线程处理模式下,跟踪信息获取成功。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种跟踪信息获取方法的流程图;
图2为本发明实施例提供的另一种跟踪信息获取方法的流程图;
图3为本发明实施例提供的另一种跟踪信息获取方法的流程图;
图4为本发明实施例提供的一种计算节点路径示意图;
图5为本发明实施例提供的一种跟踪信息获取装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了一种跟踪信息获取方法的流程图,该方法可由服务器实现,所述跟踪信息获取方法用于发现服务调用过程中出现的问题,参照图1,所述方法可以包括:
步骤S100、构造信息跟踪结构体;
需要说明的是,本申请中的信息跟踪结构体中保存有计算节点路径信息,信息跟踪结构体能够被多线程共享,并且,所述信息跟踪结构体能够保存各个计算节点上产生的跟踪信息,并在节点之间传递,可选的,本申请中采用TraceContext作为信息跟踪结构体。
可选的,本申请信息跟踪结构体中保存的计算节点路径信息是初始调用请求中携带的,初始调用请求是客户端发送给服务器中的初始计算节点的调用请求,包括在网络上触发的任意形式的指令等,本发明实施例不做具体限定。
本申请中将初始调用请求中的计算节点路径信息保存在信息跟踪结构体中,其中,计算节点路径信息为在服务器中对初始调用请求进行处理的各个计算节点信息,至少包括:对初始调用请求进行处理的各个计算节点的ID号以及计算节点所在路径的路径ID号。
步骤S110、调用多线程获取所述计算节点路径信息;
由于本申请中的信息跟踪结构体能够被多线程共享,因此,在多线程处理模式下,本申请可以调用多线程获取信息跟踪结构体中保存的计算节点路径信息,并且,获取的计算节点路径可以在多线程之间传递。
步骤S120、获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;
由于本申请中计算节点路径信息为在服务器中对初始调用请求进行处理的各个计算节点信息,本申请中按照各个计算节点在同一条计算节点路径上的顺序,可以依次获取各个计算节点上产生的跟踪信息。
计算节点路径上的一计算节点在接收到与该计算节点在相同路径上的上一计算节点发送的调用请求之后,通过对该调用请求进行响应处理的过程中,产生处理日志,这些处理日志为信息跟踪结构体去跟踪并需要保存的跟踪信息,可选的,跟踪信息可以为调用请求的请求类型,计算节点对调用请求进行响应的响应时间、响应结果等,本申请并不做具体限定。
步骤S130、从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;
具体的,由于在同一条计算节点路径上的每个相邻计算节点的ID号之间存在关联关系,本申请可以通过计算节点ID号确定与当前计算节点在同一条计算节点路径上的下一计算节点是哪个。
步骤S140、将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点。
本申请通过将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点,进而在下一计算节点上获取下一计算节点上产生的跟踪信息,并将下一计算节点上产生的跟踪信息继续保存在信息跟踪结构体中。
本申请通过构造信息跟踪结构体,所述信息跟踪结构体中保存有计算节点路径信息;调用多线程获取所述计算节点路径信息;获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点。由于本发明实施例中可以调用多线程获取信息跟踪结构体中保存的计算节点路径信息,当某一服务需要采用多个线程进行处理时,信息跟踪结构体能够在多线程之间传递,各个线程可以获取信息跟踪结构体中保存的计算节点路径信息,从而获悉处理该服务的计算节点是哪些以及各个计算节点的处理顺序,进而从这些计算节点上成功获取跟踪信息,保证在多线程处理模式下,跟踪信息获取成功。
可选的,当当前计算节点为计算节点路径上的初始计算节点的情况下,图2示出了另一种跟踪信息获取方法的流程图,该方法可由服务器实现,参照图2,所述方法可以包括:
步骤S200、构造信息跟踪结构体;
需要说明的是,本申请中的信息跟踪结构体中保存有计算节点路径信息,信息跟踪结构体能够被多线程共享,并且,所述信息跟踪结构体能够保存各个计算节点上产生的跟踪信息,并在节点之间传递,可选的,本申请中采用TraceContext作为信息跟踪结构体。
步骤S210、调用多线程获取所述计算节点路径信息;
步骤S220、获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;
步骤S230、从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;
具体的,由于在同一条计算节点路径上的每个相邻计算节点的ID号之间存在关联关系,本申请可以通过计算节点ID号确定与当前计算节点在同一条计算节点路径上的下一计算节点是哪个。
步骤S240、将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点;
步骤S250、将所述下一计算节点作为当前计算节点,返回执行所述步骤S220,直到执行到计算节点路径上的最后一个计算节点。
采用本发明实施例中公开的方法,可以调用多线程获取信息跟踪结构体中保存的计算节点路径信息,当某一服务需要采用多个线程进行处理时,信息跟踪结构体能够在多线程之间传递,各个线程可以获取信息跟踪结构体中保存的计算节点路径信息,从而获悉处理该服务的计算节点路径上的从初始计算节点到最后一个计算节点是哪些,以及各个计算节点的处理顺序,进而从初始计算节点到最后一个计算节点上成功获取跟踪信息,保证在多线程处理模式下,跟踪信息获取成功。
可选的,图3示出了另一种跟踪信息获取方法的流程图,该方法可由服务器实现,参照图3,所述方法可以包括:
步骤S300、构造信息跟踪结构体;
需要说明的是,本申请中的信息跟踪结构体中保存有计算节点路径信息,信息跟踪结构体能够被多线程共享,并且,所述信息跟踪结构体能够保存各个计算节点上产生的跟踪信息,并在节点之间传递,可选的,本申请中采用TraceContext作为信息跟踪结构体。
可选的,本申请依可以据所述计算节点路径信息,分别构造适用于RPC(RemoteProcedure Call,远程过程调用)协议和/或HTTP(Hyper Text Transfer Protocol,超文本传输协议)的信息跟踪结构体。
其中,依据所述计算节点路径信息,构造适用于RPC协议的信息跟踪结构体的过程包括:构造中间语言代码;将所述中间语言代码转换成适用于预设编程语言的程序代码;采用预设编程语言的程序代码基于RPC库,构造适用于RPC协议的信息跟踪结构体,并将所述计算节点路径信息保存在所述适用于RPC协议的信息跟踪结构体中。
依据所述计算节点路径信息,构造适用于HTTP协议的信息跟踪结构体的过程包括:基于HTTP库,构造适用于HTTP协议的信息跟踪结构体,并将所述计算节点路径信息保存在适用于HTTP协议的信息跟踪结构体中。
可选的,RPC库以及HTTP库都是一种软件开发工具包,其中分别包含有RPC协议的功能以及HTTP协议的功能,通过在这两个库中获悉RPC协议的功能以及HTTP协议的功能,来构造分别适用于RPC协议功能以及HTTP协议功能的信息跟踪结构体。
可选的,构造中间语言代码所采用的中间语言可以为Google Protocol Buffers、Apache Thrift或者Interface Description Languages等,本发明实施例不做具体限定。
可选的,构造的中间语言代码可以为:
//已省略细枝末节
Service Yet AnotherService
{
Yet Another Responseinvoke(Yet Another Request);
}
可选的,通过编译装置将所述中间语言代码转换成适用于预设编程语言的程序代码的过程中,转换成的适用于预设编程语言的程序代码可以为:
需要说明的是,相比于RPC,HTTP用户无需提供中间语言代码,也无需使用编译装置。用户需要做的就是利用HTTP库,如SDK(Software Development Kit,软件开发工具包):1、客户机发起调用;2、服务器处理调用。客户机和服务器使用接口所应用的代码类似于:
步骤S310、调用多线程获取所述计算节点路径信息;
步骤S320、获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;
由于本申请中计算节点路径信息为在服务器中对初始调用请求进行处理的各个计算节点信息,本申请中按照各个计算节点在同一条计算节点路径上的顺序,可以依次获取各个计算节点上产生的跟踪信息。
步骤S330、从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;
具体的,由于在同一条计算节点路径上的每个相邻计算节点的ID号之间存在关联关系,本申请可以通过计算节点ID号确定与当前计算节点在同一条计算节点路径上的下一计算节点是哪个。
步骤S340、获取当前计算节点上产生的节点调用请求;
需要说明的是,本申请中当前计算节点上产生的节点调用请求是当前计算节点对下一计算节点发起调用过程所需的调用请求,用于对下一计算节点进行调用。
步骤S350、将所述节点调用请求以及保存有跟踪信息的信息跟踪结构体,由当前计算节点传递至下一计算节点。
需要说明的是,本申请可以将节点调用请求以及信息跟踪结构体打包在一起进行传递,也可以将两者分开传递,本申请并不限定。
在将节点调用请求以及保存有跟踪信息的信息跟踪结构体由当前计算节点发送至下一计算节点之后,可以将下一计算节点对节点调用请求进行响应得到的处理日志作为跟踪信息继续保存在信息跟踪结构体中。
需要说明的是,本申请在获取计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中之后,还可以对跟踪信息进行如下清洗、提炼过程:
从所述信息跟踪结构体中获取不同计算节点上产生的跟踪信息;确定各跟踪信息的信息类型以及对应的计算节点ID号;将具有相同信息类型的跟踪信息划分到同一跟踪信息集合中;依据所述跟踪信息集合中的跟踪信息各自对应的计算节点ID号,对跟踪信息集合中的跟踪信息建立索引值。
其中,由于本申请中的信息跟踪结构体在从一条计算节点路径上的初始计算节点传递到末尾计算节点之后,即完成了一次服务响应过程,信息跟踪结构体中会保存有各个计算节点上产生的跟踪信息,本申请中通过确定各跟踪信息的信息类型以及对应的计算节点ID号,将具有相同信息类型的跟踪信息划分到同一跟踪信息集合中,其中,跟踪信息对应的计算节点指的是跟踪信息所来自的计算节点。
本申请再将具有相同信息类型的跟踪信息划分到同一跟踪信息集合中之后,可以依据所述跟踪信息集合中的跟踪信息各自对应的计算节点ID号,对跟踪信息集合中的跟踪信息建立索引值,所述索引值与跟踪信息的计算节点ID号相对应。
通过如上对跟踪信息进行分类之后,技术人员通过对跟踪信息的分析,可以快速发现服务调用过程中出现的问题。本发明实施例在构造适用于RPC协议的信息跟踪上下文的过程中,通过构造中间语言代码,增加了对多种代码的适用性,在将所述中间语言代码转换成适用于预设编程语言的程序代码的过程中,可以将所述中间语言代码转换成多种编程语言(例如C++、Java等编程语言)的程序代码,进而提高了对多种编程语言代码的适用性,不再依赖字节码修改技术。
下面以一个具体的例子详细说明本发明以上实施例中公开的跟踪信息获取方法的具体过程:
客户端向服务器发起的一次服务调用过程在服务器端所经历的计算节点如图4所示的计算节点路径示意图,由计算节点A到计算节点B,然后到计算节点C,最后到计算节点D,计算节点路径为ABCD,客户端发送给计算节点A的初始调用请求中包含该计算节点路径信息。在构造信息跟踪结构体之后,将计算节点路径信息保存在信息跟踪结构体中,调用多线程获取信息跟踪结构体中的计算节点路径信息。
然后获取计算节点A上产生的跟踪信息,并将计算节点A产生的跟踪信息保存在信息跟踪结构体中,其中,计算节点A上产生的跟踪信息是计算节点A对初始调用请求进行响应产生的,在计算节点A产生对计算节点B进行调用的调用请求之后,将信息跟踪结构体以及计算节点A产生的调用请求一起打包,通过RPC/HTTP库发送给计算节点B;
同理,计算节点B会对计算节点A发送的调用请求进行响应,产生跟踪信息,并将计算节点B产生的跟踪信息保存在信息跟踪结构体中,在计算节点B产生对计算节点C进行调用的调用请求之后,将信息跟踪结构体以及计算节点B产生的调用请求一起打包,通过RPC/HTTP库发送给计算节点C;
计算节点C会对计算节点B发送的调用请求进行响应,产生跟踪信息,并将计算节点C产生的跟踪信息保存在信息跟踪结构体中,在计算节点C产生对计算节点D进行调用的调用请求之后,将信息跟踪结构体以及计算节点C产生的调用请求一起打包,通过RPC/HTTP库发送给计算节点D,计算节点D会对计算节点C发送的调用请求进行响应,产生跟踪信息,并将计算节点D产生的跟踪信息保存在信息跟踪结构体中。
至此完成一次服务调用过程,信息跟踪结构体中保存了计算节点A、B、C以及D产生的跟踪信息。技术人员通过对信息跟踪结构体中的跟踪信息的分析,可以快速发现服务调用过程中出现的问题。
下面对本发明实施例提供的跟踪信息获取装置进行介绍,下文描述的跟踪信息获取装置,可与上文描述的跟踪信息获取方法相互对应参照。下文描述的跟踪信息获取装置,可以认为是服务器为实现本发明实施例提供的跟踪信息获取方法,所需设置的功能模块架构。
图5为本发明实施例提供的跟踪信息获取装置的结构框图,参照图5,该装置可以包括:
信息跟踪结构体构造模块100,用于构造信息跟踪结构体,所述信息跟踪结构体中保存有计算节点路径信息;
计算节点路径信息获取模块110,用于调用多线程获取所述计算节点路径信息;
第一跟踪信息获取模块120,用于获取当前计算节点上产生的跟踪信息;
跟踪信息保存模块130,用于将所述跟踪信息保存在信息跟踪结构体中;
下一计算节点确定模块140,用于从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;
信息跟踪结构体传递模块150,用于将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点。
所述信息跟踪结构体传递模块包括:
节点调用请求获取模块,用于获取当前计算节点上产生的节点调用请求;
传递子模块,用于将所述节点调用请求以及保存有跟踪信息的信息跟踪结构体,由当前计算节点传递至下一计算节点。
还包括:
第二跟踪信息获取模块,用于从所述信息跟踪结构体中获取不同计算节点上产生的跟踪信息;
信息类型确定模块,用于确定各跟踪信息的信息类型;
ID号确定模块,用于确定各跟踪信息对应的计算节点ID号;
跟踪信息划分模块,用于将具有相同信息类型的跟踪信息划分到同一跟踪信息集合中;
索引值建立模块,用于依据所述跟踪信息集合中的跟踪信息各自对应的计算节点ID号,对跟踪信息集合中的跟踪信息建立索引值。
所述信息跟踪结构体构造模块包括:
信息跟踪结构体构造子模块,用于依据所述计算节点路径信息,分别构造适用于远程过程调用RPC协议和/或超文本传输协议HTTP的信息跟踪结构体。
所述信息跟踪结构体构造子模块包括:
中间语言代码构造单元,用于构造中间语言代码;
转换单元,用于将所述中间语言代码转换成适用于预设编程语言的程序代码;
RPC协议信息跟踪结构体构造单元,用于采用预设编程语言的程序代码基于RPC库,构造适用于RPC协议的信息跟踪结构体,并将所述计算节点路径信息保存在所述适用于RPC协议的信息跟踪结构体中。
所述信息跟踪结构体构造子模块包括:
HTTP协议信息跟踪结构体构造单元,用于基于HTTP库,构造适用于HTTP协议的信息跟踪结构体,并将所述计算节点路径信息保存在适用于HTTP协议的信息跟踪结构体中。
综上所述:
本发明实施例公开了一种跟踪信息获取方法及装置,包括:构造信息跟踪结构体,所述信息跟踪结构体中保存有计算节点路径信息;调用多线程获取所述计算节点路径信息;获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点。由于本发明实施例中可以调用多线程获取信息跟踪结构体中保存的计算节点路径信息,当某一服务需要采用多个线程进行处理时,信息跟踪结构体能够在多线程之间传递,各个线程可以获取信息跟踪结构体中保存的计算节点路径信息,从而获悉处理该服务的计算节点是哪些以及各个计算节点的处理顺序,进而从这些计算节点上成功获取跟踪信息,保证在多线程处理模式下,跟踪信息获取成功。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种跟踪信息获取方法,其特征在于,包括:
构造信息跟踪结构体,所述信息跟踪结构体中保存有初始调用请求中的计算节点路径信息,所述计算节点路径信息为在服务器中对初始调用请求进行处理的各个计算节点信息;所述构造信息跟踪结构体的过程包括:依据所述计算节点路径信息,分别构造适用于远程过程调用RPC协议和/或超文本传输协议HTTP的信息跟踪结构体;
调用多线程从所述信息跟踪结构体中获取所述计算节点路径信息,从所述计算节点路径信息中至少获取处理服务的计算节点路径上从初始计算节点到最后一个计算节点的信息,所述信息跟踪结构体在多线程之间传递;
获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中;
从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;
将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点;
在获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中之后,还包括:
从所述信息跟踪结构体中获取不同计算节点上产生的跟踪信息;
确定各跟踪信息的信息类型以及对应的计算节点ID号;
将具有相同信息类型的跟踪信息划分到同一跟踪信息集合中;
依据所述跟踪信息集合中的跟踪信息各自对应的计算节点ID号,对跟踪信息集合中的跟踪信息建立索引值。
2.根据权利要求1所述的方法,其特征在于,当当前计算节点为计算节点路径上的初始计算节点的情况下,在将保存有跟踪信息的信息跟踪结构体由所述当前计算节点传递至下一计算节点之后,还包括:
将所述下一计算节点作为当前计算节点,返回执行所述获取当前计算节点上产生的跟踪信息,并将所述跟踪信息保存在信息跟踪结构体中的步骤,直到执行到计算节点路径上的最后一个计算节点。
3.根据权利要求1所述的方法,其特征在于,所述将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点的过程包括:
获取当前计算节点上产生的节点调用请求;
将所述节点调用请求以及保存有跟踪信息的信息跟踪结构体,由当前计算节点传递至下一计算节点。
4.根据权利要求1所述的方法,其特征在于,依据所述计算节点路径信息,构造适用于RPC协议的信息跟踪结构体的过程包括:
构造中间语言代码;
将所述中间语言代码转换成适用于预设编程语言的程序代码;
采用预设编程语言的程序代码基于RPC库,构造适用于RPC协议的信息跟踪结构体,并将所述计算节点路径信息保存在所述适用于RPC协议的信息跟踪结构体中。
5.根据权利要求1所述的方法,其特征在于,依据所述计算节点路径信息,构造适用于HTTP协议的信息跟踪结构体的过程包括:
基于HTTP库,构造适用于HTTP协议的信息跟踪结构体,并将所述计算节点路径信息保存在适用于HTTP协议的信息跟踪结构体中。
6.一种跟踪信息获取装置,其特征在于,包括:
信息跟踪结构体构造模块,用于构造信息跟踪结构体,所述信息跟踪结构体中保存有初始调用请求中的计算节点路径信息,所述计算节点路径信息为在服务器中对初始调用请求进行处理的各个计算节点信息;
计算节点路径信息获取模块,用于调用多线程从所述信息跟踪结构体中获取所述计算节点路径信息,从所述计算节点路径信息中至少获取处理服务的计算节点路径上从初始计算节点到最后一个计算节点的信息,所述信息跟踪结构体在多线程之间传递;
第一跟踪信息获取模块,用于获取当前计算节点上产生的跟踪信息;
跟踪信息保存模块,用于将所述跟踪信息保存在信息跟踪结构体中;
下一计算节点确定模块,用于从所述计算节点路径信息中确定与当前计算节点在同一条计算节点路径上的下一计算节点;
信息跟踪结构体传递模块,用于将保存有跟踪信息的信息跟踪结构体由当前计算节点传递至下一计算节点;
第二跟踪信息获取模块,用于从所述信息跟踪结构体中获取不同计算节点上产生的跟踪信息;
信息类型确定模块,用于确定各跟踪信息的信息类型;
ID号确定模块,用于确定各跟踪信息对应的计算节点ID号;
跟踪信息划分模块,用于将具有相同信息类型的跟踪信息划分到同一跟踪信息集合中;
索引值建立模块,用于依据所述跟踪信息集合中的跟踪信息各自对应的计算节点ID号,对跟踪信息集合中的跟踪信息建立索引值;
所述信息跟踪结构体构造模块包括:
信息跟踪结构体构造子模块,用于依据所述计算节点路径信息,分别构造适用于远程过程调用RPC协议和/或超文本传输协议HTTP的信息跟踪结构体。
7.根据权利要求6所述的装置,其特征在于,所述信息跟踪结构体传递模块包括:
节点调用请求获取模块,用于获取当前计算节点上产生的节点调用请求;
传递子模块,用于将所述节点调用请求以及保存有跟踪信息的信息跟踪结构体,由当前计算节点传递至下一计算节点。
8.根据权利要求6所述的装置,其特征在于,所述信息跟踪结构体构造子模块包括:
中间语言代码构造单元,用于构造中间语言代码;
转换单元,用于将所述中间语言代码转换成适用于预设编程语言的程序代码;
RPC协议信息跟踪结构体构造单元,用于采用预设编程语言的程序代码基于RPC库,构造适用于RPC协议的信息跟踪结构体,并将所述计算节点路径信息保存在所述适用于RPC协议的信息跟踪结构体中。
9.根据权利要求6所述的装置,其特征在于,所述信息跟踪结构体构造子模块包括:
HTTP协议信息跟踪结构体构造单元,用于基于HTTP库,构造适用于HTTP协议的信息跟踪结构体,并将所述计算节点路径信息保存在适用于HTTP协议的信息跟踪结构体中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710866265.3A CN107592230B (zh) | 2017-09-22 | 2017-09-22 | 一种跟踪信息获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710866265.3A CN107592230B (zh) | 2017-09-22 | 2017-09-22 | 一种跟踪信息获取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107592230A CN107592230A (zh) | 2018-01-16 |
CN107592230B true CN107592230B (zh) | 2023-02-21 |
Family
ID=61047557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710866265.3A Active CN107592230B (zh) | 2017-09-22 | 2017-09-22 | 一种跟踪信息获取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107592230B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101815089A (zh) * | 2010-02-22 | 2010-08-25 | 浪潮(北京)电子信息产业有限公司 | Web高端磁盘阵列控制器命令执行方法及系统 |
CN103684898A (zh) * | 2012-09-14 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种监测用户请求在分布式系统中运行的方法及装置 |
CN104216764A (zh) * | 2014-07-31 | 2014-12-17 | 昆明理工大学 | 一种基于多线程嵌入式系统并行程序跟踪与回放方法 |
CN106254145A (zh) * | 2016-09-06 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 网络请求跟踪处理方法和装置 |
CN106487596A (zh) * | 2016-10-26 | 2017-03-08 | 宜人恒业科技发展(北京)有限公司 | 分布式服务跟踪实现方法 |
CN106897810A (zh) * | 2015-12-17 | 2017-06-27 | 北京奇虎科技有限公司 | 业务处理方法和系统、工作流引擎和系统、业务系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529994B2 (en) * | 2014-11-24 | 2016-12-27 | Shape Security, Inc. | Call stack integrity check on client/server systems |
-
2017
- 2017-09-22 CN CN201710866265.3A patent/CN107592230B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101815089A (zh) * | 2010-02-22 | 2010-08-25 | 浪潮(北京)电子信息产业有限公司 | Web高端磁盘阵列控制器命令执行方法及系统 |
CN103684898A (zh) * | 2012-09-14 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种监测用户请求在分布式系统中运行的方法及装置 |
CN104216764A (zh) * | 2014-07-31 | 2014-12-17 | 昆明理工大学 | 一种基于多线程嵌入式系统并行程序跟踪与回放方法 |
CN106897810A (zh) * | 2015-12-17 | 2017-06-27 | 北京奇虎科技有限公司 | 业务处理方法和系统、工作流引擎和系统、业务系统 |
CN106254145A (zh) * | 2016-09-06 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 网络请求跟踪处理方法和装置 |
CN106487596A (zh) * | 2016-10-26 | 2017-03-08 | 宜人恒业科技发展(北京)有限公司 | 分布式服务跟踪实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107592230A (zh) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
CN109688202A (zh) | 一种接口数据的处理方法、装置、计算设备及存储介质 | |
US20120124559A1 (en) | Performance Evaluation System | |
CN105556482A (zh) | 监视移动应用性能 | |
CN110912738B (zh) | 一种业务异常的处理方法、装置、平台及电子设备 | |
US10284660B1 (en) | Data flow tokens to trace execution of services in a service provider network | |
CN111198813A (zh) | 一种接口测试方法和装置 | |
CN109271359A (zh) | 日志信息处理方法、装置、电子设备及可读存储介质 | |
CN110825705A (zh) | 一种数据集缓存方法及相关装置 | |
CN111338813B (zh) | 一种动态生成中间件的方法、装置、介质和电子设备 | |
CN110598135A (zh) | 网络请求处理方法、装置、计算机可读介质及电子设备 | |
CN113722055A (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
CN107592230B (zh) | 一种跟踪信息获取方法及装置 | |
CN113721921A (zh) | 一种联盟链多语言外部链码离线编译方法与系统 | |
US20210021690A1 (en) | Method and apparatus for generating information | |
CN115426416B (zh) | 一种协议转换方法及装置、电子设备及存储介质 | |
CN109462491B (zh) | 用于测试服务器功能的系统、方法和装置 | |
CN110825461B (zh) | 数据处理方法和装置 | |
JP5011190B2 (ja) | コンテクスト装置およびプログラム | |
CN103546508A (zh) | 信息同步系统和方法 | |
CN111131354B (zh) | 用于生成信息的方法和装置 | |
CN107526706B (zh) | 一种分布式计算平台中的数据处理方法和装置 | |
CN114764627A (zh) | 基于横向联合学习参与方的数据贡献力确定方法和装置 | |
CN111444057A (zh) | 页面性能数据采集方法、装置及计算设备 | |
CN107862038B (zh) | 一种解耦web客户端与大数据挖掘分析的数据挖掘平台及实现方法 |
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 |