远程过程调用控制方法、装置、设备及计算机存储介质与流程

文档序号:36390180发布日期:2023-12-15 07:51阅读:24来源:国知局
远程过程调用控制方法与流程

本技术涉及计算机,尤其涉及远程过程调用,提供一种远程过程调用控制方法、装置、设备及计算机存储介质。


背景技术:

1、随着系统复杂度的提升,同时对系统扩展性要求的提高,为了满足这两个看起来矛盾的要求,微服务架构应运而生。在微服务架构中,将不同的功能和模块以服务的形式进行切割,彼此之间成为跨进程甚至是跨服务器之间的功能组件,并且彼此之间通过网络远程过程调用(remote procedure call,rpc)的方式进行协作和互联互通。

2、在一个微服务a调用另一微服务b的过程中,如果微服务b出现了异常,那么微服务b就会出现服务超时的情况,而当网络压力较大时,微服务b可能积压了大量的超时调用,当更多调用请求到来时,超时情况可能进一步恶化,甚至使得微服务b崩溃。为了避免这一情况,微服务架构中引入了超时时长(deadline time)参数,该参数在整个调用链路中进行传递,例如:当微服务b发现自身的业务处理时长已超过超时时长时,就会停止已超时的业务逻辑的处理,并释放相关的内存和网络资源,从而避免微服务b崩溃。

3、但是,由于目前传递的超时时长在整个调用链路中对于所有微服务都是共享的,那么一旦某个微服务超时,由于调用该微服务的其他微服务也将超时,使得这些微服务之前已经完成的业务逻辑也将作废,从而产生了资源浪费。


技术实现思路

1、本技术实施例提供一种远程过程调用控制方法、装置、设备及计算机存储介质,用于进行微服务调用时逐渐缩减超时时间,避免全链路超时,减少资源浪费。

2、一方面,提供一种远程过程调用控制方法,应用于微服务集群中的第一微服务,所述第一微服务为微服务集群中的任一微服务,所述方法包括:

3、当接收的第一调用请求的处理过程涉及对第二微服务的调用时,确定所述第二微服务对应的缩减时长;

4、基于所述第一调用请求对应的第一超时时长,确定所述第二微服务对应的第二超时时长,所述第二超时时长对应的超时时刻早于所述第一超时时长对应的超时时刻;

5、基于所述第一超时时长以及所述缩减时长,向所述第二微服务发起第二调用请求;

6、基于所述第二微服务针对所述第二调用请求返回的有损响应,对所述第一调用请求进行处理;所述有损响应为所述第二微服务根据所述第二超时时长以及所述缩减时长确定的实际超时时长,确定所述第二调用请求处理超时时,基于所述第二调用请求的已处理部分返回的。

7、一方面,提供一种远程过程调用控制装置,应用于微服务集群中的第一微服务,所述第一微服务为微服务集群中的任一微服务,所述装置包括:

8、确定单元,用于当接收的第一调用请求的处理过程涉及对第二微服务的调用时,确定所述第二微服务对应的缩减时长;以及,基于所述第一调用请求对应的第一超时时长,确定所述第二微服务对应的第二超时时长,所述第二超时时长对应的超时时刻早于所述第一超时时长对应的超时时刻;

9、调用单元,基于所述第一超时时长以及所述缩减时长,向所述第二微服务发起第二调用请求;

10、超时执行单元,用于基于所述第二微服务针对所述第二调用请求返回的有损响应,对所述第一调用请求进行处理;所述有损响应为所述第二微服务根据所述第二超时时长以及所述缩减时长确定的实际超时时长,确定所述第二调用请求处理超时时,基于所述第二调用请求的已处理部分返回的。

11、可选的,所述确定单元,用于:

12、当所述第一调用请求的处理过程涉及对所述第二微服务的调用时,确定调用所述第二微服务的预测调用时延,所述预测调用时延为调用所述第二微服务过程中数据传输路径所需消耗的预测时长;

13、基于获得的预测调用时延,确定所述缩减时长。

14、可选的,所述确定单元,用于采用如下方式中的至少一种,确定所述预测调用时延:

15、基于历史周期内同一时段调用所述第二微服务时数据传输路径消耗的实际调用时延,确定所述预测调用时延;

16、基于所述第一微服务与所述第二微服务之间的网络拓扑信息,确定所述预测调用时延;

17、基于调用所述第二微服务的请求数据包的第一特征确定相应的响应数据包的第二特征,并基于所述第一特征与所述第二特征,确定所述预测调用时延。

18、可选的,所述装置还包括时延统计单元,用于:

19、在向所述第二微服务发起第三调用请求时,记录所述第三调用请求的发送时刻;

