您的当前位置:首页正文

全链路跟踪方法、装置、存储介质以及服务器[发明专利]

来源:爱go旅游网
(19)中华人民共和国国家知识产权局

(12)发明专利申请

(10)申请公布号 CN 112311811 A(43)申请公布日 2021.02.02

(21)申请号 202011283184.9(22)申请日 2020.11.16

(71)申请人 深圳市欢太科技有限公司

地址 518057 广东省深圳市南山区粤海街

道高新南一道13号赋安科技大厦B座207-2

申请人 OPPO广东移动通信有限公司(72)发明人 何良万 

(74)专利代理机构 北京恒博知识产权代理有限

公司 11528

代理人 范胜祥(51)Int.Cl.

H04L 29/06(2006.01)H04L 29/08(2006.01)G06F 9/54(2006.01)

权利要求书2页 说明书13页 附图5页

(54)发明名称

全链路跟踪方法、装置、存储介质以及服务器

(57)摘要

本申请公开了一种全链路跟踪方法、装置、存储介质以及服务器,涉及通信技术领域。首先记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;然后当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间;最后将第二时间作为第一调用请求对应的业务逻辑的处理时间。由于调用方和服务方采用不同的调用方法发送以及回调请求,因此当调用方从服务方接收到采用第二调用方法返回的第一回调请求时,可以确定服务方已经完CN 112311811 A成对业务逻辑的处理过程,此时可以通过调用全链路跟踪服务获取到服务方处理业务逻辑的处理时间,可以有效分辨出服务方处理完业务逻辑的时间点。

CN 112311811 A

权 利 要 求 书

1/2页

1.一种全链路跟踪方法,其特征在于,所述方法包括:

记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;

当监测到所述调用方接收到所述服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理所述第一时间以得到第二时间,其中,所述第一回调请求为所述服务方处理完所述第一调用请求对应的业务逻辑之后,向所述调用方返回的请求;

将所述第二时间作为所述第一调用请求对应的业务逻辑的处理时间。2.根据权利要求1所述的方法,其特征在于,所述记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间,包括:

通过第一线程记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;

通过所述第一线程保存所述第一时间至调用参数中。3.根据权利要求2所述的方法,其特征在于,所述方法包括:

当监测到所述调用方采用异步调用模型进行远程调用的请求时,所述记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间之后,还包括:

通过所述第一线程记录所述调用方接收到第二返回请求的第三时间,所述第二返回请求为所述服务方在接收到所述第一调用请求后,采用所述第一调用方法返回所述调用方的请求。

4.根据权利要求2所述的方法,其特征在于,所述调用全链路跟踪服务处理所述第一时间以得到第二时间,包括:

通过第二线程调用全链路跟踪服务进行打点,以获取所述调用方接收到所述服务方采用第二调用方法返回的第一回调请求时的第四时间;

从所述调用参数中获取所述第一时间,调用所述全链路跟踪服务计算所述第四时间与所述第一时间之间差值,将所述差值作为第二时间。

5.根据权利要求4所述的方法,其特征在于,所述通过第二线程调用全链路跟踪服务进行打点,包括:

通过第二线程调用全链路跟踪服务进行正常打点或者异常打点。6.根据权利要求1所述的方法,其特征在于,所述调用方和所述服务方进行远程调用时基于远程过程调用(Remote Procedure Call,RPC)框架,且所述RPC框架至少包括Dubbo框架。

7.根据权利要求6所述的方法,其特征在于,当所述RPC框架为Dubbo框架时,所述第一调用方法为invoke方法,所述第二调用方法为onResponse方法。

8.一种全链路跟踪装置,其特征在于,所述装置包括:第一调用模块,用于记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;

第二回调模块,用于当监测到所述调用方接收到所述服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理所述第一时间以得到第二时间,其中,所述第一回调请求为所述服务方处理完所述第一调用请求对应的业务逻辑之后,向所述调用方返回的请求;

时间处理模块,用于将所述第二时间作为所述第一调用请求对应的业务逻辑的处理时

2

CN 112311811 A

权 利 要 求 书

