超时处理方法、电子设备、存储介质和计算机程序产品与流程

摘要: 本发明涉及计算机,具体地,涉及一种超时处理方法、电子设备、存储介质和计算机程序产品。背景技术:1、远程调用是分布式系统中的基础通信技术。一次完整的远程调用从发起...
超时处理方法、电子设备、存储介质和计算机程序产品与流程

本发明涉及计算机,具体地,涉及一种超时处理方法、电子设备、存储介质和计算机程序产品。

背景技术:

1、远程调用是分布式系统中的基础通信技术。一次完整的远程调用从发起到结束所经过的全部环节构成远程调用链路。grpc远程过程调用(grpc remote procedure calls,grpc)作为远程调用框架之一,近年来在云原生和分布式系统领域发展迅速,特别是云平台k8s的快速发展,使得grpc也受到了越来越多的关注。在基于grpc实现的远程调用中,首先客户端与服务端建立连接,然后客户端向服务端发送远程调用请求,服务端接收到并处理该远程调用请求后,服务端向客户端返回请求结果。但是,在实际生产环境中存在预设的超时时间失效的问题,例如当grpc服务端所在的k8s集群节点出现宕机时,业务grpc客户端调用服务端的实际耗时远超程序设置的超时时间。

技术实现思路

1、考虑到上述问题而提出了本发明。本发明实施例公开了一种超时处理方法、电子设备、存储介质和计算机程序产品。本技术方案所提供的超时处理方法中,由目标线程创建异步线程,在异步线程中执行异步调用方法,并且由创建异步线程开始,目标线程在第二超时时间内等待获取异步调用方法的执行结果,超过第二超时时间未获取到执行结果,说明客户端未接收到目标服务端返回的请求结果,以此则确定远程调用超时。第二超时时间的计时起点为目标线程创建异步线程的时刻,因此,第二超时时间至少可以覆盖异步线程执行的异步调用方法中的建立连接阶段,如此可以避免建立连接阶段中,异步调用方法中设置的第一超时时间不生效的问题,从而可以确保远程调用过程中,实际等待的时间不超过第二超时时间,在此基础上,第二超时时间等于第一超时时间,可以确保远程调用过程的实际耗时不会超过程序设置的超时时间,例如可以确保业务grpc客户端调用服务端的实际耗时不会超过程序设置的超时时间。通过第二超时时间确定远程调用超时,可以避免出现预设的超时时间失效的问题,确定超时更加准确,利于进行后续的超时异常处理逻辑,整体稳定性更好,利于避免因业务请求堆积而导致的雪崩风险。另外,超时处理方法并未改变异步调用方法的源码,更加易于实施。

2、根据本发明的一个方面,提供一种超时处理方法,包括:响应于业务请求,由目标线程创建异步线程;由异步线程执行异步调用方法,在异步调用方法中,向目标服务端发送远程调用请求并等待接收目标服务端返回的请求结果,异步调用方法设置有第一超时时间,第一超时时间用于限制向目标服务端发出远程调用请求后的最大等待时长;从目标线程创建异步线程开始,由目标线程等待获取异步调用方法的执行结果,超过第二超时时间未获取到执行结果则确定远程调用超时,其中,执行结果基于第一超时时间内请求结果的返回情况生成,第二超时时间等于第一超时时间;由目标线程在远程调用超时时执行第一失败回调方法。

3、示例性地,在异步调用方法中,通过异步结果容器等待接收目标服务端返回的请求结果,异步结果容器设置有第一回调接口,第一回调接口用于对异步结果容器进行监听,并基于异步结果容器内请求结果的返回情况生成执行结果。

4、示例性地,由目标线程等待获取异步调用方法的执行结果,超过第二超时时间未获取到执行结果则确定远程调用超时,包括:由目标线程通过第二回调接口监听执行结果,并通过第二回调接口在超过第二超时时间未获取到执行结果时确定远程调用超时,在第二超时时间内获取到执行结果时确定远程调用未超时。

