一种RPC请求调用方法及装置与流程

文档序号:20883817发布日期:2020-05-26 17:20阅读:170来源:国知局
一种RPC请求调用方法及装置与流程

本发明涉及数据通信领域,尤其涉及一种rpc请求调用方法及装置。



背景技术:

远程过程调用(remoteprocedurecall,简称rpc)一般是基于cs架构实现,即客户端发起rpc请求,服务器端根据客户端的请求实现功能调用。rpc请求的调用模式可分为同步调用和异步调用两类,根据不同需求选用不同的调用模式。同步调用是客户端向服务器端发起rpc请求后,需等待服务器端返回rpc响应从而得到执行结果;异步调用是客户端发起rpc请求后不必等待服务器端返回rpc响应,而是在服务器端向客户端返回rpc响应后,再由客户端通过回调机制得到执行结果。现实环境中rpc请求往往会因为各种原因出现调用失败,尤其是对于同步rpc调用的超时问题,如果不能及时发现同步rpc调用的超时原因,则会导致对应功能失效,严重影响业务的可用性,因此,及时发现同步rpc调用超时并及时解决是当前亟待解决的问题。



技术实现要素:

本发明提供一种rpc请求调用方法及装置,能够帮助维护人员及时发现同步rpc请求发生调用超时的具体原因,提高故障排查效率。

第一方面,本发明提供一种rpc请求调用方法,应用于发起同步rpc请求的客户端,包括以下步骤:

所述客户端向服务器端每发起一次同步的rpc请求,对该rpc请求对应的同类rpc请求的计数值进行累计;

所述客户端每接收一次所述服务器端发送的rpc响应,对该rpc响应对应的同类rpc响应的计数值进行累计;

所述客户端发起任一rpc请求后,如在预设的超时阈值内未收到所述任一rpc请求对应的rpc响应,记录所述任一rpc请求的调用信息用于后期调试。

其中,所述rpc请求以及所述rpc响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc请求是指包括相同三元组信息的rpc请求;所述同类rpc响应是指包括相同三元组信息的rpc响应。

所述记录所述任一rpc请求的调用信息用于后期调试,包括:

记录所述任一rpc请求的三元组信息与所述任一rpc请求的序列号的对应关系;

根据所述任一rpc请求的序列号对应的所述三元组信息中的应用模块标识,所述客户端通知对应的应用模块停止发起rpc请求;

等待设定的延迟时间后,比较所述任一rpc请求对应的同类rpc请求的计数值是否等于所述任一rpc请求对应rpc响应对应的同类rpc响应的计数值;若不相等,判定所述任一rpc请求因丢包导致超时,否则,判定所述任一rpc请求在所述服务器端调用超时。

第二方面,本发明提供一种rpc请求调用方法,应用于接收同步rpc请求的服务器端,包括以下步骤:

所述服务器端接收客户端发起的任一rpc请求,对所述任一rpc请求对应的同类rpc请求的计数值进行累计;

监控所述任一rpc请求的调用过程是否超时,如是,记录所述任一rpc请求的异常信息;

在所述任一rpc请求调用结束后,所述服务器端向所述客户端发送所述任一rpc请求对应的rpc响应,并对所述rpc响应对应的同类rpc响应的计数值进行累计;

其中,所述任一rpc请求对应的同类rpc请求的计数值和所述rpc响应对应的同类rpc响应的计数值用于后期调试。

其中,所述rpc请求以及所述rpc响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc请求是指包括相同三元组信息的rpc请求;所述同类rpc响应是指包括相同三元组信息的rpc响应。

所述监控所述任一rpc请求的调用过程是否超时,包括:

所述服务器端接收所述任一rpc请求后,获取当前时间作为所述任一rpc请求的第一时间戳,将所述rpc请求添加到先入先出待处理队列;

所述服务器端从所述待处理队列提取所述任一rpc请求,获取当前时间作为所述任一rpc请求的第二时间戳;

所述服务器端执行所述任一rpc请求,所述任一rpc请求执行结束后,获取当前时间作为所述任一rpc请求的第三时间戳;

