一种远程过程调用跟踪方法及装置与流程

文档序号:12182838阅读:166来源:国知局
一种远程过程调用跟踪方法及装置与流程

本发明实施例涉及RPC通信技术领域,尤其涉及一种远程过程调用跟踪方法及装置。



背景技术:

随着软件微服务架构的深入推广,基于Thrift框架(Thrift框架是一种开源的跨语言的RPC服务框架)的RPC(Remote Procedure Call,远程过程调用)通信被广泛使用。RPC是指计算机A上的进程,调用另外一台计算机B上的进程,其中计算机A上的调用进程被挂起,而计算机B上的被调用进程开始执行,当值返回给计算机A时,计算机A进程继续执行。在RPC通信过程中,如何跟踪微服务之间的RPC调用从而对微服务性能做出分析一直是业界难题。

现有技术中,对于微服务之间的远程过程调用跟踪方法通常为:在业务代码中打印输出RPC调用日志。本发明的发明人在研究本申请的过程中发现,现有远程过程调用跟踪方法存在以下不足:(1)、RPC调用跟踪不够准确方便,所有的业务代码都需要修改添加打印日志,对业务代码侵入性大;(2)、打印RPC调用日志格式不统一,不便于离线日志分析。



技术实现要素:

本发明实施例提供了一种远程过程调用跟踪方法及装置,旨在解决现有的远程过程调用跟踪方法存在的RPC调用跟踪不够准确方便、对业务代码侵入性大,以及打印日志格式不统一的技术问题。

为了解决以上提出的问题,本发明实施例采用的技术方案包括:

一种远程过程调用跟踪方法,包括:

对当前应用发起远程过程调用;

自动生成当前远程过程调用唯一的请求标识和调用标识;

将所述当前远程过程调用唯一的请求标识和调用标识传递至下一个远程过程调用。

本发明实施例采取的技术方案还包括:所述自动生成当前远程过程调用唯一的请求标识和调用标识还包括:自动记录当前远程过程调用的调用时间以及参数采样数据。

本发明实施例采取的技术方案还包括:所述自动生成当前远程过程调用唯一的请求标识和调用标识还包括:将上层远程过程调用的调用标识传递给当前远程过程调用。

本发明实施例采取的技术方案还包括:所述将当前远程过程调用唯一的请求标识和调用标识传递至下一个远程过程调用后还包括:自动收集远程过程调用在调用过程中产生的调用跟踪日志。

本发明实施例采取的技术方案还包括:所述调用跟踪日志包括远程过程调用的请求标识、调用标识、调用时间和参数采样数据。

本发明实施例采取的技术方案还包括:所述自动收集远程过程调用在调用过程中产生的调用跟踪日志还包括:将所收集的调用跟踪日志统一格式化输出。

本发明实施例采取的另一技术方案为:一种远程过程调用跟踪装置,包括:

调用发起模块:用于对当前应用发起远程过程调用;

代码生成模块:用于自动生成当前远程过程调用唯一的请求标识和调用标识;以及

将所述当前远程过程调用唯一的请求标识和调用标识传递至下一个远程过程调用。

本发明实施例采取的技术方案还包括:所述代码生成模块还用于:自动记录当前远程过程调用的调用时间以及参数采样数据。

本发明实施例采取的技术方案还包括:所述代码生成模块还用于将上层远程过程调用的调用标识传递给当前远程过程调用。

本发明实施例采取的技术方案还包括数据收集模块,所述数据收集模块用于自动收集远程过程调用在过程中产生的调用跟踪日志。

本发明实施例采取的技术方案还包括:所述调用跟踪日志包括远程过程调用的请求标识、调用标识、调用时间和参数采样数据。

本发明实施例采取的技术方案还包括数据输出模块,所述数据输出模块用于将所收集的调用跟踪日志统一格式化输出。远程过程调用跟踪方法远程过程调用跟踪装置。

与现有技术相比,本发明实施例的有益效果在于:本发明实施例的远程过程调用跟踪方法及装置在发起RPC调用时通过Thrift框架增加自动生成RPC调用的ReqID和RpcID,同时自动记录RPC调用的调用时间及参数采样数据,并将当前RPC调用的ReqID和RpcID透明传递至下一个RPC调用,从而对RPC调用方便准确地进行跟踪,实现对上层业务相关的调用完全透明跟踪,对业务代码无侵入。通过Thrift框架自动收集客户端和服务端在PRC调用过程中产生的ReqID、RpcID、调用时间和参数采样数据等调用跟踪日志,便于集成存储和离线分析RPC整体调用关系;通过Thrift框架格式化地统一输出客户端和服务端的调用跟踪日志,便于RPC调用的进一步处理和分析。

附图说明

图1为本发明第一实施例的远程过程调用跟踪方法的流程图;