5、示例性地,基于异步结果容器内请求结果的返回情况生成执行结果包括:若异步结果容器具有在第一超时时间内返回的请求结果,则执行第一成功回调方法,以获得执行结果;第一成功回调方法中,若请求结果正常,则生成用于指示远程调用正常的执行结果,若请求结果异常,则生成用于指示远程调用异常的执行结果;超时处理方法还包括:若异步结果容器不具有在第一超时时间内返回的请求结果,则执行第二失败回调方法;第二失败回调方法中,将目标服务端由当前服务端切换为下一服务端。

6、示例性地,由目标线程等待获取异步调用方法的执行结果,超过第二超时时间未获取到执行结果则确定远程调用超时,包括:由目标线程通过第二回调接口监听执行结果,并通过第二回调接口在超过第二超时时间未获取到执行结果时确定远程调用超时,在第二超时时间内获取到执行结果时确定远程调用未超时;超时处理方法还包括:由目标线程通过第二回调接口在远程调用未超时时,若执行结果指示远程调用正常,则执行第二成功回调方法,若执行结果指示远程调用异常,则执行第一失败回调方法;由目标线程在远程调用超时时执行第一失败回调方法包括:由目标线程通过第二回调接口在远程调用超时时,执行第一失败回调方法;第二成功回调方法用于确定异步调用方法成功执行并退出异步线程,第一失败回调方法用于将目标服务端由当前服务端切换为下一服务端。

7、示例性地,在第二失败回调方法或第一失败回调方法中,通过分布式服务器指定下一服务端,或者,自动选择下一服务端。

8、示例性地,目标线程设置有倒数计数器,倒数计数器初始计数设置为1,第一失败回调方法还用于将倒数计数器重置为0,以释放异步线程。

9、根据本发明的另一个方面,提供一种电子设备。电子设备包括处理器和存储器,存储器中存储有计算机程序指令,计算机程序指令被处理器运行时用于执行如上文所述中的任一种超时处理方法。

10、根据本发明的又一个方面,提供一种存储介质,在存储介质上存储了程序指令,程序指令在运行时用于执行如上文所述中的任一种超时处理方法。

11、根据本发明的再一个方面,提供一种计算机程序产品,包括计算机程序指令,计算机程序指令在运行时用于执行如上文所述中的任一种超时处理方法。

12、上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

1.一种超时处理方法,其特征在于,所述超时处理方法包括:

2.根据权利要求1所述的超时处理方法,其特征在于,在所述异步调用方法中,通过异步结果容器等待接收所述目标服务端返回的请求结果,所述异步结果容器设置有第一回调接口,所述第一回调接口用于对所述异步结果容器进行监听,并基于所述异步结果容器内所述请求结果的返回情况生成所述执行结果。

3.根据权利要求2所述的超时处理方法,其特征在于,所述由所述目标线程等待获取所述异步调用方法的执行结果,超过第二超时时间未获取到所述执行结果则确定远程调用超时,包括:

4.根据权利要求2所述的超时处理方法,其特征在于,所述基于所述异步结果容器内所述请求结果的返回情况生成所述执行结果包括:

5.根据权利要求4所述的超时处理方法,其特征在于,所述由所述目标线程等待获取所述异步调用方法的执行结果,超过第二超时时间未获取到所述执行结果则确定远程调用超时,包括:

6.根据权利要求4或5所述的超时处理方法,其特征在于,在所述第二失败回调方法或所述第一失败回调方法中,

7.根据权利要求5所述的超时处理方法,其特征在于,所述目标线程设置有倒数计数器,所述倒数计数器初始计数设置为1,所述第一失败回调方法还用于将所述倒数计数器重置为0,以释放所述异步线程。

8.一种电子设备,包括处理器和存储器,其特征在于,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器运行时用于执行如权利要求1-7任一项所述的超时处理方法。

9.一种存储介质,在所述存储介质上存储了程序指令,其特征在于,所述程序指令在运行时用于执行如权利要求1-7任一项所述的超时处理方法。

10.一种计算机程序产品,包括计算机程序指令,其特征在于,所述计算机程序指令在运行时用于执行如权利要求1-7任一项所述的超时处理方法。