如果所述第二时间戳与所述第一时间戳的差值大于等于预设的超时阈值,判定所述任一rpc请求在所述待处理队列的等待过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值小于所述超时阈值,且所述第三时间戳与所述第二时间戳的差值大于等于所述超时阈值,判定所述任一rpc请求在执行过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值和所述第三时间戳与所述第二时间戳的差值都小于所述超时阈值,且所述第三时间戳与所述第一时间戳的差值大于等于所述超时阈值,判定所述任一rpc请求在所述待处理队列的等待过程和执行过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值、所述第三时间戳与所述第二时间戳的差值和所述第三时间戳与所述第一时间戳的差值都小于所述超时阈值,判定所述任一rpc请求在所述服务器端的调用过程未超时;

所述记录所述任一rpc请求的异常信息,包括:

记录所述任一rpc请求的三元组信息与所述任一rpc请求的序列号的对应关系、所述任一rpc请求的超时原因;其中,记录的方式可采用日志、告警、邮件或者短消息中的任何一种。

其中,所述服务器端执行所述任一rpc请求,包括:

所述服务器端执行所述任一rpc请求,同时释放信号量唤醒监控线程,如果所述任一rpc请求的执行时间超过预设的时间阈值,判定所述任一rpc请求在执行过程中发生超时,所述监控线程记录当前环境信息用于后期调试;所述当前环境信息,包括:执行所述任一rpc请求时的堆栈上下文和当前时间;所述时间阈值小于等于所述超时阈值。

第三方面,本发明提供一种rpc请求调用装置,应用于发起同步rpc请求的客户端,具体包括:

发送模块,用于向服务器端每发起一次同步的rpc请求,对该rpc请求对应的同类rpc请求的计数值进行累计;

接收模块,用于每接收一次所述服务器端发送的rpc响应,对该rpc响应对应的同类rpc响应的计数值进行累计;

调试模块,用于在所述发送模块发起任一rpc请求后,如在预设的超时阈值内未收到所述任一rpc请求对应的rpc响应,记录所述任一rpc请求的调用信息用于后期调试。

其中,所述rpc请求以及所述rpc响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc请求是指包括相同三元组信息的rpc请求;所述同类rpc响应是指包括相同三元组信息的rpc响应。

所述调试模块,具体用于所述发送模块发起任一rpc请求后,如在预设的超时阈值内未收到所述任一rpc请求对应的rpc响应,记录所述任一rpc请求的三元组信息与所述任一rpc请求的序列号的对应关系;

根据所述任一rpc请求的序列号对应的所述三元组信息中的应用模块标识,通知对应的应用模块停止发起rpc请求;

等待设定的延迟时间后,比较所述任一rpc请求对应的同类rpc请求的计数值是否等于所述任一rpc请求对应rpc响应对应的同类rpc响应的计数值;若不相等,判定所述任一rpc请求因丢包导致超时,否则,判定所述任一rpc请求在所述服务器端调用超时。

第四方面,本发明提供一种rpc请求调用装置,应用于接收同步rpc请求的服务器端,具体包括:

接收模块,用于接收客户端发起的任一rpc请求,对所述任一rpc请求对应的同类rpc请求的计数值进行累计;其中,所述任一rpc请求对应的同类rpc请求的计数值用于后期调试;

监控模块,用于监控所述任一rpc请求的调用过程是否超时,如是,记录所述任一rpc请求的异常信息;

发送模块,用于在所述任一rpc请求调用结束后,向所述客户端发送所述任一rpc请求对应的rpc响应,并对所述rpc响应对应的同类rpc响应的计数值进行累计;其中,所述rpc响应对应的同类rpc响应的计数值用于后期调试。

其中,所述rpc请求以及所述rpc响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc请求是指包括相同三元组信息的rpc请求;所述同类rpc响应是指包括相同三元组信息的rpc响应。

所述监控模块,具体用于:

接收所述任一rpc请求后,获取当前时间作为所述任一rpc请求的第一时间戳,将所述rpc请求添加到先入先出待处理队列;

从所述待处理队列提取所述任一rpc请求,获取当前时间作为所述任一rpc请求的第二时间戳;

执行所述任一rpc请求,所述任一rpc请求执行结束后,获取当前时间作为所述任一rpc请求的第三时间戳;

如果所述第二时间戳与所述第一时间戳的差值大于等于预设的超时阈值,判定所述任一rpc请求在所述待处理队列的等待过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值小于所述超时阈值,且所述第三时间戳与所述第二时间戳的差值大于等于所述超时阈值,判定所述任一rpc请求在执行过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值和所述第三时间戳与所述第二时间戳的差值都小于所述超时阈值,且所述第三时间戳与所述第一时间戳的差值大于等于所述超时阈值,判定所述任一rpc请求在所述待处理队列的等待过程和执行过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值、所述第三时间戳与所述第二时间戳的差值和所述第三时间戳与所述第一时间戳的差值都小于所述超时阈值,判定所述任一rpc请求在所述服务器端的调用过程未超时;