2/2页

间。

9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项的所述方法的步骤。

10.一种服务器,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1~7任一项所述方法的步骤。

3

CN 112311811 A

说 明 书

全链路跟踪方法、装置、存储介质以及服务器

1/13页

技术领域

[0001]本申请涉及通信技术领域,尤其涉及一种全链路跟踪方法、装置、存储介质以及服务器。

背景技术

[0002]随着科学技术的发展,计算机技术和网络技术得到迅速进步,其中远程过程调用(Remote Procedure Call,RPC)是通信中的重要一环,因此关于RPC框架的开发和维护成为本领域技术人员研究的重点之一。[0003]在相关技术中,RPC框架使用较多的是Dubbo,Dubbo最初是阿里巴巴开源的一个使用JAVA语言编写的高性能RPC框架,从2.7版本开始交由Apache社区开发与维护。在Dubbo中一般采用Filter接口的invoke方法,来打点实现全链路跟踪功能,但是在Dubbo的异步调用中,由于在调用方发起invoke调用之后,服务方会立刻输出invoke返回,然后服务方才会进行业务处理,因此直接通过invoke返回与invoke调用的时间差,并不能得到服务方进行业务处理的时间,那么在Dubbo的异步调用中使用打点全链路跟踪将会失效。发明内容

[0004]本申请提供一种全链路跟踪方法、装置、存储介质以及服务器,可以解决相关技术中RPC框架的异步调用中使用打点全链路跟踪将会失效,不能得到服务方进行业务处理的时间的技术问题。[0005]第一方面,本申请实施例提供一种全链路跟踪方法,该方法包括:

[0006]记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;[0007]当监测到所述调用方接收到所述服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理所述第一时间以得到第二时间,其中,所述第一回调请求为所述服务方处理完所述第一调用请求对应的业务逻辑之后,向所述调用方返回的请求;[0008]将所述第二时间作为所述第一调用请求对应的业务逻辑的处理时间。[0009]可选地,所述记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间,包括:通过第一线程记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;通过所述第一线程保存所述第一时间至调用参数中。[0010]可选地,当监测到所述调用方采用异步调用模型进行远程调用的请求时;所述记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间之后,还包括:通过所述第一线程记录所述调用方接收到第二返回请求的第三时间,所述第二返回请求为所述服务方在接收到所述第一调用请求后,采用所述第一调用方法返回所述调用方的请求。

[0011]可选地,所述调用全链路跟踪服务处理所述第一时间以得到第二时间,包括:通过第二线程调用全链路跟踪服务进行打点,以获取所述调用方接收到所述服务方采用第二调用方法返回的第一回调请求时的第四时间;从所述调用参数中获取所述第一时间,调用所

4

CN 112311811 A

说 明 书

2/13页

述全链路跟踪服务计算所述第四时间与所述第一时间之间差值,将所述差值作为第二时间。

[0012]可选地,所述通过第二线程调用全链路跟踪服务进行打点,包括:通过第二线程调用全链路跟踪服务进行正常打点或者异常打点。[0013]可选地,所述调用方和所述服务方进行远程调用时基于远程过程调用(Remote Procedure Call,RPC)框架,且所述RPC框架至少包括Dubbo框架。[0014]可选地,当所述RPC框架为Dubbo框架时,所述第一调用方法为invoke方法,所述第二调用方法为onResponse方法。[0015]第二方面,本申请实施例提供一种全链路跟踪装置,该装置包括:[0016]第一调用模块,用于记录所述调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;

[0017]第二回调模块,用于当监测到所述调用方接收到所述服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理所述第一时间以得到第二时间,其中,所述第一回调请求为所述服务方处理完所述第一调用请求对应的业务逻辑之后,向所述调用方返回的请求;

[0018]时间处理模块,用于将所述第二时间作为所述第一调用请求对应的业务逻辑的处理时间。