图2是本发明第二实施例的远程过程调用跟踪方法的流程图;

图3是本发明实施例的RPC调用跟踪宏观逻辑图;

图4是本发明实施例的对RPC调用数据进行可视化绘制效果图;

图5是本发明第一实施例的远程过程调用跟踪装置的结构示意图;

图6是本发明第二实施例的远程过程调用跟踪装置的结构示意图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

实施例一

请参阅图1,是本发明第一实施例的远程过程调用跟踪方法的流程图。本发明第一实施例的远程过程调用跟踪方法包括以下步骤:

步骤100:对当前应用发起RPC调用;

步骤110:自动生成当前RPC调用唯一的请求标识ReqID和RPC调用标识RpcID;

在步骤110中,在使用Thrift进行网络RPC调用时,本发明实施例通过Thrift框架自动在API调用接口中透明嵌入当前RPC调用的请求标识ReqID和调用标识RpcID,对上层业务相关的调用完全透明,对业务代码无侵入。

步骤120:将当前RPC调用的请求标识ReqID和调用标识RpcID传输到下一个RPC调用;

在步骤120中,服务端的桩代码解析得到当前RPC调用的请求标识ReqID和调用标识RpcID,如果服务端又发起其它RPC调用,则服务端的桩代码会进一步透明传递ReqID和RpcID。

本发明第一实施例的远程过程调用跟踪方法在发起RPC调用时通过Thrift框架增加自动生成RPC调用的ReqID和RpcID,并将当前RPC调用的请求标识ReqID和调用标识RpcID传输到服务端,从而对RPC调用方便准确地进行跟踪,对上层业务相关的调用完全透明,对业务代码无侵入。

实施例二

请参阅图2和图3,图2是本发明第二实施例的远程过程调用跟踪方法的流程图,图3是本发明实施例的RPC调用跟踪宏观逻辑图。本发明第二实施例的远程过程调用跟踪方法包括以下步骤:

步骤200:用户对当前应用发起RPC调用;

步骤210:Thrift框架的客户端桩代码自动生成当前RPC调用全局唯一的请求标识ReqID,同时将上层RPC调用的RpcID(即ParentRpcID)传递给当前RPC调用,并为当前RPC调用生成一个RPC调用标识RpcID;同时Thrift框架自动记录当前RPC调用的发起时间和结束时间,以及当前RPC调用的参数采样数据;

在步骤210中,Thrift框架集成于客户端和服务端中,Thrift框架通过IDL(Interface Description Language,接口描述语言)编译器来定义RPC的调用接口和数据类型,然后通过一个编译器生成不同语言的代码,并由生成的代码负责RPC协议层和传输层的实现。在使用Thrift进行网络RPC调用时,本发明实施例自动在API调用接口中透明嵌入当前RPC调用的请求标识ReqID和调用标识RpcID,并会将当前RPC调用的请求标识ReqID和调用标识RpcID传输到服务端,服务端的桩代码解析得到当前RPC调用的请求标识ReqID和调用标识RpcID,如果服务端又发起其它RPC调用,则服务端会进一步将解析得到的当前RPC调用的请求标识ReqID和调用标识RpcID透明传递至下一个RPC调用,从而实现对上层业务相关的调用完全透明跟踪,对业务代码无侵入。其中,ReqID用于唯一标识一次RPC调用请求,所有ReqID一样的RPC调用构成一棵多叉树,其中ParentRpcID为0的应用为树的根节点,树中每个节点自身的标识为RpcID,具体如图4所示,是本发明实施例的对RPC调用数据进行可视化绘制效果图。

步骤220:Thrift框架自动收集客户端和服务端在PRC调用过程中产生的ReqID、RpcID、调用时间和参数采样数据等调用跟踪日志,并将客户端和服务端的调用跟踪日志统一格式化输出;

在步骤220中,本发明实施例通过Thrift框架自动收集客户端和服务端在PRC调用过程中产生的ReqID、RpcID、调用时间和参数采样数据等调用跟踪日志,便于集成存储和离线分析RPC整体调用关系,方便RPC调用的可视化绘制;通过格式化统一输出客户端和服务端的调用跟踪日志,便于RPC调用的进一步处理和分析。

本发明第二实施例的远程过程调用跟踪方法在发起RPC调用时通过Thrift框架增加自动生成RPC调用的ReqID和RpcID,同时自动记录RPC调用的调用时间及参数采样数据,并将当前RPC调用的ReqID和RpcID透明传递至下一个RPC调用,从而对RPC调用方便准确地进行跟踪,实现对上层业务相关的调用完全透明跟踪,对业务代码无侵入。通过Thrift框架自动收集客户端和服务端在PRC调用过程中产生的ReqID、RpcID、调用时间和参数采样数据等调用跟踪日志,便于集成存储和离线分析RPC整体调用关系;通过Thrift框架格式化地统一输出客户端和服务端的调用跟踪日志,便于RPC调用的进一步处理和分析。