以及具体用于如果判定所述任一rpc请求在所述服务器端的调用过程发生超时,记录所述任一rpc请求的三元组信息与所述任一rpc请求的序列号的对应关系、所述任一rpc请求的超时原因;其中,记录的方式可采用日志、告警、邮件或者短消息中的任何一种。

所述监控模块,具体用于执行所述任一rpc请求,同时释放信号量唤醒监控线程,如果所述任一rpc请求的执行时间超过预设的时间阈值,判定所述任一rpc请求在执行过程中发生超时,所述监控线程记录当前环境信息用于后期调试;所述当前环境信息,包括:执行所述任一rpc请求时的堆栈上下文和当前时间;所述时间阈值小于等于所述超时阈值。

综上所述,本发明在客户端和服务器端对同步rpc请求调用过程进行监控和收发包分类计数,如果发生rpc请求超时问题,通过本发明能够有效帮助维护人员及时准确判定rpc请求超时的具体原因,提高故障排查效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的一种应用于客户端的同步rpc请求调用方法流程图;

图2示出了本发明实施例提供的一种应用于服务器端的同步rpc请求调用方法流程图;

图3示出了本发明实施例提供的一种用于客户端的同步rpc请求调用装置示意图;

图4示出了本发明实施例提供的一种应用于服务器端的同步rpc请求调用装置示意图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面通过具体实施例,分别进行详细的说明。

实施例一

本发明实施例提供了一种rpc请求调用方法,应用于发起同步rpc请求的客户端,其处理流程图如图1所示,包括如下步骤:

步骤s101,所述客户端向服务器端每发起一次同步的rpc请求,对该rpc请求对应的同类rpc请求的计数值进行累计。

其中,所述rpc请求包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc请求是指包括相同三元组信息的rpc请求。应用模块标识是应用模块的唯一标识,用于区分客户端中发起同步rpc调用的具体的业务模块;客户端标识是客户端的唯一标识;服务器端标识是服务器端的唯一标识。所述rpc请求中除了上述三元组信息外,还可以包括所述rpc请求的序列号或发起所述rpc请求的线程标识,本发明不作限定。其中,所述线程标识是发起所述rpc请求的线程唯一标识,用于所述rpc请求调用异常时,定位发起所述rpc请求的具体线程。

步骤s102,所述客户端每接收一次所述服务器端发送的rpc响应,对该rpc响应对应的同类rpc响应的计数值进行累计。

其中,所述rpc响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc响应是指包括相同三元组信息的rpc响应。应用模块标识是应用模块的唯一标识,用于区分客户端中发起同步rpc调用的具体的业务模块;客户端标识是客户端的唯一标识;服务器端标识是服务器端的唯一标识。所述rpc响应中除了上述三元组信息外,还可以包括所述rpc响应对应的所述rpc请求的序列号,本发明不作限定。

步骤s103,所述客户端发起任一rpc请求后,如在预设的超时阈值内未收到所述任一rpc请求对应的rpc响应,记录所述任一rpc请求的调用信息用于后期调试。

本步骤中的任一rpc请求是指所述客户端所发起的任意一个同步的rpc请求。

其中,所述记录所述任一rpc请求的调用信息用于后期调试,包括:记录所述任一rpc请求的三元组信息与所述任一rpc请求的序列号的对应关系;其中,所述任一rpc请求的序列号是所述任一rpc请求的唯一标识;

根据所述任一rpc请求的序列号对应的所述三元组信息中的应用模块标识,所述客户端通知对应的应用模块停止发起rpc请求;

等待设定的延迟时间后,比较所述任一rpc请求对应的同类rpc请求的计数值是否等于所述任一rpc请求对应rpc响应对应的同类rpc响应的计数值;若不相等,判定所述任一rpc请求因丢包导致超时,否则,判定所述任一rpc请求在所述服务器端调用超时。在本发明实施例中,通过等待设定的延迟时间,可以保证所述任一rpc请求对应的同类rpc请求的计数值和所述任一rpc请求对应rpc响应对应的同类rpc响应的计数值不再发生改变;由此可以准确判断超时原因。