[0019]第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法的步骤。[0020]第四方面,本申请实施例提供一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法的步骤。[0021]本申请一些实施例提供的技术方案带来的有益效果至少包括:[0022]本申请提供一种全链路跟踪方法,首先记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;然后当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间,其中,第一回调请求为服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回的请求;最后将第二时间作为第一调用请求对应的业务逻辑的处理时间。由于调用方和服务方采用不同的调用方法发送以及回调请求,因此当调用方从服务方接收到采用第二调用方法返回的第一回调请求时,可以确定服务方已经完成对业务逻辑的处理过程,此时可以通过调用全链路跟踪服务获取到服务方处理业务逻辑的处理时间,相较于现有技术中调用方和服务方采用同一调用方法,可以有效分辨出服务方处理完业务逻辑的时间点,实现了通过全链路跟踪计算业务逻辑的处理时间。

附图说明

[0023]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

[0024]图1为本申请实施例提供的一种全链路跟踪方法的示例性系统架构图;

5

CN 112311811 A[0025][0026][0027][0028][0029][0030][0031][0032]

说 明 书

3/13页

图2为本申请实施例提供的一种全链路跟踪方法的系统交互图;图3为本申请另一实施例提供的一种全链路跟踪方法的流程示意图;图4为本申请另一实施例提供的同步调用模型的结构示意图;图5为本申请另一实施例提供的异步调用模型的结构示意图;

图6为本申请另一实施例提供的一种全链路跟踪方法的流程示意图;图7为本申请另一实施例提供的一种全链路跟踪装置的结构示意图;图8为本申请另一实施例提供的一种全链路跟踪装置的结构示意图;图9为本申请实施例提供了一种服务器的结构示意图。

具体实施方式

[0033]为使得本申请的特征和优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。[0034]下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

[0035]图1为本申请实施例提供的一种全链路跟踪方法的示例性系统架构图。[0036]如图1所示,系统架构可以包括至少一个调用方110、一个服务方120以及一个服务器130,其中调用方110和服务方120设置于服务器中,调用方110和服务方120可以是一个程序(服务)或者一个实体模块,调用方110和服务方120在服务器130内可以相互调用或者传输信息。

[0037]服务器130可以是提供各种服务的业务服务器。需要说明的是,服务器130可以是硬件,也可以是软件。当服务器130为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器130为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。[0038]应理解,图1中的调用方、服务方和服务器的数目仅是示意性的。根据实现需要,可以是任意数量的调用方、服务方和服务器。请参阅图2,图2为本申请实施例提供的一种全链路跟踪方法的系统交互图,下面将结合图1和图2介绍一种全链路跟踪方法中系统交互过程。

[0039]S101、记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间。[0040]可选地,记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间,包括:通过第一线程记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;通过第一线程保存第一时间至调用参数中。[0041]可选地,当监测到调用方采用异步调用模型进行远程调用的请求时,记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间之后,还包括:通过第一线程记录调用方接收到第二返回请求的第三时间,第二返回请求为服务方在接收到第一调用请求后,采用第一调用方法返回调用方的请求。

6

CN 112311811 A[0042]

说 明 书

4/13页

S102、服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回第一回调

请求。

S103、当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,

调用全链路跟踪服务处理第一时间以得到第二时间。[0044]可选地,调用全链路跟踪服务处理第一时间以得到第二时间,包括:通过第二线程调用全链路跟踪服务进行打点,以获取调用方接收到服务方采用第二调用方法返回的第一回调请求时的第四时间;从调用参数中获取第一时间,调用全链路跟踪服务计算第四时间与第一时间之间差值,将差值作为第二时间。[0045]其中,通过第二线程调用全链路跟踪服务进行打点,包括:通过第二线程调用全链路跟踪服务进行正常打点或者异常打点。[0046]S104、将第二时间作为第一调用请求对应的业务逻辑的处理时间。[0047]其中,调用方和服务方进行远程调用时基于远程过程调用(Remote Procedure Call,RPC)框架,且RPC框架至少包括Dubbo框架。[0048]可选地,当RPC框架为Dubbo框架时,第一调用方法为invoke方法,第二调用方法为onResponse方法。

