调用链路追踪方法、装置、设备及计算机可读存储介质与流程

未命名 10-09 阅读:101 评论:0


1.本技术属于微服务架构技术领域,尤其涉及一种调用链路追踪方法、装置、设备及计算机可读存储介质。


背景技术:

2.随着互联网业务的快速发展,微服务架构也日益复杂。在通过微服务架构处理业务请求的过程中,若发生异常,通常很难定位异常原因。因此,为了快速定位异常原因,可以进行调用链路追踪。
3.目前,常见的调用链路追踪方法包括应用硬编码主动记录和应用嵌入埋点软件开发工具包(software development kit,sdk)。但是,上述两种调用链路追踪的方式或多或少都对目标应用造成了侵入,从而会引入未知的风险,降低服务调用的安全性和可靠性。


技术实现要素:

4.本技术实施例提供了一种调用链路追踪方法、装置、设备、计算机可读存储介质及计算机程序产品,能够在保证服务调用的安全性和可靠性的前提下进行调用链路追踪。
5.第一方面,本技术实施例提供了一种调用链路追踪方法,该方法包括:
6.在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,所述第一电子设备为安装有所述第一应用的电子设备,所述第一操作系统为所述第一电子设备中的操作系统;
7.利用第二操作系统中的第二追踪探针从第二电子设备中获取与所述服务调用过程对应的第二服务调用信息,所述第二电子设备为安装有所述第二应用的电子设备,所述第二操作系统为所述第二电子设备中的操作系统;
8.根据所述第一服务调用信息和所述第二服务调用信息生成所述第一应用和所述第二应用之间的调用链路。
9.在一种可能的实现方式中,所述在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从所述第一电子设备中获取与服务调用过程对应的第一服务调用信息,包括:
10.在所述第一应用调用所述第一操作系统向所述第二应用发送数据请求的过程中,利用所述第一追踪探针从所述第一电子设备中获取与发送所述数据请求对应的第一服务调用信息;
11.在所述第一应用调用所述第一操作系统接收所述第二应用发送的数据应答的过程中,利用所述第一追踪探针从所述第一电子设备中获取与接收所述数据应答对应的第一服务调用信息。
12.在一种可能的实现方式中,所述利用第二操作系统中的第二追踪探针从所述第二电子设备中获取与所述服务调用过程对应的第二服务调用信息,包括:
13.在所述第二应用调用所述第二操作系统接收所述第一应用发送的数据请求的过程中,利用所述第二追踪探针从所述第二电子设备中获取与接收所述数据请求对应的第二服务调用信息;
14.在所述第二应用调用所述第二操作系统向所述第一应用发送数据应答的过程中,利用所述第二追踪探针从所述第二电子设备中获取与发送所述数据应答对应的第二服务调用信息。
15.在一种可能的实现方式中,所述在所述第一应用调用所述第一操作系统向所述第二应用发送数据请求的过程中,利用所述第一追踪探针从所述第一电子设备中获取与发送所述数据请求对应的第一服务调用信息,包括:
16.在所述第一应用调用所述第一操作系统向所述第二应用发送所述数据请求之后,且所述第一操作系统向所述第一应用返回与所述数据请求对应的发送结果之前,利用所述第一追踪探针从所述第一电子设备中获取与发送所述数据请求对应的第一服务调用信息。
17.在一种可能的实现方式中,所述第一服务调用信息包括目标通信信息和通信环境信息,所述目标通信信息为通信报文中与所述服务调用过程相关的信息,所述通信环境信息包括所述第一电子设备的环境信息和所述第二电子设备的环境信息;
18.所述利用第一操作系统中的第一追踪探针从所述第一电子设备中获取与服务调用过程对应的第一服务调用信息,包括:
19.利用所述第一追踪探针调用所述第一操作系统中的目标函数,所述目标函数包括系统调用层的入口函数和网络协议栈的入口函数中的至少一个;
20.通过所述目标函数从所述第一电子设备中获取与所述服务调用过程对应的通信报文和通信环境信息;
21.从所述通信报文中提取所述目标通信信息。
22.在一种可能的实现方式中,所述从所述通信报文中提取所述目标通信信息,包括:
23.从所述通信报文中提取目标参数;
24.根据所述目标参数的值与应用协议之间的对应关系确定与所述通信报文对应的目标应用协议;
25.基于所述目标应用协议,从所述通信报文中提取所述目标通信信息。
26.在一种可能的实现方式中,所述目标通信信息包括应用协议的名称、请求/应答标识、发送/接收标识、终端服务名称、请求序列号和追踪标识。
27.在一种可能的实现方式中,所述第一服务调用信息包括第一追踪标识,所述第二服务调用信息包括第二追踪标识;
28.所述根据所述第一服务调用信息和所述第二服务调用信息生成所述第一应用和所述第二应用之间的调用链路,包括:
29.在所述第一追踪标识和所述第二追踪标识相同的情况下,根据所述第一服务调用信息和所述第二服务调用信息生成所述第一应用和所述第二应用之间的调用链路。
30.第二方面,本技术实施例提供了一种调用链路追踪装置,该装置包括:
31.第一获取模块,用于在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,所述第一电子设备为安装有所述第一应用的电子设备,所述第一操作系统为所述第一
电子设备中的操作系统;
32.第二获取模块,用于利用第二操作系统中的第二追踪探针从第二电子设备中获取与所述服务调用过程对应的第二服务调用信息,所述第二电子设备为安装有所述第二应用的电子设备,所述第二操作系统为所述第二电子设备中的操作系统;
33.生成模块,用于根据所述第一服务调用信息和所述第二服务调用信息生成所述第一应用和所述第二应用之间的调用链路。
34.第三方面,本技术实施例提供了一种电子设备,该设备包括:处理器以及存储有计算机程序指令的存储器;
35.所述处理器执行所述计算机程序指令时实现上述第一方面中任一种可能的实现方法中的方法。
36.第四方面,本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述第一方面中任一种可能的实现方法中的方法。
37.第五方面,本技术实施例提供了一种计算机程序产品,该计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备执行如上述第一方面中任一种可能的实现方法中的方法。
38.在本技术实施例的调用链路追踪方法、装置、设备、计算机可读存储介质及计算机程序产品中,由于第一追踪探针位于第一操作系统中而未位于第一应用中,且第二追踪探针位于第二操作系统中而未位于第二应用中,因此,通过在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,以及利用第二操作系统中的第二追踪探针从第二电子设备中获取与服务调用过程对应的第二服务调用信息,能够在不侵入第一应用和第二应用的前提下获取与服务调用过程对应的服务调用信息。也即,通过将追踪探针编译为操作系统的内核模块,进而加载生效,使得获取服务调用信息的过程不会向第一应用和第二应用引入未知的风险,从而能够保证服务调用的安全性和可靠性。如此,通过根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路,能够在保证服务调用的安全性和可靠性的前提下进行调用链路追踪。
附图说明
39.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1是本技术实施例提供的一种调用链路追踪的整体架构示意图;
41.图2是本技术实施例提供的一种调用链路追踪方法的流程示意图;
42.图3是本技术实施例提供的另一种调用链路追踪方法的流程示意图;
43.图4是本技术实施例提供的一种调用链路的追踪示意图;
44.图5是本技术实施例提供的一种调用链路追踪装置的结构示意图;
45.图6是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
46.下面将详细描述本技术的各个方面的特征和示例性实施例,为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本技术进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本技术,而不是限定本技术。对于本领域技术人员来说,本技术可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本技术的示例来提供对本技术更好的理解。
47.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
48.如背景技术部分所述,目前,常见的调用链路追踪方法包括应用硬编码主动记录和应用嵌入埋点软件开发工具包(software development kit,sdk)。
49.具体的,应用硬编码主动记录是由开发人员通过硬编码实现调用链路标识及上下文信息的输出。通常的做法是先使用一个本地变量(如日志标识)串联起应用内部的所有处理流程,再通过一些取巧的方式(如添加自定义超文本传输协议头信息)在跨系统调用时继续透传跟踪标记,最后根据输出日志或其他形式显现调用链路信息。
50.应用嵌入埋点sdk通常通过拦截器、过滤器和面向切面编程(aspect oriented programming,aop)等机制实现。对应用进行恰当的引入和简单的配置后,即可对一些常见的框架组件和通信方式下的调用链路进行生成和分析。
51.另外,常见的调用链路追踪方法还包括java代理(java agent)与字节码增强。具体的,利用编程语言环境原生支持的功能特性和一些开源的分布式追踪组件,在无需对应用和关联组件做任何代码修改的前提下,通过加入指定的启动参数配置项即可完成调用链路的自动梳理。
52.但是,一方面,硬编码的方式需要在实现业务逻辑的过程中不断穿插调用链路渗透的相关代码,工作内容重复且低效,且很难一次性完成所有硬编码的编写。并且,由于类似的相关操作完全是分散在各个不同的功能单元之中,降低了项目整体代码的可读性和可维护性,导致后续在进行业务模块扩增、链路数据格式调整和观测维度调整时将带来较高的成本投入。
53.另一方面,硬编码和埋点sdk的方式,或多或少都对目标应用造成了侵入。这些非常规业务逻辑处理的额外代码存在,必然会引入一些其他未知的风险,降低系统的可靠性和安全性。例如,在硬编码的调用链路记录逻辑发生异常时,后续正常的业务处理流程也会失去执行的机会,从而被中止。另外,埋点sdk自身或者依赖的第三方库存在隐藏安全漏洞,有被利用、攻击的风险。
54.再一方面,多数方法在收集和传输调用链路信息的过程中不可避免的会占用一定量的宿主环境的计算资源和网络带宽。尤其是一些功能更为通用的解决方案,在数据采集方面力求详尽全面,加之自身技术栈的一些限制,往往会给目标进程带来较明显的额外性
能损耗。
55.如此,为了解决现有技术问题,本技术实施例提供了一种调用链路追踪方法、装置、设备、计算机可读存储介质及计算机程序产品。
56.下面对本技术实施例所提供的调用链路追踪的整体架构进行介绍。
57.如图1所示,调用链路追踪的整体架构示意图可以包括客户端和服务端。其中,客户端和服务端可以通过网络通信。客户端中可以包括用户空间和内核空间。用户空间中可以包括目标进程。内核空间中可以包括文件模块、网络模块和追踪探针。在目标进程调用系统调用的过程中,追踪探针可以对系统调用的过程进行追踪。服务端与客户端类似,在此不再详细赘述。
58.下面对本技术实施例所提供的调用链路追踪方法进行介绍。
59.图2示出了本技术实施例提供的一种调用链路追踪方法的流程示意图。如图2所示,本技术实施例提供的调用链路追踪方法包括以下步骤:
60.s210、在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,第一电子设备为安装有第一应用的电子设备,第一操作系统为第一电子设备中的操作系统;
61.s220、利用第二操作系统中的第二追踪探针从第二电子设备中获取与服务调用过程对应的第二服务调用信息,第二电子设备为安装有第二应用的电子设备,第二操作系统为第二电子设备中的操作系统;
62.s230、根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路。
63.在本技术实施例的调用链路追踪方法中,由于第一追踪探针位于第一操作系统中而未位于第一应用中,且第二追踪探针位于第二操作系统中而未位于第二应用中,因此,通过在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,以及利用第二操作系统中的第二追踪探针从第二电子设备中获取与服务调用过程对应的第二服务调用信息,能够在不侵入第一应用和第二应用的前提下获取与服务调用过程对应的服务调用信息。也即,通过将追踪探针编译为操作系统的内核模块,进而加载生效,使得获取服务调用信息的过程不会向第一应用和第二应用引入未知的风险,从而能够保证服务调用的安全性和可靠性。如此,通过根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路,能够在保证服务调用的安全性和可靠性的前提下进行调用链路追踪。
64.下面介绍上述各个步骤的具体实现方式。
65.在一些实施例中,在s210中,第一应用可以是服务消费者,第二应用可以是服务提供者。第一应用调用第二应用提供的服务的过程可以包括第一应用调用第一操作系统向第二应用发送数据请求、第二应用调用第二操作系统接收第一应用发送的数据请求、第二应用调用第二操作系统向第一应用发送数据应答、第一应用调用第一操作系统接收第二应用发送的数据应答等过程。其中,第一操作系统和第一应用可以位于第一电子设备中。第二操作系统和第二应用可以位于第二电子设备中。其中,第一电子设备可以作为客户端,第二电子设备可以作为服务端。需要说明的是,在本实施例中,客户端和服务端可以是相对概念。也即,第一电子设备可以作为与其他客户端对应的服务端。同样,第二电子设备可以作为与
其他服务端对应的客户端。在此不做限定。
66.另外,第一追踪探针可以是自定义代码片段。具体的,第一追踪探针可以是用户基于systemtap框架编写的脚本。
67.作为一种示例,在第一应用调用第二应用提供的服务的过程中,也即,在特定内核函数的调用过程中,通过动态注入自定义代码片段可以形成第一追踪探针,进而通过第一追踪探针可以实现对第一应用进行无侵入的调用链路追踪。
68.另外,第一服务调用信息可以是从客户端获取的链路元数据。链路元数据可以是用于生成调用链路的数据。第一服务信息可以包括目标通信信息和通信环境信息。其中,目标通信信息可以是通信报文中与服务调用过程相关的信息。通信报文可以是在第一应用调用第二应用提供的服务的过程中形成的报文。目标通信信息具体可以包括应用协议的名称、请求/应答标识、发送/接收标识、终端服务名称、请求序列号和追踪标识。其中,应用协议可以是和通信报文对应的应用协议。请求标识可以记为req,应答标识可以记为rsp,发送标识可以记为sed,接收标识可以记为rcv。终端服务名称可以是与第二应用对应的服务名称,服务名称中可以包括服务版本。
69.另外,通信环境信息可以包括第一电子设备的环境信息和第二电子设备的环境信息。其中,环境信息可以包括互联网协议地址(internet protocol address,ip地址)和端口号。也即,通信环境信息可以包括本地套接字标识和对端套接字标识。
70.基于此,为了在不侵入第一应用的前提下获取与第一应用对应的第一服务调用信息,在一些实施例中,上述s210具体可以包括:
71.在第一应用调用第一操作系统向第二应用发送数据请求的过程中,利用第一追踪探针从第一电子设备中获取与发送数据请求对应的第一服务调用信息;
72.在第一应用调用第一操作系统接收第二应用发送的数据应答的过程中,利用第一追踪探针从第一电子设备中获取与接收数据应答对应的第一服务调用信息。
73.这里,由于第一应用、第一操作系统和第一追踪探针均可以位于第一电子设备中,因此,第一追踪探针可以对第一应用调用第一操作系统的过程进行追踪。由于第一应用可以调用第一操作系统向第二应用发送数据请求,以及接收第二应用发送的数据应答,因此,第一追踪探针可以获取与发送数据请求和接收数据应答分别对应的目标通信信息和通信环境信息。
74.这样,通过利用第一探针获取与发送数据请求和接收数据应答分别对应的目标通信信息和通信环境信息,能够在不侵入第一应用的前提下获取与第一应用对应的第一服务调用信息。
75.基于此,为了获取到与发送数据请求对应的全部通信信息,在一些实施例中,上述在第一应用调用第一操作系统向第二应用发送数据请求的过程中,利用第一追踪探针从第一电子设备中获取与发送数据请求对应的第一服务调用信息,具体可以包括:
76.在第一应用调用第一操作系统向第二应用发送数据请求之后,且第一操作系统向第一应用返回与数据请求对应的发送结果之前,利用第一追踪探针从第一电子设备中获取与发送数据请求对应的第一服务调用信息。
77.这里,在第一应用调用第一操作系统向第二应用发送数据请求之后,若第一操作系统完成了发送过程,则可以向第一应用返回与数据请求对应的发送结果。在第一操作系
统完成发送过程之后,且向第一应用返回发送结果之前,第一追踪探针能够获取到与发送数据请求对应的全部通信信息。
78.同理,为了获取到与接收数据应答对应的全部通信信息,在一些实施例中,上述在第一应用调用第一操作系统接收第二应用发送的数据应答的过程中,利用第一追踪探针从第一电子设备中获取与接收数据应答对应的第一服务调用信息,具体可以包括:
79.在第一应用调用第一操作系统接收第二应用发送的数据应答之后,且第一操作系统向第一应用返回与数据应答对应的接收结果之前,利用第一追踪探针从第一电子设备中获取与接收数据应答对应的第一服务调用信息。
80.在实际情况中,在微服务和云原生等技术的蓬勃发展和深远影响之下,相较于原来的单体架构,大量的应用之间需要通过网络通信来完成信息的交换和自身功能的实现。因此,刺激诞生了一系列的自定义上层应用协议服务框架和组件,如dubbo和magpie等。基于此,为了使第一追踪探针能够更加通用和更方便快捷的移植,在一些实施例中,可以将第一追踪探针动态注入至第一操作系统处理逻辑的底层。
81.基于此,为了实现通过第一追踪探针获取目标通信信息和通信环境信息,在一些实施例中,上述s210具体还可以包括:
82.利用第一追踪探针调用第一操作系统中的目标函数,目标函数包括系统调用层的入口函数和网络协议栈的入口函数中的至少一个;
83.通过目标函数从第一电子设备中获取与服务调用过程对应的通信报文和通信环境信息;
84.从通信报文中提取目标通信信息。
85.这里,网络协议栈可以是tcp/ip(传输控制协议/网际协议,transmission control protocol/internet protocol)协议栈。目标函数可以是动态注入点。目标函数可以通过在第一应用和第二应用进行双侧采样分析确定得到。以linux操作系统下,常用微服务框架动态注入点的选取为例,通过使用strace命令工具进行多次观测记录,可以确定若将系统调用层和tcp/ip协议栈的入口函数作为注入点,则可以通过第一追踪探针获取到目标通信信息和通信环境信息。
86.作为一种示例,目标函数可以包括read函数和write函数。read函数和write函数中均可以包括fd参数和buf参数。其中,fd参数可以是获取套接字信息的基础。如此,通过read函数和write函数中的fd参数,可以获取到与服务调用过程对应的通信环境信息。另外,buf参数可以是获取通信报文的基础。如此,通过read函数和write函数中的buf参数,可以获取到与服务调用过程对应的通信报文。由于通信报文中可以包括应用协议的名称、请求/应答标识、发送/接收标识、终端服务名称、请求序列号和追踪标识(trace id)等目标通信信息。因此,在得到通信报文之后,可以从通信报文中提取目标通信信息。
87.这样,通过利用第一追踪探针调用第一操作系统中的目标函数,也即,将目标函数作为动态注入点,能够实现通过第一追踪探针获取目标通信信息和通信环境信息。
88.基于此,为了尽可能多的从当前通信数据包中直接提取有效的调用链路线索信息,在一些实施例中,上述从通信报文中提取目标通信信息,具体可以包括:
89.从通信报文中提取目标参数;
90.根据目标参数的值与应用协议之间的对应关系确定与通信报文对应的目标应用
协议;
91.基于目标应用协议,从通信报文中提取目标通信信息。
92.这里,目标参数可以是用于识别与通信报文对应的应用协议的参数。一般框架和组件在设计上层应用协议时,通常会将最开始的几个字节约定为“魔数”(即magic number,如dubbo的是0xdabb),用以在后续的传输和处理过程中快速识别其数据包。因此,目标参数例如可以是通信报文中的前两个字节。如此,在提取目标参数之后,即可根据目标参数的值与应用协议之间的对应关系确定与通信报文对应的目标应用协议。若不存在与目标参数的值对应的应用协议,则可以认为是非监控范围内的噪音流量,直接忽略。在确定目标应用协议之后,即可以目标应用协议对应的设计规范为参考,从通信报文(通信数据包)中直接提取出有效的调用链路线索信息,即目标通信信息。
93.作为一种示例,基于目标应用协议,从通信报文中提取目标通信信息具体可以是根据协议规范定义中,各个字段相较于起始位的偏移量和自身的长度,从通信数据包中逐个进行计算复制抽取,得到请求/应答标识、发送/接收标识、终端服务名称、请求序列号和追踪标识等目标通信信息。
94.这样,通过基于目标应用协议,从通信报文中提取目标通信信息,能够尽可能多的从当前通信数据包中直接提取有效的调用链路线索信息。
95.在一些实施例中,在s220中,第二追踪探针可以位于第二操作系统中。第二追踪探针可以是自定义代码片段。具体的,第二追踪探针可以是用户基于systemtap框架编写的脚本。
96.作为一种示例,在第一应用调用第二应用提供的服务的过程中,也即,在特定内核函数的调用过程中,通过动态注入自定义代码片段可以形成第二追踪探针,进而通过第二追踪探针可以实现对第二应用进行无侵入的调用链路追踪。
97.另外,第二服务调用信息可以是从服务端获取的链路元数据。第二服务调用信息和第一服务调用信息描述的可以是同一个服务。通过第一追踪探针和第二追踪探针可以在客户端和服务端开展成对的信息收集过程。链路元数据可以是用于生成调用链路的数据。第二服务信息可以包括目标通信信息和通信环境信息。其中,对目标通信信息和通信环境信息的介绍可参见上文所述实施例s210中的相关描述,在此不再详细赘述。
98.基于此,为了在不侵入第二应用的前提下获取与第二应用对应的第二服务调用信息,在一些实施例中,上述s220具体可以包括:
99.在第二应用调用第二操作系统接收第一应用发送的数据请求的过程中,利用第二追踪探针从第二电子设备中获取与接收数据请求对应的第二服务调用信息;
100.在第二应用调用第二操作系统向第一应用发送数据应答的过程中,利用第二追踪探针从第二电子设备中获取与发送数据应答对应的第二服务调用信息。
101.这里,由于第二应用、第二操作系统和第二追踪探针均可以位于第二电子设备中,因此,第二追踪探针可以对第二应用调用第二操作系统的过程进行追踪。由于第二应用可以调用第二操作系统向第一应用发送数据应答,以及接收第一应用发送的数据请求,因此,第二追踪探针可以获取与发送数据应答和接收数据请求分别对应的目标通信信息和通信环境信息。
102.这样,通过利用第二探针获取与发送数据应答和接收数据请求分别对应的目标通
信信息和通信环境信息,能够在不侵入第二应用的前提下获取与第二应用对应的第二服务调用信息。
103.基于此,为了获取到与接收数据请求对应的全部通信信息,在一些实施例中,上述在第二应用调用第二操作系统接收第一应用发送的数据请求的过程中,利用第二追踪探针从第二电子设备中获取与接收数据请求对应的第二服务调用信息,具体可以包括:
104.在第二应用调用第二操作系统接收第一应用发送的数据请求之后,且第二操作系统向第二应用返回与数据请求对应的接收结果之前,利用第二追踪探针从第二电子设备中获取与接收数据请求对应的第二服务调用信息。
105.同理,为了获取与发送数据应答对应的全部通信信息,在一些实施例中,上述在第二应用调用第二操作系统向第一应用发送数据应答的过程中,利用第二追踪探针从第二电子设备中获取与发送数据应答对应的第二服务调用信息,具体可以包括:
106.在第二应用系统调用第二操作系统向第一应用发送数据应答之后,且第二操作系统向第二应用返回与数据应答对应的发送结果之前,利用第二追踪探针从第二电子设备中获取与发送数据应答对应的第二服务调用信息。
107.除此之外,利用第二追踪探针从第二电子设备中获取与接收数据请求对应的第二服务调用信息,具体还可以包括:
108.利用第二追踪探针调用第二操作系统中的目标函数;
109.通过目标函数从第二电子设备中获取与服务调用过程对应的通信报文和通信环境信息;
110.从通信报文中提取目标通信信息。
111.上述过程具体可以参见上文实施例中的相关描述,在此不再详细赘述。
112.在一些实施例中,在s230中,在得到第一服务调用信息和第二服务调用信息之后,可以业界公认论文(dapper)和事实规范(opentelemetry)为指引,将提取到的信息进行格式调整、分组归类和规范化输出。具体的,规范化输出可以包括以下步骤:使用客户端标识(本地套接字标识)、服务端标识(对端套接字标识)、终端服务名称和请求/应答标识四者共同逐个标记单次请求和应答阶段,用于最后组成一次完整的跨系统调用过程;使用跟踪标识唯一标记当前调用所归属的链路追踪记录;将所有数据格式整理为规范化输出。之后,可通过打印日志或更低耗的用户数据报协议(user datagram protocol,udp)通信等方式完成对采集到的链路追踪元数据的推送和转移,批处理后供人工分析参考或者进行在线可视化展示。由于在数据采集和输出时进行了规范化处理操作,所以后续可以十分方便的与业界其他优秀产品进行更好的组合,如搭配elasticsearch作为数据存储,搭配zipkin作为数据展示,以在短时间内快速构建起一套完整的应用性能管理(application performance management,apm)系统。
113.由于目标通信信息中可以包括追踪标识,因此,第一服务调用信息中可以包括第一追踪标识,第二服务调用信息中可以包括第二追踪标识。基于此,为了保证调用链路的准确性,在一些实施例中,上述s230具体可以包括:
114.在第一追踪标识和第二追踪标识相同的情况下,根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路。
115.这里,同一次服务调用过程可以对应同一个追踪标识。因此,若第一追踪标识和第
二追踪标识相同,则第一服务调用信息和第二服务调用信息可以为同一次服务调用对应的信息。
116.这样,在第一追踪标识和第二追踪标识相同的情况下,根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路,能够保证调用链路的准确性。
117.为了更好地描述整个方案,基于上述各实施例,举一些具体的例子。
118.例如,部署三个基于magpie框架实现的简单应用:应用a,应用b,应用c。其中,应用a可视作业务场景中的服务接入网关,在接收用户的请求后再以客户端的角色消费应用b所提供的服务来完成应答。应用b一方面可以作为服务端,暴露应用a所需的服务。同时,应用b也是一个客户端,可以通过调用应用c中的服务来共同完成对应用a请求的处理。应用c可以是一个纯服务端。在应用部署完成之后,可以将系统调用层的read函数和write函数确定为追踪探针的动态注入点。
119.基于此,如图3所示,本技术实施例提供的一种调用链路追踪方法具体可以包括如下步骤:
120.s31、用户向服务消费者发起业务请求;
121.s32、服务消费者进行内部处理;
122.s33、服务消费者写网络请求数据系统调用;
123.s34、第一操作系统发送数据请求的事件触发追踪探针;
124.s35、追踪探针对发送请求阶段进行追踪;
125.s36、追踪探针向第一操作系统进行处理返回;
126.s37、第一操作系统向服务消费者进行系统调用返回;
127.s38、服务提供者读网络请求数据系统调用;
128.s39、第二操作系统接收数据请求的事件触发追踪探针;
129.s310、追踪探针对接收请求阶段进行追踪;
130.s311、追踪探针向第二操作系统进行处理返回;
131.s312、第二操作系统向服务提供者进行系统调用返回;
132.s313、服务提供者进行内部处理;
133.s314、服务提供者写网络应答数据系统调用;
134.s315、第二操作系统发送数据应答的事件触发追踪探针;
135.s316、追踪探针对发送应答阶段进行追踪;
136.s317、追踪探针向第二操作系统进行处理返回;
137.s318、第二操作系统向服务提供者进行系统调用返回;
138.s319、服务消费者读网络应答数据系统调用;
139.s320、第一操作系统接收数据应答的事件触发追踪探针;
140.s321、追踪探针对接收数应答阶段进行追踪;
141.s322、追踪探针向第一操作系统进行处理返回;
142.s323、第一操作系统向服务消费者进行系统调用返回;
143.s324、服务消费者进行内部处理;
144.s325、服务消费者对用户进行业务应答。
145.这里,在用户向与应用a同等角色的接入网关发起业务请求之后,应用a可以基于业务请求进行内部处理,以确定自身作为服务消费者需要调用的服务提供者以及服务提供者对应的服务,来实现与业务请求对应的业务应答。具体的,应用a在将相关的业务信息打包后,可以调用第一操作系统的写网络请求数据系统调用操作来进行请求的发送。而恰在相应调用返回之时,可以触发追踪探针生效,记录下客户端发送请求阶段的链路元数据。同样,当服务提供者调用对应的读网络请求数据系统调用接收请求时,也会触发追踪探针记录服务端接收请求阶段的链路元数据。后续的服务端发送应答阶段、客户端接收应答阶段追踪探针被触发进行链路元数据的记录也是同样类似的过程,在此不再详细赘述。
146.在经历上述流程后,在服务消费者向用户返回业务应答的同时,可以完成一次应用调用链路的追踪。其最终呈现结果可以由在上述4个阶段(发送请求阶段、接收请求阶段、发送应答阶段、接收应答阶段)中不断采集到的两两配对的链路元数据还原成的一次次完整请求应答调用过程所组成。以应用c作为服务提供者的两条链路元数据为例,链路元数据的结构可以如下表1所示。
147.表1
[0148][0149][0150]
如表1所示,一条链路元数据可以是magpie请求(req)的接收(rcv),另一条链路元数据可以是应答(rsp)的发送(sed)。两条链路元数据之间可以通过本地套接字标识(192.168.xxx.x3:xxxx4)、对端套接字标识(192.168.xxx.x2:xxxx2)、终端服务名称(service_c:1.0)和请求序列号(2302)这4维信息建立联系。同理,来自3个不同应用的8条链路追踪记录可以通过同一个traceid(x)关联起来,进而最终构建得到如图4所示的调用链路的追踪示意图。从而实现本技术实施例中的无侵入链路追踪。
[0151]
由此,通过将追踪链路部署在操作系统中,而不是目标应用(包括第一应用和第二应用)中,使开发人员无需引入埋点sdk或者lib库,也无需编写除业务逻辑之外的冗余调用链路记录代码即可进行调用链路追踪。并且,在开发人员部署目标应用时,也无需通过添加启动参数植入任何代理插件即可进行调用链路追踪。。另外,由于追踪探针可以是systemtap脚本,基于systemtap的特性,无需通过目标应用重启等方式即可使追踪程序挂载生效。因此,通过本技术实施例,能够实现追踪探针的安全无感接入。无论是对应用还是
开发人员,都是完全无感的。
[0152]
另外,由于相应的调用链路追踪程序(追踪探针)最终是被直接编译成了操作系统内核模块,加之自身所实现的功能足够简洁清晰明了,且后续也将一直是内核态运行,所以相较于其他方式,只有极低的额外开销,同时对目标应用的性能损耗也是最低的。
[0153]
再者,目标应用在启动前不必检查相应追踪程序是否已就绪。且追踪程序既可以提前编译部署,也可以在目标应用运行过程中再临时加载生效。当然,在任何需要的时候,亦可灵活操作追踪程序的卸载停用和重载更新。追踪探针与目标应用两者之间完全可以是不同的生命周期管理策略。
[0154]
最后,由于链路追踪是通过无侵入方式实现,因此不必关心应用内部的编程语言和框架组件等构建环境。因此,本技术实施例具有极强的通用性,能够省略各个应用独自改造和接入的过程,进而能够大幅缩减人力和时间成本。
[0155]
基于上述实施例提供的调用链路追踪方法,相应地,本技术还提供了调用链路追踪装置的具体实现方式。请参见以下实施例。
[0156]
如图5所示,本技术实施例提供的调用链路追踪装置500包括以下模块:
[0157]
第一获取模块510,用于在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,第一电子设备为安装有第一应用的电子设备,第一操作系统为第一电子设备中的操作系统;
[0158]
第二获取模块520,用于利用第二操作系统中的第二追踪探针从第二电子设备中获取服务调用过程对应的第二服务调用信息,所述二电子设备为安装有第二应用的电子设备,第二操作系统为第二电子设备中的操作系统;
[0159]
生成模块530,用于根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路。
[0160]
下面对上述调用链路追踪装置500进行详细说明,具体如下所示:
[0161]
在其中一些实施例中,第一获取模块510具体可以包括:
[0162]
第一获取子模块,用于在第一应用调用第一操作系统向第二应用发送数据请求的过程中,利用第一追踪探针从第一电子设备中获取与发送数据请求对应的第一服务调用信息;
[0163]
第二获取子模块,用于在第一应用调用第一操作系统接收第二应用发送的数据应答的过程中,利用第一追踪探针从第一电子设备中获取与接收数据应答对应的第一服务调用信息。
[0164]
在其中一些实施例中,第二获取模块520具体可以包括:
[0165]
第三获取子模块,用于在第二应用调用第二操作系统接收第一应用发送的数据请求的过程中,利用第二追踪探针从第二电子设备中获取与接收数据请求对应的第二服务调用信息;
[0166]
第四获取子模块,用于在第二应用调用第二操作系统向第一应用发送数据应答的过程中,利用第二追踪探针从第二电子设备中获取与发送数据应答对应的第二服务调用信息。
[0167]
在其中一些实施例中,第一获取子模块具体可以包括:
[0168]
获取单元,用于在第一应用调用第一操作系统向第二应用发送数据请求之后,且第一操作系统向第一应用返回与数据请求对应的发送结果之前,利用第一追踪探针从第一电子设备中获取与发送数据请求对应的第一服务调用信息。
[0169]
在其中一些实施例中,第一服务调用信息包括目标通信信息和通信环境信息,目标通信信息为通信报文中与服务调用过程相关的信息,通信环境信息包括第一电子设备的环境信息和第二电子设备的环境信息。
[0170]
基于此,第一获取模块510具体还可以包括:
[0171]
调用子模块,用于利用第一追踪探针调用第一操作系统中的目标函数,目标函数包括系统调用层的入口函数和网络协议栈的入口函数中的至少一个;
[0172]
第五获取子模块,用于通过目标函数从所第一电子设备中获取与服务调用过程对应的通信报文和通信环境信息;
[0173]
提取子模块,用于从通信报文中提取目标通信信息。
[0174]
在其中一些实施例中,提取子模块具体可以包括:
[0175]
第一提取单元,用于从通信报文中提取目标参数;
[0176]
确定单元,用于根据目标参数的值与应用协议之间的对应关系确定与通信报文对应的目标应用协议;
[0177]
第二提取单元,用于基于目标应用协议,从通信报文中提取目标通信信息。
[0178]
在其中一些实施例中,目标通信信息包括应用协议的名称、请求/应答标识、发送/接收标识、终端服务名称、请求序列号和追踪标识。
[0179]
在其中一些实施例中,第一服务调用信息包括第一追踪标识,第二服务调用信息包括第二追踪标识。基于此,生成模块530具体可以包括:
[0180]
生成子模块,用于在第一追踪标识和第二追踪标识相同的情况下,根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路。
[0181]
在本技术实施例的调用链路追踪装置中,由于第一追踪探针位于第一操作系统中而未位于第一应用中,且第二追踪探针位于第二操作系统中而未位于第二应用中,因此,通过在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,以及利用第二操作系统中的第二追踪探针从第二电子设备中获取与服务调用过程对应的第二服务调用信息,能够在不侵入第一应用和第二应用的前提下获取与服务调用过程对应的服务调用信息。也即,通过将追踪探针编译为操作系统的内核模块,进而加载生效,使得获取服务调用信息的过程不会向第一应用和第二应用引入未知的风险,从而能够保证服务调用的安全性和可靠性。如此,通过根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路,能够在保证服务调用的安全性和可靠性的前提下进行调用链路追踪。
[0182]
基于上述实施例提供的调用链路追踪方法,本技术实施例还提供了电子设备的具体实施方式。图6示出了本技术实施例提供的电子设备600示意图。
[0183]
电子设备600可以包括处理器610以及存储有计算机程序指令的存储器620。
[0184]
具体地,上述处理器610可以包括中央处理器(cpu),或者特定集成电路(application specific integrated circuit,asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
[0185]
存储器620可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器620可包括硬盘驱动器(hard disk drive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器620可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器620可在综合网关容灾设备的内部或外部。在特定实施例中,存储器620是非易失性固态存储器。
[0186]
存储器可包括只读存储器(rom),随机存取存储器(ram),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本技术的第一方面的方法所描述的操作。
[0187]
处理器610通过读取并执行存储器620中存储的计算机程序指令,以实现上述实施例中的任意一种调用链路追踪方法。
[0188]
在一个示例中,电子设备600还可包括通信接口630和总线640。其中,如图6所示,处理器610、存储器620、通信接口630通过总线640连接并完成相互间的通信。
[0189]
通信接口630,主要用于实现本技术实施例中各模块、装置、单元和/或设备之间的通信。
[0190]
总线640包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线640可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
[0191]
示例性的,电子设备600可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等。
[0192]
该电子设备可以执行本技术实施例中的调用链路追踪方法,从而实现结合图2、图3和图5描述的调用链路追踪方法和装置。
[0193]
另外,结合上述实施例中的调用链路追踪方法,本技术实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种调用链路追踪方法。
[0194]
需要明确的是,本技术并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本技术的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本技术的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
[0195]
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插
件、功能卡等等。当以软件方式实现时,本技术的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
[0196]
还需要说明的是,本技术中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本技术不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
[0197]
上面参考根据本技术的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本技术的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
[0198]
以上所述,仅为本技术的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。

技术特征:
1.一种调用链路追踪方法,其特征在于,包括:在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,所述第一电子设备为安装有所述第一应用的电子设备,所述第一操作系统为所述第一电子设备中的操作系统;利用第二操作系统中的第二追踪探针从第二电子设备中获取与所述服务调用过程对应的第二服务调用信息,所述第二电子设备为安装有所述第二应用的电子设备,所述第二操作系统为所述第二电子设备中的操作系统;根据所述第一服务调用信息和所述第二服务调用信息生成所述第一应用和所述第二应用之间的调用链路。2.根据权利要求1所述的方法,其特征在于,所述在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从所述第一电子设备中获取与服务调用过程对应的第一服务调用信息,包括:在所述第一应用调用所述第一操作系统向所述第二应用发送数据请求的过程中,利用所述第一追踪探针从所述第一电子设备中获取与发送所述数据请求对应的第一服务调用信息;在所述第一应用调用所述第一操作系统接收所述第二应用发送的数据应答的过程中,利用所述第一追踪探针从所述第一电子设备中获取与接收所述数据应答对应的第一服务调用信息。3.根据权利要求1所述的方法,其特征在于,所述利用第二操作系统中的第二追踪探针从所述第二电子设备中获取与所述服务调用过程对应的第二服务调用信息,包括:在所述第二应用调用所述第二操作系统接收所述第一应用发送的数据请求的过程中,利用所述第二追踪探针从所述第二电子设备中获取与接收所述数据请求对应的第二服务调用信息;在所述第二应用调用所述第二操作系统向所述第一应用发送数据应答的过程中,利用所述第二追踪探针从所述第二电子设备中获取与发送所述数据应答对应的第二服务调用信息。4.根据权利要求2所述的方法,其特征在于,所述在所述第一应用调用所述第一操作系统向所述第二应用发送数据请求的过程中,利用所述第一追踪探针从所述第一电子设备中获取与发送所述数据请求对应的第一服务调用信息,包括:在所述第一应用调用所述第一操作系统向所述第二应用发送所述数据请求之后,且所述第一操作系统向所述第一应用返回与所述数据请求对应的发送结果之前,利用所述第一追踪探针从所述第一电子设备中获取与发送所述数据请求对应的第一服务调用信息。5.根据权利要求1所述的方法,其特征在于,所述第一服务调用信息包括目标通信信息和通信环境信息,所述目标通信信息为通信报文中与所述服务调用过程相关的信息,所述通信环境信息包括所述第一电子设备的环境信息和所述第二电子设备的环境信息;所述利用第一操作系统中的第一追踪探针从所述第一电子设备中获取与服务调用过程对应的第一服务调用信息,包括:利用所述第一追踪探针调用所述第一操作系统中的目标函数,所述目标函数包括系统调用层的入口函数和网络协议栈的入口函数中的至少一个;
通过所述目标函数从所述第一电子设备中获取与所述服务调用过程对应的通信报文和通信环境信息;从所述通信报文中提取所述目标通信信息。6.根据权利要求5所述的方法,其特征在于,所述从所述通信报文中提取所述目标通信信息,包括:从所述通信报文中提取目标参数;根据所述目标参数的值与应用协议之间的对应关系确定与所述通信报文对应的目标应用协议;基于所述目标应用协议,从所述通信报文中提取所述目标通信信息。7.根据权利要求5所述的方法,其特征在于,所述目标通信信息包括应用协议的名称、请求/应答标识、发送/接收标识、终端服务名称、请求序列号和追踪标识。8.根据权利要求1所述的方法,其特征在于,所述第一服务调用信息包括第一追踪标识,所述第二服务调用信息包括第二追踪标识;所述根据所述第一服务调用信息和所述第二服务调用信息生成所述第一应用和所述第二应用之间的调用链路,包括:在所述第一追踪标识和所述第二追踪标识相同的情况下,根据所述第一服务调用信息和所述第二服务调用信息生成所述第一应用和所述第二应用之间的调用链路。9.一种调用链路追踪装置,其特征在于,所述装置包括:第一获取模块,用于在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,所述第一电子设备为安装有所述第一应用的电子设备,所述第一操作系统为所述第一电子设备中的操作系统;第二获取模块,用于利用第二操作系统中的第二追踪探针从第二电子设备中获取与所述服务调用过程对应的第二服务调用信息,所述第二电子设备为安装有所述第二应用的电子设备,所述第二操作系统为所述第二电子设备中的操作系统;生成模块,用于根据所述第一服务调用信息和所述第二服务调用信息生成所述第一应用和所述第二应用之间的调用链路。10.一种电子设备,其特征在于,所述电子设备包括:处理器以及存储有计算机程序指令的存储器;所述处理器执行所述计算机程序指令时实现如权利要求1-8任意一项所述的调用链路追踪方法。11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-8任意一项所述的调用链路追踪方法。12.一种计算机程序产品,其特征在于,所述计算机程序产品中的指令由电子设备的处理器执行时,使得所述电子设备执行如权利要求1-8任意一项所述的调用链路追踪方法。

技术总结
本申请公开了一种调用链路追踪方法、装置、设备及计算机可读存储介质。其中,该方法包括:在第一应用调用第二应用提供的服务的过程中,利用第一操作系统中的第一追踪探针从第一电子设备中获取与服务调用过程对应的第一服务调用信息,第一电子设备为安装有第一应用的电子设备,第一操作系统为第一电子设备中的操作系统;利用第二操作系统中的第二追踪探针从第二电子设备中获取与所述服务调用过程对应的第二服务调用信息;根据第一服务调用信息和第二服务调用信息生成第一应用和第二应用之间的调用链路。根据本申请实施例的调用链路追踪方法,能够在保证服务调用的安全性和可靠性的前提下进行调用链路追踪。的前提下进行调用链路追踪。的前提下进行调用链路追踪。


技术研发人员:翟威 涂晓军 徐竹 王荣海 刘旭生
受保护的技术使用者:中国银联股份有限公司
技术研发日:2023.06.25
技术公布日:2023/10/8
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