本方法通过在客户端对同类型rpc请求和rpc响应进行计数,并且及时记录发生调用超时的rpc请求的调用信息,能够帮助维护人员快速确认该rpc请求发生超时的原因是由于客户端和服务器端之间的通信通道发生异常,还是由于服务器端调用超时导致的,提高故障排查效率。

实施例二

本发明实施例提供了一种rpc请求调用方法,应用于接收同步rpc请求的服务器端,其处理流程图如图2所示,包括如下步骤:

步骤s201,所述服务器端接收客户端发起的任一rpc请求,对所述任一rpc请求对应的同类rpc请求的计数值进行累计。

其中,所述rpc请求包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc请求是指包括相同三元组信息的rpc请求。应用模块标识是应用模块的唯一标识,用于区分客户端中发起同步rpc调用的具体的业务模块;客户端标识是客户端的唯一标识;服务器端标识是服务器端的唯一标识。所述rpc请求中除了上述三元组信息外,还可以包括所述rpc请求的序列号或发起所述rpc请求的线程标识,本发明不作限定。其中,所述线程标识是发起所述rpc请求的线程唯一标识,用于所述rpc请求调用异常时,定位发起所述rpc请求的具体线程。

步骤s202,监控所述任一rpc请求的调用过程是否超时,如是,记录所述任一rpc请求的异常信息。

其中,所述监控所述任一rpc请求的调用过程是否超时,包括:

所述服务器端接收所述任一rpc请求后,获取当前时间作为所述任一rpc请求的第一时间戳,将所述rpc请求添加到先入先出待处理队列;

所述服务器端从所述待处理队列提取所述任一rpc请求,获取当前时间作为所述任一rpc请求的第二时间戳;

所述服务器端执行所述任一rpc请求,所述任一rpc请求执行结束后,获取当前时间作为所述任一rpc请求的第三时间戳;

如果所述第二时间戳与所述第一时间戳的差值大于等于预设的超时阈值,判定所述任一rpc请求在所述待处理队列的等待过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值小于所述超时阈值,且所述第三时间戳与所述第二时间戳的差值大于等于所述超时阈值,判定所述任一rpc请求在执行过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值和所述第三时间戳与所述第二时间戳的差值都小于所述超时阈值,且所述第三时间戳与所述第一时间戳的差值大于等于所述超时阈值,判定所述任一rpc请求在所述待处理队列的等待过程和执行过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值、所述第三时间戳与所述第二时间戳的差值和所述第三时间戳与所述第一时间戳的差值都小于所述超时阈值,判定所述任一rpc请求在所述服务器端的调用过程未超时。

本发明实施例中,记录所述任一rpc请求的异常信息,包括:记录所述任一rpc请求的三元组信息与所述任一rpc请求的序列号的对应关系、所述任一rpc请求的超时原因;其中,所述任一rpc请求的序列号是所述任一rpc请求的唯一标识;其中,记录的方式可采用日志、告警、邮件或者短消息中的任何一种。

其中,所述服务器端执行所述任一rpc请求,包括:

所述服务器端执行所述任一rpc请求,同时释放信号量唤醒监控线程,如果所述任一rpc请求的执行时间超过预设的时间阈值,判定所述任一rpc请求在执行过程中发生超时,所述监控线程记录当前环境信息用于后期调试;所述当前环境信息,包括:执行所述任一rpc请求时的堆栈上下文和当前时间;所述时间阈值小于等于所述超时阈值。

步骤s203,在所述任一rpc请求调用结束后,所述服务器端向所述客户端发送所述任一rpc请求对应的rpc响应,并对所述rpc响应对应的同类rpc响应的计数值进行累计;其中,所述任一rpc请求对应的同类rpc请求的计数值和所述rpc响应对应的同类rpc响应的计数值用于后期调试。

其中,所述rpc响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc响应是指包括相同三元组信息的rpc响应。应用模块标识是应用模块的唯一标识,用于区分客户端中发起同步rpc调用的具体的业务模块;客户端标识是客户端的唯一标识;服务器端标识是服务器端的唯一标识。所述rpc响应中除了上述三元组信息外,还可以包括所述rpc响应对应的所述rpc请求的序列号,本发明不作限定。