[0049]在本申请实施例中,首先记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;然后当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间,其中,第一回调请求为服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回的请求;最后将第二时间作为第一调用请求对应的业务逻辑的处理时间。由于调用方和服务方采用不同的调用方法发送以及回调请求,因此当调用方从服务方接收到采用第二调用方法返回的第一回调请求时,可以确定服务方已经完成对业务逻辑的处理过程,此时可以通过调用全链路跟踪服务获取到服务方处理业务逻辑的处理时间,相较于现有技术中调用方和服务方采用同一调用方法,可以有效分辨出服务方处理完业务逻辑的时间点,实现了通过全链路跟踪计算业务逻辑的处理时间。

[0050]请参阅图3,图3为本申请另一实施例提供的一种全链路跟踪方法的流程示意图。[0051]如图3所示,该方法包括:[0052]S301、记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间。[0053]可以理解的,在本申请实施例中,调用方和服务方进行远程调用时,可以基于远程过程调用(Remote Procedure Call,RPC)框架,且RPC框架至少包括Dubbo框架,由于在相关技术中,RPC框架使用较多的是Dubbo框架,因此为了描述方便,本申请实施例以RPC框架为Dubbo框架为例,介绍全链路跟踪方法的实施过程。[0054]请参阅图4,图4为本申请另一实施例提供的同步调用模型的结构示意图。[0055]如图4所示,在相关技术中当调用方110需要采用同步调用模型从服务方120调用数据时,调用方110会采用第一调用方法先向服务方120发送第一调用请求,例如,当第一调用方法为invoke方法时,调用方110会采用invoke方法先向服务方120发送第一invoke调用请求410,此时调用方110会暂停执行其他操作,等待服务方120返回数据,当服务方120接收到第一invoke调用请求410后,会对第一invoke调用请求410对应的业务逻辑进行处理,并采用invoke方法向调用方110返回第一invoke返回请求420,以使得调用方110确定服务方

7

[0043]

CN 112311811 A

说 明 书

5/13页

120已经完成对业务逻辑的处理过程,当调用方110接收到服务方120采用invoke方法向调用方110返回第一invoke返回请求420后,通过调用全链路跟踪服务打点,以计算服务方120对业务逻辑的处理时间,也即计算第一invoke返回请求420与第一invoke调用请求410之间的时间差值,将该时间差值作为服务方120对业务逻辑的处理时间。[0056]具体的,上述过程可以通过调用全链路跟踪服务打点,以计算服务方对业务逻辑的处理时间,具体实施过程可以是,采用Filter接口的invoke方法来打点实现全链路跟踪功能,核心代码如下:

[0057]

请参阅图5,图5为本申请另一实施例提供的异步调用模型的结构示意图。[0059]如图5所示,在相关技术中当调用方110需要采用异步调用模型从服务方120调用数据时,调用方110会采用第一调用方法先向服务方120发送第一调用请求,例如,当第一调用方法为和invoke方法时,调用方110会采用invoke方法先向服务方120发送第一invoke调用请求510,此时服务方120接收到第一invoke调用请求510后,服务方120会立即向调用方110返回第一invoke返回请求520,且调用方110不会暂停执行其他操作,也即调用方110不会等待服务方120返回对业务逻辑的处理结果,然后服务方120会对第一invoke调用请求510对应的业务逻辑进行处理。此时如果继续采用和上述同步调用模型中,计算第一invoke返回请求520与第一invoke调用请求510之间的时间差值,将该时间差值作为服务方120对业务逻辑的处理时间,此时得到的业务逻辑的处理时间将是错误的,因为服务方120在接收到第一invoke调用请求510后,服务方120会立即向调用方110返回第一invoke返回请求

8

[0058]

CN 112311811 A

说 明 书

6/13页

520,然后服务方120还会继续对业务逻辑进行处理,服务方120在对业务逻辑进行处理完之后,服务方120向调用方返回第一回调请求530,因此调用方110接收到第一invoke返回请求520,并不代表服务方120已经对业务逻辑完成了处理。因此有必要提出一种全链路跟踪方法,以解决调用方110与服务方120之间进行远程调用时,特别是调用方110与服务方120之间基于异步调用时进行远程调用时,不能通过全链路跟踪计算服务方120处理业务逻辑时间的技术问题。

