远程过程调用请求控制方法及装置制造方法及图纸

技术编号:20119280 阅读:21 留言:0更新日期:2019-01-16 12:20
本申请实施例公开了远程过程调用请求控制方法及装置,其中,所述方法包括:客户端统计远程过程调用RPC请求的失败率或成功率;如果所述失败率达到预置的第一阈值,或成功率低于预置的第二阈值,则对RPC请求的超时时间进行延长调整;对于在所述调整完成后发送的RPC请求,利用所述调整后的超时时间,对RPC请求的成功与否进行判定。通过本申请实施例,在保证系统可用性的同时,可以降低系统服务能力继续下降甚至不可用的发生概率。

Remote procedure call request control method and device

The embodiment of this application discloses a remote procedure call request control method and device, in which the method includes: the client counts the failure rate or success rate of RPC requests for remote procedure calls; if the failure rate reaches the preset first threshold, or the success rate is lower than the preset second threshold, the time-out of RPC requests is extended and adjusted; and after the adjustment is completed, the time-out of RPC requests is extended and adjusted. The adjusted timeout time is used to determine whether the RPC request is successful or not. Through the embodiment of the present application, while ensuring the availability of the system, the probability that the service capability of the system will continue to decline or even be unavailable can be reduced.

【技术实现步骤摘要】
远程过程调用请求控制方法及装置
本申请涉及远程过程调用
,特别是涉及远程过程调用请求控制方法及装置。
技术介绍
RPC(RemoteProcedureCallProtocol,远程过程调用协议)是一种通过网络从远程计算机程序上请求服务的协议。该协议采用客户机/服务器模式,请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,客户端调用进程接收答复信息,获得进程结果。例如,在销售平台系统中,消费者用户通过其终端设备上安装的销售平台客户端程序浏览具体的商品信息,甚至可能执行购买等操作,用户发出的具体的请求,客户端通常需要调用服务端提供的API(ApplicationProgrammingInterface,应用程序编程接口)接口来获得相应的处理结果,而在API调用的内部实现中,具体就是通过RPC请求的方式与服务器进行交互。在RPC协议中,客户端往往会为RPC请求设定一定的超时时间,也即,假设RPC请求的超时时间设定为1S,则从客户端发出RPC请求开始计时,如果在1S之内收到了服务器的答复信息,则客户端认为此次RPC请求成功,而如果已经到达1S,但一直未收到服务器的答复信息,则客户端会认为此次RPC请求失败。通常情况下,RPC请求失败的原因,通常是由于服务器压力过大,使得服务器处理能力已经难以处理大量的RPC请求导致的。为解决上述问题,在现有技术中,客户端可以采用“退避”机制。也即,可以为API请求设定更长的超时时间,例如,如果将RPC请求的超时时间设定为1S,则可以将API请求的超时时间设定为3~5S,等等。这样,如果客户端发现API调用过程中,某次RPC请求失败,则只要API请求尚未超时,即可间隔一段时间之后,在API内部进行RPC请求的重传。并且,在同一API请求内部,随着RPC请求失败次数的增加,重试的间隔时间也可以随之呈现出指数级的增长。通过这种延长重试时间间隔的方式,可以从很大程度上降低服务器的压力。但是,在实际应用中,还可能存在服务器压力骤增的情况。例如,对于销售平台的服务器而言,在一些大型活动期间(例如,“双11”等),经常会出现RPC请求数量大量并发情况,使得请求的数量远远超出服务器的处理能力。此时,即使使用现有技术中的“退避”机制,即使延长了重试的时间间隔,可能也会出现无济于事的情况。因此,如何更有效的提升系统的服务能力,成为需要本领域技术人员解决的技术问题。
技术实现思路
本申请提供了远程过程调用请求控制方法及装置,在保证系统可用性的同时,可以降低系统服务能力继续下降甚至不可用的发生概率。本申请提供了如下方案:一种远程过程调用请求控制方法,包括:客户端统计远程过程调用RPC请求的失败率或成功率;如果所述失败率达到预置的第一阈值,或成功率低于预置的第二阈值,则对RPC请求的超时时间进行延长调整;对于在所述调整完成后发送的RPC请求,利用所述调整后的超时时间,对RPC请求的成功与否进行判定。一种远程过程调用请求控制装置,应用于客户端,包括:RPC请求统计单元,用于统计远程过程调用RPC请求的失败率或成功率;延长调整单元,用于如果所述失败率达到预置的第一阈值,或成功率低于预置的第二阈值,则对RPC请求的超时时间进行延长调整;判定单元,用于对于在所述调整完成后发送的RPC请求,利用所述调整后的超时时间,对RPC请求的成功与否进行判定。一种计算机系统,包括:一个或多个处理器;以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:统计远程过程调用RPC请求的失败率或成功率;如果所述失败率达到预置的第一阈值,或成功率低于预置的第二阈值,则对RPC请求的超时时间进行延长调整;对于在所述调整完成后发送的RPC请求,利用所述调整后的超时时间,对RPC请求的成功与否进行判定。一种远程过程调用RPC请求控制方法,包括:统计RPC请求是否成功的比例;对RPC请求的超时时间进行调整。一种远程过程调用RPC请求控制装置,包括:统计单元,用于统计RPC请求是否成功的比例;调整单元,用于对RPC请求的超时时间进行调整。根据本申请提供的具体实施例,本申请公开了以下技术效果:通过本申请实施例,由于客户端可以统计RPC请求的失败率或成功率,并在发现失败率高于某第一阈值,或成功率低于预置的第二阈值时,如果该第一阈值/第二阈值意味着服务器的服务能力已经下降,很难在原来的RPCTimeout原始值内完成处理,则可以对RPCTimeout进行延长调整。这样,客户端可以容许服务器用更长的时间来处理一次RPC请求,从而可以使得RPC请求的成功率提高,并且有利于减少RPC请求的重传次数,在保证系统可用性的同时,可以降低系统服务能力继续下降甚至不可用的发生概率。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的应用场景示意图;图2是现有技术中的客户端退避机制示意图;图3是本申请实施例提供的RPC超时时间延长示意图;图4是本申请实施例提供的方法的流程图;图5是本申请实施例提供的装置的示意图;图6是本申请实施例提供的计算机系统的示意图;图7是本申请实施例提供的另一方法的流程图;图8是本申请实施例提供的另一装置的示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。为了便于理解本申请实施例,首先需要说明的是,之所以会出现采用现有技术中的“退避”机制,也无法提升系统服务能力的情况,主要是因为:对于一些高并发、低时延的服务,客户端通常会通过异步写请求来提高集群的吞吐量。也即,客户端发出一个RPC请求之后,不必等到接收到服务器的响应,即可发送其他的请求。但是,这会导致到达服务器的请求数量激增。尤其是在一些分布式的系统中,由于集群中的机器数量众多(在一些大型的销售平台中,集群中的机器数量可以达到数十万台),在基数很大的情况下,基本每天都可能会有机器发生故障。因此,为了保障数据的安全性,一次异步写集群操作,通常需要向集群写三份同样的数据到不同的机器上。也即,客户端调用一次API,实际需要执行三次RPC请求,三台机器处理的RPC均成功,API才返回成功。这样能够提高数据的安全性,但也使得服务器需要处理的RPC请求数量成倍增长。例如,参见图1,对于销售平台系统,在遇到一些大型促销活动等场景时,由于通常会有大量的用户101(1)至101(n)集中在同一时间段内,通过其客户端102(1)至102(n)进行本文档来自技高网
...