所述任一rpc请求对应的同类rpc请求的计数值和所述rpc响应对应的同类rpc响应的计数值用于后期调试,包括:客户端发起所述任一rpc请求后,如在预设的超时阈值内未收到所述任一rpc请求对应的rpc响应,并且已经判定所述任一rpc请求因丢包导致超时,此时可比较所述客户端和所述服务器端对所述任一rpc请求对应的同类rpc请求的计数值是否相等,若不相等,判定所述任一rpc请求从所述客户端发送到所述服务器端的过程中发生丢包;否则,比较所述客户端和所述服务器端对所述任一rpc请求对应的rpc响应对应的同类rpc响应的计数值是否相等,若不相等,判定所述任一rpc请求对应的rpc响应从所述服务器端发送到所述客户端的过程中发生丢包。

本方法在服务器端通过对任一rpc请求的调用过程进行监控,能够帮助维护人员准确判定rpc请求在所述服务器端调用过程中发生超时的具体原因。此外,如果客户端判定所述任一rpc请求因丢包导致超时,则所述服务器端通过对同类rpc请求和同类rpc响应的计数,可帮助维护人员进一步确认丢包过程是发生在所述任一rpc请求的发送过程,还是所述任一rpc请求对应的rpc响应的接收过程,为维护人员提供了更为精准的调试手段。

实施例三

本发明实施例提供了一种rpc请求调用装置30,应用于发起同步rpc请求的客户端,其示意图如图3所示,具体包括:

发送模块301,用于向服务器端每发起一次同步的rpc请求,对该rpc请求对应的同类rpc请求的计数值进行累计;

接收模块302,用于每接收一次所述服务器端发送的rpc响应,对该rpc响应对应的同类rpc响应的计数值进行累计;

调试模块303,用于在所述发送模块301发起任一rpc请求后,如在预设的超时阈值内未收到所述任一rpc请求对应的rpc响应,记录所述任一rpc请求的调用信息用于后期调试。

其中,所述的任一rpc请求是指所述客户端所发起的任意一个同步的rpc请求。所述rpc请求以及所述rpc响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc请求是指包括相同三元组信息的rpc请求;所述同类rpc响应是指包括相同三元组信息的rpc响应。应用模块标识是唯一的,用于区分客户端中发起同步rpc调用的具体的业务模块;客户端标识是客户端的唯一标识;服务器端标识是服务器端的唯一标识。

所述rpc请求中除了上述三元组信息外,还可以包括所述rpc请求的序列号或发起所述rpc请求的线程标识。其中,所述线程标识是发起所述rpc请求的线程唯一标识,用于所述rpc请求调用异常时,定位发起所述rpc请求的具体线程。所述rpc响应中除了上述三元组信息外,还可以包括所述rpc响应对应的所述rpc请求的序列号,本发明不作限定。

所述调试模块303,具体用于在所述发送模块301发起任一rpc请求后,如在预设的超时阈值内未收到所述任一rpc请求对应的rpc响应,记录所述任一rpc请求的三元组信息与所述任一rpc请求的序列号的对应关系;其中,所述任一rpc请求的序列号是所述任一rpc请求的唯一标识;

根据所述任一rpc请求的序列号对应的所述三元组信息中的应用模块标识,通知对应的应用模块停止发起rpc请求;

等待设定的延迟时间后,比较所述任一rpc请求对应的同类rpc请求的计数值是否等于所述任一rpc请求对应rpc响应对应的同类rpc响应的计数值;若不相等,判定所述任一rpc请求因丢包导致超时,否则,判定所述任一rpc请求在所述服务器端调用超时。在本发明实施例中,通过等待设定的延迟时间,可以保证所述任一rpc请求对应的同类rpc请求的计数值和所述任一rpc请求对应rpc响应对应的同类rpc响应的计数值不再发生改变;由此可以准确判断超时原因。

本方法通过在客户端对同类型rpc请求和rpc响应进行计数,并且及时记录发生调用超时的rpc请求的调用信息,能够帮助维护人员快速确认该rpc请求发生超时的原因是由于客户端和服务器端之间的通信通道发生异常,还是由于服务器端调用超时导致的,提高故障排查效率。

实施例四

本发明实施例提供了一种rpc请求调用装置40,应用于接收同步rpc请求的服务器端,其示意图如图4所示,具体包括:

接收模块401,用于接收客户端发起的任一rpc请求,对所述任一rpc请求对应的同类rpc请求的计数值进行累计;其中,所述任一rpc请求对应的同类rpc请求的计数值用于后期调试;

监控模块402,用于监控所述任一rpc请求的调用过程是否超时,如是,记录所述任一rpc请求的异常信息;