[0060]在本申请实施例中,当终端或者客户端在执行某一操作过程中,可能需要与服务器进行交互以获取某些数据,例如,当终端中的某一应用程序,在验证用户身份时,需要从服务器获取用户的身份数据,因此服务器针对终端或者客户端需要的数据信息而执行的操作称之为业务逻辑,此时终端或者客户端可以与服务器中的调用方建立连接,终端或者客户端可以向调用方发送数据请求,当调用方接收到终端或者客户端发送的数据请求之后,可以先向服务器中的中央处理器发送代表调用方进行远程调用的请求执行请求,以获取中央处理器基于该执行请求下达的允许调用方进行远程调用的执行命令,调用方基于该执行命令进行远程调用,因此只要服务器监测到上述过程中的任一一个或者多个参数时,例如,服务器监测到“执行命令”,那么代表服务器监测到调用方在进行远程调用。[0061]在本申请实施例中,调用方在进行远程调用时,可以采用第一调用方法将第一调用请求发送到服务方,其中第一调用请求携带有终端或者客户端需要的数据信息,也即服务器根据第一调用请求可以获取服务器需要处理的业务逻辑。服务器还可以记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间,当调用方接收到调用方发送的第一调用请求之后,可以对第一调用请求对应的业务逻辑进行处理,因此第一时间可以认为是服务方开始对业务逻辑进行处理的初始时间。[0062]S302、当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间,其中,第一回调请求为服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回的请求。[0063]当服务方接收到调用方发送的第一调用请求之后,可以对第一调用请求对应的业务逻辑进行处理,当对业务逻辑处理完成之后,服务方可以采用第二调用方法向调用方返回第一回调请求,其中第二调用方法为与第一调用方法不同,例如,当RPC框架为Dubbo框架时,第一调用方法为invoke方法,那么第二调用方法可以为onResponse方法。当调用方接收到第一回调请求时,代表服务方已经完成对业务逻辑的处理过程,因此在本申请实施例中,服务器还可以监测调用方是否接收到服务方采用第二调用方法返回的第一回调请求,当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间。其中全链路跟踪服务为一种通过在调用方以及服务方之间各执行步骤进行打点标记,以计算调用方以及服务方之间各执行步骤处理时间的服务,但是全链路跟踪服务必须基于正确的步骤打点位置,才能获取到各执行步骤具体的处理时间。

[0064]具体的,当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,可以调用全链路跟踪服务获取调用方接收第一回调请求时的第四时间,那么第四时间也即服务方对业务逻辑处理完成之后的结束时间,将第四时间与第一时间之间的差值作为第二时间,那么第二时间就可以认为是服务方处理完整处理完业务逻辑所使用的时间。

9

CN 112311811 A[0065]

说 明 书

7/13页

S303、将第二时间作为第一调用请求对应的业务逻辑的处理时间。

[0066]由于第二时间是服务方完成业务逻辑处理之后,调用全链路跟踪服务处理第一时间后得到的时间,且第一时间为是服务方开始对业务逻辑进行处理的初始时间,因此第二时间可以认为是服务方处理完整处理完业务逻辑所使用的时间,那么可以将第二时间作为第一调用请求对应的业务逻辑的处理时间。[0067]在本申请实施例中,首先记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;然后当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间,其中,第一回调请求为服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回的请求;最后将第二时间作为第一调用请求对应的业务逻辑的处理时间。由于调用方和服务方采用不同的调用方法发送以及回调请求,因此当调用方从服务方接收到采用第二调用方法返回的第一回调请求时,可以确定服务方已经完成对业务逻辑的处理过程,此时可以通过调用全链路跟踪服务获取到服务方处理业务逻辑的处理时间,相较于现有技术中调用方和服务方采用同一调用方法,可以有效分辨出服务方处理完业务逻辑的时间点,实现了通过全链路跟踪计算业务逻辑的处理时间。