实施例三

请参阅图5,是本发明第一实施例的远程过程调用跟踪装置的结构示意图。本发明第一实施例的远程过程调用跟踪装置包括:

调用发起模块10:用于对当前应用发起RPC调用;

代码生成模块20:用于自动生成当前RPC调用唯一的请求标识ReqID和RPC调用标识RpcID,并将当前RPC调用的请求标识ReqID和调用标识RpcID传输到下一个RPC调用;其中,在使用Thrift进行网络RPC调用时,本发明实施例自动在API调用接口中透明嵌入当前RPC调用的请求标识ReqID和调用标识RpcID,对上层业务相关的调用完全透明,对业务代码无侵入。并会将当前RPC调用的请求标识ReqID和调用标识RpcID传输到服务端,服务端的桩代码解析得到当前RPC调用的请求标识ReqID和调用标识RpcID,如果服务端又发起其它RPC调用,则服务端的桩代码会进一步透明传递ReqID和RpcID。

本发明第一实施例的远程过程调用跟踪装置在发起RPC调用时通过Thrift框架增加自动生成RPC调用的ReqID和RpcID,并将当前RPC调用的请求标识ReqID和调用标识RpcID传输到服务端,从而对RPC调用方便准确地进行跟踪,对上层业务相关的调用完全透明,对业务代码无侵入。

实施例四

请参阅图6,是本发明第二实施例的远程过程调用跟踪装置的结构示意图。本发明第二实施例的远程过程调用跟踪装置包括调用发起模块10、代码生成模块20、数据收集模块30和数据输出模块40;

调用发起模块10:用于对当前应用发起RPC调用;

代码生成模块20:用于自动生成当前RPC调用的全局唯一的请求标识ReqID,将上层RPC调用的RpcID(即ParentRpcID)传递给当前RPC调用,并为当前RPC调用生成一个RPC调用标识RpcID;同时自动记录当前RPC调用的发起时间和结束时间,以及当前RPC调用的参数采样数据;

其中,代码生成模块20通过Thrift框架对RPC调用进行跟踪记录,Thrift框架集成于客户端和服务端中,通过IDL编译器来定义RPC的调用接口和数据类型,然后通过一个编译器生成不同语言的代码,并由生成的代码负责RPC协议层和传输层的实现。在使用Thrift进行网络RPC调用时,本发明实施例自动在API调用接口中透明嵌入当前RPC调用的请求标识ReqID和调用标识RpcID,并会将当前RPC调用的请求标识ReqID和调用标识RpcID传输到服务端,服务端的桩代码解析得到当前RPC调用的请求标识ReqID和调用标识RpcID,如果服务端又发起其它RPC调用,则服务端会进一步将解析得到的当前RPC调用的请求标识ReqID和调用标识RpcID透明传递至下一个RPC调用,从而实现对上层业务相关的调用完全透明跟踪,对业务代码无侵入。ReqID用于唯一标识一次RPC调用请求,所有ReqID一样的RPC调用构成一棵多叉树,其中ParentRpcID为0的应用为树的根节点,树中每个节点自身的标识为RpcID,具体如图4所示,是本发明实施例的对RPC调用数据进行可视化绘制效果图。

数据收集模块30:用于自动收集客户端和服务端在PRC调用过程中产生的ReqID、RpcID、调用时间和参数采样数据等调用跟踪日志;其中,本发明实施例通过Thrift框架自动收集客户端和服务端在PRC调用过程中产生的ReqID、RpcID、调用时间和参数采样数据等调用跟踪日志,便于集成存储和离线分析RPC整体调用关系,方便RPC调用的可视化绘制。

数据输出模块40:用于将客户端和服务端的调用跟踪日志统一格式化输出;其中,通过格式化统一输出客户端和服务端的调用跟踪日志,便于对RPC调用的进一步处理和分析。

本发明第二实施例的远程过程调用跟踪装置在发起RPC调用时通过Thrift框架增加自动生成RPC调用的ReqID和RpcID,同时自动记录RPC调用的调用时间及参数采样数据,并将当前RPC调用的ReqID和RpcID透明传递至下一个RPC调用,从而对RPC调用方便准确地进行跟踪,实现对上层业务相关的调用完全透明跟踪,对业务代码无侵入。通过Thrift框架自动收集客户端和服务端在PRC调用过程中产生的ReqID、RpcID、调用时间和参数采样数据等调用跟踪日志,便于集成存储和离线分析RPC整体调用关系;通过Thrift框架格式化地统一输出客户端和服务端的调用跟踪日志,便于RPC调用的进一步处理和分析。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1