发送模块403,用于在所述任一rpc请求调用结束后,向所述客户端发送所述任一rpc请求对应的rpc响应,并对所述rpc响应对应的同类rpc响应的计数值进行累计;其中,所述rpc响应对应的同类rpc响应的计数值用于后期调试。

其中,所述rpc请求以及所述rpc响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类rpc请求是指包括相同三元组信息的rpc请求;所述同类rpc响应是指包括相同三元组信息的rpc响应。应用模块标识是唯一的,用于区分客户端中发起同步rpc调用的具体的业务模块;客户端标识是客户端的唯一标识;服务器端标识是服务器端的唯一标识。

所述rpc请求中除了上述三元组信息外,还可以包括所述rpc请求的序列号或发起所述rpc请求的线程标识。其中,所述线程标识是发起所述rpc请求的线程唯一标识,用于所述rpc请求调用异常时,定位发起所述rpc请求的具体线程。所述rpc响应中除了上述三元组信息外,还可以包括所述rpc响应对应的所述rpc请求的序列号,本发明不作限定。

所述任一rpc请求对应的同类rpc请求的计数值和所述rpc响应对应的同类rpc响应的计数值用于后期调试,包括:客户端发起所述任一rpc请求后,如在预设的超时阈值内未收到所述任一rpc请求对应的rpc响应,并且已经判定所述任一rpc请求因丢包导致超时,此时可比较所述客户端和所述服务器端对所述任一rpc请求对应的同类rpc请求的计数值是否相等,若不相等,判定所述任一rpc请求从所述客户端发送到所述服务器端的过程中发生丢包;否则,比较所述客户端和所述服务器端对所述任一rpc请求对应的rpc响应对应的同类rpc响应的计数值是否相等,若不相等,判定所述任一rpc请求对应的rpc响应从所述服务器端发送到所述客户端的过程中发生丢包。

所述监控模块402,具体用于:

接收所述任一rpc请求后,获取当前时间作为所述任一rpc请求的第一时间戳,将所述rpc请求添加到先入先出待处理队列;

从所述待处理队列提取所述任一rpc请求,获取当前时间作为所述任一rpc请求的第二时间戳;

执行所述任一rpc请求,所述任一rpc请求执行结束后,获取当前时间作为所述任一rpc请求的第三时间戳;

如果所述第二时间戳与所述第一时间戳的差值大于等于预设的超时阈值,判定所述任一rpc请求在所述待处理队列的等待过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值小于所述超时阈值,且所述第三时间戳与所述第二时间戳的差值大于等于所述超时阈值,判定所述任一rpc请求在执行过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值和所述第三时间戳与所述第二时间戳的差值都小于所述超时阈值,且所述第三时间戳与所述第一时间戳的差值大于等于所述超时阈值,判定所述任一rpc请求在所述待处理队列的等待过程和执行过程中发生超时;

如果所述第二时间戳与所述第一时间戳的差值、所述第三时间戳与所述第二时间戳的差值和所述第三时间戳与所述第一时间戳的差值都小于所述超时阈值,判定所述任一rpc请求在所述服务器端的调用过程未超时。

以及具体用于如果判定所述任一rpc请求在所述服务器端的调用过程发生超时,记录所述任一rpc请求的三元组信息与所述任一rpc请求的序列号的对应关系、所述任一rpc请求的超时原因;其中,所述任一rpc请求的序列号是所述任一rpc请求的唯一标识;记录的方式可采用日志、告警、邮件或者短消息中的任何一种。

所述监控模块402,具体用于执行所述任一rpc请求,同时释放信号量唤醒监控线程,如果所述任一rpc请求的执行时间超过预设的时间阈值,判定所述任一rpc请求在执行过程中发生超时,所述监控线程记录当前环境信息用于后期调试;所述当前环境信息,包括:执行所述任一rpc请求时的堆栈上下文和当前时间;所述时间阈值小于等于所述超时阈值。

本方法在服务器端通过对任一rpc请求的调用过程进行监控,能够帮助维护人员准确判定rpc请求在所述服务器端调用过程中发生超时的具体原因。此外,如果客户端判定所述任一rpc请求因丢包导致超时,则所述服务器端通过对同类rpc请求和同类rpc响应的计数,可帮助维护人员进一步确认丢包过程是发生在所述任一rpc请求的发送过程,还是所述任一rpc请求对应的rpc响应的接收过程,为维护人员提供了更为精准的调试手段。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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