[0068]请参阅图6,图6为本申请另一实施例提供的一种全链路跟踪方法的流程示意图。[0069]如图6所示,该方法包括:[0070]S601、通过第一线程记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间。

[0071]在本申请实施例中,服务器可以先创建第一线程,以使得服务器可以通过第一线程记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间,其中关于记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间的详细描述,请参阅步骤S301中的详细记载。[0072]S602、通过第一线程保存第一时间至调用参数中。[0073]可选地,服务器还可以通过第一线程将第一时间保存至调用参数中,以便于后续全链路跟踪服务可以随时从调用参数中获取第一时间。[0074]可选地,由于调用方与服务方之间的远程调用,可以采用同步调用模型或者异步调用模型,因此当服务器监测到调用方采用异步调用模型进行远程调用的请求时,服务方在接收到调用方发送的第一调用请求之后,会立即向调用方返回第一返回请求,调用方可以继续执行其他操作,而不必等待服务方完成业务逻辑处理之后才能执行其他操作,实现调用方与服务方之间的异步调用。因此服务器记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间之后,还包括:通过第一线程记录调用方接收到第二返回请求的第三时间,第二返回请求为服务方在接收到第一调用请求后,采用第一调用方法返回调用方的请求。例如,当第一调用方法为和invoke方法时,调用方会采用invoke方法先向服务方发送第一调用请求也即第一invoke调用请求,此时服务方接收到第一invoke调用请求后,服务方会立即向调用方返回第一返回请求也即第一invoke返回请求,调用方可以不等待服务方返回业务逻辑的处理结果而继续执行其他操作。

[0075]其中通过第一线程记录调用方接收到第二返回请求的第三时间的目的是,便于后续全链路跟踪服务的调用,那么可以基于第三时间计算其他操作步骤的处理时间。

10

CN 112311811 A[0076]

说 明 书

8/13页

S603、当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,

通过第二线程调用全链路跟踪服务进行打点,以获取调用方接收到服务方采用第二调用方法返回的第一回调请求时的第四时间。

[0077]当服务方接收到调用方发送的第一调用请求之后,可以对第一调用请求对应的业务逻辑进行处理,当对业务逻辑处理完成之后,服务方可以采用第二调用方法向调用方返回第一回调请求,其中第二调用方法为与第一调用方法不同,例如,当RPC框架为Dubbo框架时,第一调用方法为invoke方法,那么第二调用方法可以为onResponse方法,那么此时第一回调请求可以是第一onResponse回调请求,当调用方接收到第一回调请求时,代表服务方已经完成对业务逻辑的处理过程。[0078]可选地,服务器还可以创建与第一线程完全独立的第二线程,并在监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,通过第二线程调用全链路跟踪服务进行打点,其中全链路跟踪服务进行打点也即对调用方接收到服务方采用第二调用方法返回的第一回调请求的这个时间点进行标记,以获取调用方接收到服务方采用第二调用方法返回的第一回调请求时的第四时间,第四时间也即服务方对业务逻辑处理完成之后的结束时间。

[0079]由于服务方与调用方之间的信息传输或者数据送达可能出现失败的情况,因此通过第二线程调用全链路跟踪服务进行打点,包括:通过第二线程调用全链路跟踪服务进行正常打点或者异常打点,其中正常打点是指,在服务方与调用方正确进行信息传输或者数据送达后,进行打点标记,那么最后得到业务逻辑的处理时间也即为正常处理业务逻辑所需时间;异常打点是指,在服务方与调用方进行信息传输或者数据送达出现异常后,进行打点标记,那么最后得到业务逻辑的处理时间也即为异常处理业务逻辑所需时间。[0080]S604、从调用参数中获取第一时间,调用全链路跟踪服务计算第四时间与第一时间之间差值,将差值作为第二时间。

[0081]由于第一时间为是服务方开始对业务逻辑进行处理的初始时间,第四时间也即服务方对业务逻辑处理完成之后的结束时间,将第四时间与第一时间车差值作为第二时间,那么第二时间就可以认为是服务方处理完整处理完业务逻辑所使用的时间。[0082]具体的,第一调用方法为invoke方法,第二调用方法可以为onResponse方法,那么本申请中全链路跟踪方法的核心代码如下:

11

CN 112311811 A

说 明 书

9/13页

[0083]

[0084]

[0085]

在本申请实施例中,通过完全独立的两个线程,也即第一线程和第二线程,对调用

方和服务方之间的远程调用进行监测,并采用两个不同的调用方法实现对异步调用中不同执行步骤进行打点标记,以获取服务方对业务逻辑的处理过程,可以精确计算出服务方对

12

CN 112311811 A

说 明 书

10/13页

业务逻辑的处理时间。

[0086]在本申请实施例中,首先记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;然后当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间,其中,第一回调请求为服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回的请求;最后将第二时间作为第一调用请求对应的业务逻辑的处理时间。由于调用方和服务方采用不同的调用方法发送以及回调请求,因此当调用方从服务方接收到采用第二调用方法返回的第一回调请求时,可以确定服务方已经完成对业务逻辑的处理过程,此时可以通过调用全链路跟踪服务获取到服务方处理业务逻辑的处理时间,相较于现有技术中调用方和服务方采用同一调用方法,可以有效分辨出服务方处理完业务逻辑的时间点,实现了通过全链路跟踪计算业务逻辑的处理时间。

[0087]请参阅图7,图7为本申请另一实施例提供的一种全链路跟踪装置的结构示意图。[0088]如图7所示,全链路跟踪装置700包括:[0089]第一调用模块710,用于记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间。

[0090]第二回调模块720,用于当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间,其中,第一回调请求为服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回的请求。[0091]时间处理模块730,用于将第二时间作为第一调用请求对应的业务逻辑的处理时间。

[0092]请参阅图8,图8为本申请另一实施例提供的一种全链路跟踪装置的结构示意图。[0093]如图8所示,全链路跟踪装置800包括:[0094]第一时间获取模块810,用于通过第一线程记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间。[0095]时间保存模块820,用于通过第一线程保存第一时间至调用参数中。[0096]可选地,当监测到调用方采用异步调用模型进行远程调用的请求时,记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间之后,还包括:通过第一线程记录调用方接收到第二返回请求的第三时间,第二返回请求为服务方在接收到第一调用请求后,采用第一调用方法返回调用方的请求。[0097]第四时间获取模块830,用于当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,通过第二线程调用全链路跟踪服务进行打点,以获取调用方接收到服务方采用第二调用方法返回的第一回调请求时的第四时间。[0098]第二时间获取模块840,用于从调用参数中获取第一时间,调用全链路跟踪服务计算第四时间与第一时间之间差值,将差值作为第二时间。[0099]可选地,通过第二线程调用全链路跟踪服务进行打点,包括:通过第二线程调用全链路跟踪服务进行正常打点或者异常打点。调用方和服务方进行远程调用时基于远程过程调用(Remote Procedure Call,RPC)框架,且RPC框架至少包括Dubbo框架。当RPC框架为Dubbo框架时,第一调用方法为invoke方法,第二调用方法为onResponse方法。[0100]在本申请实施例中,一种全链路跟踪装置包括:第一调用模块,用于记录调用方采

13

CN 112311811 A

说 明 书

11/13页