【技术保护点】
1.一种远程过程调用请求控制方法,其特征在于,包括:客户端统计远程过程调用RPC请求的失败率或成功率;如果所述失败率达到预置的第一阈值,或成功率低于预置的第二阈值,则对RPC请求的超时时间进行延长调整;对于在所述调整完成后发送的RPC请求,利用所述调整后的超时时间,对RPC请求的成功与否进行判定。

【技术特征摘要】
1.一种远程过程调用请求控制方法,其特征在于,包括:客户端统计远程过程调用RPC请求的失败率或成功率;如果所述失败率达到预置的第一阈值,或成功率低于预置的第二阈值,则对RPC请求的超时时间进行延长调整;对于在所述调整完成后发送的RPC请求,利用所述调整后的超时时间,对RPC请求的成功与否进行判定。2.根据权利要求1所述的方法,其特征在于,所述统计RPC请求的失败率或成功率,包括:对RPC请求的失败率或成功率进行周期性的实时统计;所述对RPC请求的超时时间进行延长调整,包括:每次确定出所述失败率达到预置的第一阈值,或成功率低于预置的第二阈值时,均对RPC请求的超时时间进行延长调整。3.根据权利要求2所述的方法,其特征在于,每次进行失败率或成功率统计时,通过以下方式进行:获取当前统计时刻前预置数目个周期内的RPC请求失败率或成功率;对所述前预置数目个周期内的RPC请求失败率或成功率进行加权平均,将计算结果确定为当前统计时刻的RPC请求失败率或成功率。4.根据权利要求3所述的方法,其特征在于,距离当前统计时刻越近的周期,权重越高。5.根据权利要求1至4任一项所述的方法,其特征在于,所述对RPC请求的超时时间进行延长调整,包括:根据所述失败率或成功率对RPC请求的超时时间进行延长调整。6.根据权利要求5所述的方法,其特征在于,所述根据所述失败率或成功率对RPC请求的超时时间进行延长调整,包括:在RPC请求的超时时间原始值基础上,根据所述失败率或成功率增加调整值;其中,所述调整值通过以下方式确定:计算API请求的超时时间与所述RPC请求的超时时间原始值之间的差值,并将该差值与所述失败率之间的乘积,确定为所述调整值。7.根据权利要求1至4任一项所述的方法,其特征在于,还包括:如果所述失败率达到预置的第三阈值,或成功率低于预置的第四阈值,则对收到的部分API调用请求进行丢弃处理。8.根据权利要求7所述的方法,其特征在于,API调用请求的丢弃比例...

【专利技术属性】
技术研发人员:彭文文
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1