20、在接收所述第二微服务针对所述第三调用请求返回的响应消息时,记录所述响应消息的接收时刻;

21、基于所述发送时刻与所述接收时刻确定所述第三调用请求的调用总耗时;

22、基于所述响应消息,获取所述第二微服务处理所述第三调用请求的处理总耗时,并基于所述调用总耗时与所述处理总耗时,确定所述第三调用请求的实际调用时延。

23、可选的,所述时延统计单元,具体用于:

24、在所述第三调用请求发送时,读取自身对应的单调时钟的当前时刻数据,确定为所述发送时刻;其中,所述单调时钟的时长数据单调递增;

25、在所述响应消息接收时,读取自身对应的单调时钟的当前时刻数据,确定为所述接收时刻。

26、可选的,所述第二微服务包括位于不同地理位置的多个服务节点,则所述确定单元,具体用于:

27、获取对所述多个服务节点进行调用时,各服务节点各自对应的实际调用时延;

28、基于获得的各个实际调用时延,对所述多个服务节点进行网络区域划分,获得至少一个网络区域类别,每个网络区域类别对应一个时延区间,且不同网络区域类别对应的时延区间不同;

29、基于所述第二调用请求对应的服务节点所在网络区域类别对应的时延区间,确定所述预测调用时延。

30、可选的,所述确定单元,具体用于:

31、基于所述第一超时时长与所述第一调用请求的已处理耗时之间的差值,确定所述第二超时时长;或者,

32、基于所述缩减时长确定所述第二超时时长的至少一个候选值,并将所述至少一个候选值中,超时时刻早于所述第一超时时长对应的超时时刻的候选值确定为所述第二超时时长;或者,

33、基于所述第一超时时长与所述缩减时长之间的差值,确定所述第二超时时长。

34、可选的,所述装置还包括超时控制单元,用于:

35、基于所述第一调用请求,获取所述第一超时时长;

36、响应于所述第一调用请求,获取所述第一微服务处理所述第一调用请求时,相对于所述第一超时时长的缩减时长;

37、基于所述第一超时时长与所述缩减时长,确定所述第一微服务处理所述第一调用请求的实际超时时长;

38、在所述第一调用请求的处理过程中,若基于所述实际超时时长确定所述第一调用请求的处理已超时,则基于所述第一调用请求的已处理部分向所述第一调用请求的发送方返回响应。

39、可选的,所述超时控制单元,具体用于:

40、对所述第一调用请求进行解析,获取所述第一调用请求包括的业务数据,所述业务数据包括指示超时时长的超时时长字段;

41、调用所述业务数据对应的业务解析方法,对所述超时时长字段对应的参数值进行解析,以获取所述第一超时时长。

42、可选的,所述超时控制单元,具体用于:

43、在接收到第一调用请求时,从所述第一调用请求的发送方获取所述第一调用请求的调用控制属性信息,所述调用控制属性信息通过超文本传输协议的头部字段承载,或者通过远程过程调用协议的元数据承载;

44、对所述调用控制属性信息包含的超时时长字段对应的参数值进行解析,以获取所述第一超时时长。

45、可选的,所述超时执行单元,具体用于:

46、在向所述第二微服务发起第二调用请求时,记录所述第二调用请求的发送时刻;

47、在第二调用请求的调用过程中,若确定当前时刻与所述第二调用请求的发送时刻之间的差值大于所述第二超时时长,且仍未接收到所述第二微服务针对所述第二调用请求的响应,则确定所述第二调用请求的响应超时;

48、基于所述第一调用请求的已处理部分,向所述第一调用请求对应的发送方返回响应。

49、一方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种方法的步骤。

50、一方面,提供一种计算机存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种方法的步骤。

51、一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种方法的步骤。

52、本技术实施例中,当第一微服务被调用以处理第一调用请求,若该处理过程涉及到对第二微服务的调用时,则第一微服务需要确定调用第二微服务时的缩减时长,并结合自身的第一超时时长确定第二微服务对应的第二超时时长,使得第二超时时长对应的超时时刻早于第一超时时长对应的超时时刻,并将缩减时长和第二超时时长发送给第二微服务,使得第二微服务能够在第二超时时长的基础上进一步进行缩减,从而发生超时时能够提前触发,这样,一旦第二微服务超时,则可以有第二微服务进行服务降级,即基于已处理的部分返回有损响应,由于第一微服务还未超时,则第一微服务能够基于有损响应继续处理第一调用请求,从而能够避免单个微服务超时使得全链路超时,且第一调用请求以及第二调用请求的已处理部分也不会作废,从而避免整个系统中充斥大量无用的、被丢弃了的网络流量,减少资源浪费。

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