CN111200573B - 一种rpc请求调用方法及装置 - Google Patents
一种rpc请求调用方法及装置 Download PDFInfo
- Publication number
- CN111200573B CN111200573B CN201811351334.8A CN201811351334A CN111200573B CN 111200573 B CN111200573 B CN 111200573B CN 201811351334 A CN201811351334 A CN 201811351334A CN 111200573 B CN111200573 B CN 111200573B
- Authority
- CN
- China
- Prior art keywords
- rpc
- rpc request
- request
- timestamp
- client
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种同步RPC请求调用方法及装置,涉及数据通信领域,该方法在客户端和服务器端对同步RPC请求调用过程进行监控和收发包分类计数,如果发生RPC请求超时,通过本发明能够有效帮助维护人员准确判定RPC请求超时的具体原因,提高故障排查效率。
Description
技术领域
本发明涉及数据通信领域,尤其涉及一种RPC请求调用方法及装置。
背景技术
远程过程调用(Remote Procedure Call,简称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响应的接收过程,为维护人员提供了更为精准的调试手段。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种RPC请求调用方法,其特征在于,应用于发起同步RPC请求的客户端,所述方法包括:
所述客户端向服务器端每发起一次同步的RPC请求,对该RPC请求对应的同类RPC请求的计数值进行累计;
所述客户端每接收一次所述服务器端发送的RPC响应,对该RPC响应对应的同类RPC响应的计数值进行累计;
所述客户端发起任一RPC请求后,如在预设的超时阈值内未收到所述任一RPC请求对应的RPC响应,记录所述任一RPC请求的调用信息,通知所述任一RPC请求对应的应用模块停止发起RPC请求;等待设定的延迟时间后,比较所述任一RPC请求对应的同类RPC请求的计数值是否等于所述任一RPC请求对应RPC响应对应的同类RPC响应的计数值;若不相等,判定所述任一RPC请求因丢包导致超时,否则,判定所述任一RPC请求在所述服务器端调用超时。
2.如权利要求1所述的方法,其特征在于,所述RPC请求以及所述RPC响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类RPC请求是指包括相同三元组信息的RPC请求;所述同类RPC响应是指包括相同三元组信息的RPC响应。
3.如权利要求2所述的方法,其特征在于,所述记录所述任一RPC请求的调用信息,通知所述任一RPC请求对应的应用模块停止发起RPC请求,包括:
记录所述任一RPC请求的三元组信息与所述任一RPC请求的序列号的对应关系;根据所述任一RPC请求的序列号对应的所述三元组信息中的应用模块标识,所述客户端通知对应的应用模块停止发起RPC请求。
4.一种RPC请求调用方法,其特征在于,应用于接收同步RPC请求的服务器端,所述方法包括:
所述服务器端接收客户端发起的任一RPC请求,对所述任一RPC请求对应的同类RPC请求的计数值进行累计;
监控所述任一RPC请求的调用过程是否超时,如是,记录所述任一RPC请求的异常信息;
在所述任一RPC请求调用结束后,所述服务器端向所述客户端发送所述任一RPC请求对应的RPC响应,并对所述RPC响应对应的同类RPC响应的计数值进行累计;在所述客户端判定所述任一RPC请求因丢包导致超时,比较所述客户端和所述服务器端对所述任一RPC请求对应的同类RPC请求的计数值是否相等,若不相等,判定所述任一RPC请求从所述客户端发送到所述服务器端的过程中发生丢包;否则,比较所述客户端和所述服务器端对所述任一RPC请求对应的RPC响应对应的同类RPC响应的计数值是否相等,若不相等,判定所述任一RPC请求对应的RPC响应从所述服务器端发送到所述客户端的过程中发生丢包。
5.如权利要求4所述的方法,其特征在于,所述RPC请求以及所述RPC响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类RPC请求是指包括相同三元组信息的RPC请求;所述同类RPC响应是指包括相同三元组信息的RPC响应。
6.如权利要求4所述的方法,其特征在于,所述监控所述任一RPC请求的调用过程是否超时,包括:
所述服务器端接收所述任一RPC请求后,获取当前时间作为所述任一RPC请求的第一时间戳,将所述RPC请求添加到先入先出待处理队列;
所述服务器端从所述待处理队列提取所述任一RPC请求,获取当前时间作为所述任一RPC请求的第二时间戳;
所述服务器端执行所述任一RPC请求,所述任一RPC请求执行结束后,获取当前时间作为所述任一RPC请求的第三时间戳;
如果所述第二时间戳与所述第一时间戳的差值大于等于预设的超时阈值,判定所述任一RPC请求在所述待处理队列的等待过程中发生超时;
如果所述第二时间戳与所述第一时间戳的差值小于所述超时阈值,且所述第三时间戳与所述第二时间戳的差值大于等于所述超时阈值,判定所述任一RPC请求在执行过程中发生超时;
如果所述第二时间戳与所述第一时间戳的差值和所述第三时间戳与所述第二时间戳的差值都小于所述超时阈值,且所述第三时间戳与所述第一时间戳的差值大于等于所述超时阈值,判定所述任一RPC请求在所述待处理队列的等待过程和执行过程中发生超时;
如果所述第二时间戳与所述第一时间戳的差值、所述第三时间戳与所述第二时间戳的差值和所述第三时间戳与所述第一时间戳的差值都小于所述超时阈值,判定所述任一RPC请求在所述服务器端的调用过程未超时;
所述记录所述任一RPC请求的异常信息,包括:
记录所述任一RPC请求的三元组信息与所述任一RPC请求的序列号的对应关系、所述任一RPC请求的超时原因;其中,记录的方式可采用日志、告警、邮件或者短消息中的任何一种。
7.如权利要求6所述的方法,其特征在于,所述服务器端执行所述任一RPC请求,包括:
所述服务器端执行所述任一RPC请求,同时释放信号量唤醒监控线程,如果所述任一RPC请求的执行时间超过预设的时间阈值,判定所述任一RPC请求在执行过程中发生超时,所述监控线程记录当前环境信息用于后期调试;所述当前环境信息,包括:执行所述任一RPC请求时的堆栈上下文和当前时间;所述时间阈值小于等于所述超时阈值。
8.一种RPC请求调用装置,其特征在于,应用于发起同步RPC请求的客户端,所述装置包括:
发送模块,用于向服务器端每发起一次同步的RPC请求,对该RPC请求对应的同类RPC请求的计数值进行累计;
接收模块,用于每接收一次所述服务器端发送的RPC响应,对该RPC响应对应的同类RPC响应的计数值进行累计;
调试模块,用于在所述发送模块发起任一RPC请求后,如在预设的超时阈值内未收到所述任一RPC请求对应的RPC响应,记录所述任一RPC请求的调用信息,通知所述任一RPC请求对应的应用模块停止发起RPC请求;等待设定的延迟时间后,比较所述任一RPC请求对应的同类RPC请求的计数值是否等于所述任一RPC请求对应RPC响应对应的同类RPC响应的计数值;若不相等,判定所述任一RPC请求因丢包导致超时,否则,判定所述任一RPC请求在所述服务器端调用超时。
9.如权利要求8所述的装置,其特征在于,所述RPC请求以及所述RPC响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类RPC请求是指包括相同三元组信息的RPC请求;所述同类RPC响应是指包括相同三元组信息的RPC响应。
10.如权利要求9所述的装置,其特征在于,所述调试模块,具体用于所述发送模块发起任一RPC请求后,如在预设的超时阈值内未收到所述任一RPC请求对应的RPC响应,记录所述任一RPC请求的三元组信息与所述任一RPC请求的序列号的对应关系;根据所述任一RPC请求的序列号对应的所述三元组信息中的应用模块标识,通知对应的应用模块停止发起RPC请求。
11.一种RPC请求调用装置,其特征在于,应用于接收同步RPC请求的服务器端,所述装置包括:
接收模块,用于接收客户端发起的任一RPC请求,对所述任一RPC请求对应的同类RPC请求的计数值进行累计;其中,所述任一RPC请求对应的同类RPC请求的计数值用于后期调试;
监控模块,用于监控所述任一RPC请求的调用过程是否超时,如是,记录所述任一RPC请求的异常信息;
发送模块,用于在所述任一RPC请求调用结束后,向所述客户端发送所述任一RPC请求对应的RPC响应,并对所述RPC响应对应的同类RPC响应的计数值进行累计;以及用于在所述客户端判定所述任一RPC请求因丢包导致超时,比较本端和所述客户端对所述任一RPC请求对应的同类RPC请求的计数值是否相等,若不相等,判定所述任一RPC请求从所述客户端发送到本端的过程中发生丢包;否则,比较本端和所述客户端对所述任一RPC请求对应的RPC响应对应的同类RPC响应的计数值是否相等,若不相等,判定所述任一RPC请求对应的RPC响应从本端发送到所述客户端的过程中发生丢包。
12.如权利要求11所述的装置,其特征在于,所述RPC请求以及所述RPC响应包括:应用模块标识,客户端标识和服务器端标识组成的三元组信息;所述同类RPC请求是指包括相同三元组信息的RPC请求;所述同类RPC响应是指包括相同三元组信息的RPC响应。
13.如权利要求11所述的装置,其特征在于,所述监控模块,具体用于:
接收所述任一RPC请求后,获取当前时间作为所述任一RPC请求的第一时间戳,将所述RPC请求添加到先入先出待处理队列;
从所述待处理队列提取所述任一RPC请求,获取当前时间作为所述任一RPC请求的第二时间戳;
执行所述任一RPC请求,所述任一RPC请求执行结束后,获取当前时间作为所述任一RPC请求的第三时间戳;
如果所述第二时间戳与所述第一时间戳的差值大于等于预设的超时阈值,判定所述任一RPC请求在所述待处理队列的等待过程中发生超时;
如果所述第二时间戳与所述第一时间戳的差值小于所述超时阈值,且所述第三时间戳与所述第二时间戳的差值大于等于所述超时阈值,判定所述任一RPC请求在执行过程中发生超时;
如果所述第二时间戳与所述第一时间戳的差值和所述第三时间戳与所述第二时间戳的差值都小于所述超时阈值,且所述第三时间戳与所述第一时间戳的差值大于等于所述超时阈值,判定所述任一RPC请求在所述待处理队列的等待过程和执行过程中发生超时;
如果所述第二时间戳与所述第一时间戳的差值、所述第三时间戳与所述第二时间戳的差值和所述第三时间戳与所述第一时间戳的差值都小于所述超时阈值,判定所述任一RPC请求在所述服务器端的调用过程未超时;
以及具体用于如果判定所述任一RPC请求在所述服务器端的调用过程发生超时,记录所述任一RPC请求的三元组信息与所述任一RPC请求的序列号的对应关系、所述任一RPC请求的超时原因;其中,记录的方式可采用日志、告警、邮件或者短消息中的任何一种。
14.如权利要求13所述的装置,其特征在于,所述监控模块,具体用于执行所述任一RPC请求,同时释放信号量唤醒监控线程,如果所述任一RPC请求的执行时间超过预设的时间阈值,判定所述任一RPC请求在执行过程中发生超时,所述监控线程记录当前环境信息用于后期调试;所述当前环境信息,包括:执行所述任一RPC请求时的堆栈上下文和当前时间;所述时间阈值小于等于所述超时阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811351334.8A CN111200573B (zh) | 2018-11-16 | 2018-11-16 | 一种rpc请求调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811351334.8A CN111200573B (zh) | 2018-11-16 | 2018-11-16 | 一种rpc请求调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111200573A CN111200573A (zh) | 2020-05-26 |
CN111200573B true CN111200573B (zh) | 2022-02-22 |
Family
ID=70747295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811351334.8A Active CN111200573B (zh) | 2018-11-16 | 2018-11-16 | 一种rpc请求调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111200573B (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006135845A2 (en) * | 2005-06-10 | 2006-12-21 | Hill-Rom Services, Inc. | Control for pressurized bladder in a patient support apparatus |
EP1754441B1 (en) * | 2005-08-17 | 2008-01-09 | Osypka Medical GmbH | Method and apparatus for digital demodulation in the measurement of electrical bioimpedance or bioadmittance |
CN101562500B (zh) * | 2009-05-25 | 2012-07-04 | 腾讯科技(深圳)有限公司 | 数据传输请求、发送方法及数据传输装置 |
CN103106102A (zh) * | 2013-01-14 | 2013-05-15 | 百度在线网络技术(北京)有限公司 | 一种web应用程序的运行方法及移动终端 |
CN104636395A (zh) * | 2013-11-15 | 2015-05-20 | 北京信威通信技术股份有限公司 | 一种计数处理方法及装置 |
CN104978529B (zh) * | 2015-03-10 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 网页前端的异常处理方法、异常处理系统及异常处理服务器 |
CN107404456B (zh) * | 2016-05-18 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 错误定位方法及装置 |
CN106209435A (zh) * | 2016-06-30 | 2016-12-07 | 乐视控股(北京)有限公司 | 请求队列的监听方法及装置 |
CN106919509B (zh) * | 2017-03-09 | 2020-11-24 | 腾讯科技(深圳)有限公司 | 一种客户端生成方法、装置及电子设备 |
CN107592359A (zh) * | 2017-09-19 | 2018-01-16 | 郑州云海信息技术有限公司 | 一种基于rpc协议的服务端响应方法、装置及介质 |
-
2018
- 2018-11-16 CN CN201811351334.8A patent/CN111200573B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111200573A (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240765B (zh) | 服务资源的熔断方法、装置、设备及计算机可读存储介质 | |
RU2357367C2 (ru) | Способ реализации мониторинга состояния установленного в медиа-шлюзе контроллера медиа-шлюза | |
US20060020705A1 (en) | Managing and checking socket connections | |
CN107872396B (zh) | 具有超时控制的通信方法、处理设备、终端设备和服务器 | |
WO2010099754A1 (zh) | 一种发送日志信息的方法及装置 | |
US20230043737A1 (en) | Apparatus, method and computer program | |
CN111176866A (zh) | 数据交互方法和电子设备 | |
CN111565135A (zh) | 监控服务器运行的方法、监控服务器和存储介质 | |
CN111522663B (zh) | 一种基于分布式存储系统的数据传输方法、装置和系统 | |
US8521869B2 (en) | Method and system for reporting defects within a network | |
EP1785866A1 (en) | Alarm consolidaton in IT infrastructures | |
CN110708234A (zh) | 消息发送的处理方法、消息发送的处理装置及存储介质 | |
CN111200573B (zh) | 一种rpc请求调用方法及装置 | |
EP2721786A1 (en) | Evaluation of overall performance of interactive application service | |
CN110768816B (zh) | 多媒体业务异常保护方法和装置 | |
US20110238819A1 (en) | Apparatus and method for transmitting information on an operational state of the same | |
CN108234658B (zh) | 一种感知服务器集群健康状况的方法、装置和服务器 | |
CN110572315A (zh) | 一种信息交互的方法及装置、机器人、存储介质 | |
CN103684929B (zh) | 服务器状态的监控系统及方法 | |
EP1662704B1 (en) | Monitoring system, apparatus to be monitored, monitoring apparatus and monitoring method | |
CN105592485A (zh) | 一种基于snmp网管协议实时采集并处理消息的方法 | |
US8566634B2 (en) | Method and system for masking defects within a network | |
CN109756854B (zh) | 一种集群业务释放方法 | |
US20110161786A1 (en) | Method for coping with packet error distribution, a server apparatus, and a terminal apparatus | |
CN112671608B (zh) | Ipg监测方法、交换设备及交换系统 |
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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 610041 nine Xing Xing Road 16, hi tech Zone, Sichuan, Chengdu Patentee after: MAIPU COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 610041 15-24 floor, 1 1 Tianfu street, Chengdu high tech Zone, Sichuan Patentee before: MAIPU COMMUNICATION TECHNOLOGY Co.,Ltd. |