用第一调用方法将第一调用请求发送到服务方的第一时间;第二回调模块,用于当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间,其中,第一回调请求为服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回的请求;时间处理模块,用于将第二时间作为第一调用请求对应的业务逻辑的处理时间。由于调用方和服务方采用不同的调用方法发送以及回调请求,因此当调用方从服务方接收到采用第二调用方法返回的第一回调请求时,可以确定服务方已经完成对业务逻辑的处理过程,此时可以通过调用全链路跟踪服务获取到服务方处理业务逻辑的处理时间,相较于现有技术中调用方和服务方采用同一调用方法,可以有效分辨出服务方处理完业务逻辑的时间点,实现了通过全链路跟踪计算业务逻辑的处理时间。[0101]本申请实施例还提供了一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行如上述实施例中的任一项的方法的步骤。[0102]进一步地,请参见图9,图9为本申请实施例提供了一种服务器的结构示意图。如图9所示,服务器900可以包括:至少一个中央处理器901,至少一个网络接口904,用户接口903,存储器905,至少一个通信总线902。[0103]其中,通信总线902用于实现这些组件之间的连接通信。[0104]其中,用户接口903可以包括显示屏(Display),可选用户接口903还可以包括标准的有线接口、无线接口。[0105]其中,网络接口904可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。[0106]其中,中央处理器901可以包括一个或者多个处理核心。中央处理器901利用各种接口和线路连接整个服务器900内的各个部分,通过运行或执行存储在存储器905内的指令、程序、代码集或指令集,以及调用存储在存储器905内的数据,执行服务器900的各种功能和处理数据。可选的,中央处理器901可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。中央处理器901可集成中央中央处理器(Central Processing Unit,CPU)、图像中央处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到中央处理器901中,单独通过一块芯片进行实现。[0107]其中,存储器905可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器905包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器905可用于存储指令、程序、代码、代码集或指令集。存储器905可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器905可选的还可以是至少一个位于远离前述中央处理器901的存储装置。如图9所示,作为一种计算机存储介质的存储器905中可以包括操作系统、网络通信模块、用户接口模块以及全链路跟踪程序。[0108]在图9所示的服务器900中,用户接口903主要用于为用户提供输入的接口,获取用

14

CN 112311811 A

说 明 书

12/13页

户输入的数据;而中央处理器901可以用于调用存储器905中存储的全链路跟踪程序,并具体执行以下操作:

[0109]记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;[0110]当监测到调用方接收到服务方采用第二调用方法返回的第一回调请求时,调用全链路跟踪服务处理第一时间以得到第二时间,其中,第一回调请求为服务方处理完第一调用请求对应的业务逻辑之后,向调用方返回的请求;

[0111]将第二时间作为第一调用请求对应的业务逻辑的处理时间。

[0112]中央处理器901在执行记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间时,具体执行以下步骤:通过第一线程记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间;通过第一线程保存第一时间至调用参数中。[0113]当监测到调用方采用异步调用模型进行远程调用的请求时,中央处理器901在执行记录调用方采用第一调用方法将第一调用请求发送到服务方的第一时间之后,还具体执行以下步骤:通过第一线程记录调用方接收到第二返回请求的第三时间,第二返回请求为服务方在接收到第一调用请求后,采用第一调用方法返回调用方的请求。

[0114]中央处理器901在执行调用全链路跟踪服务处理第一时间以得到第二时间时,具体执行以下步骤:通过第二线程调用全链路跟踪服务进行打点,以获取调用方接收到服务方采用第二调用方法返回的第一回调请求时的第四时间;从调用参数中获取第一时间,调用全链路跟踪服务计算第四时间与第一时间之间差值,将差值作为第二时间。[0115]中央处理器901在执行通过第二线程调用全链路跟踪服务进行打点时,具体执行以下步骤通过第二线程调用全链路跟踪服务进行正常打点或者异常打点。[0116]可选地,调用方和服务方进行远程调用时基于远程过程调用(Remote Procedure Call,RPC)框架,且RPC框架至少包括Dubbo框架。[0117]可选地,当RPC框架为Dubbo框架时,第一调用方法为invoke方法,第二调用方法为onResponse方法。

[0118]在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

[0119]作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。[0120]另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

[0121]集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现

15

CN 112311811 A

说 明 书

13/13页

出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

[0122]需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。

[0123]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

[0124]以上为对本申请所提供的一种全链路跟踪方法、装置、存储介质以及服务器的描述,对于本领域的技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

16

CN 112311811 A

说 明 书 附 图

1/5页

图1

图2

17

CN 112311811 A

说 明 书 附 图

2/5页

图3

图4

18

CN 112311811 A

说 明 书 附 图

3/5页

图5

19

CN 112311811 A

说 明 书 附 图

4/5页

图6

图7

20

CN 112311811 A

说 明 书 附 图

5/5页

图8

图9

21

因篇幅问题不能全部显示,请点此查看更多更全内容