服务调用方法、装置、电子设备及存储介质制造方法及图纸

技术编号:25947555 阅读:64 留言:0更新日期:2020-10-17 03:39
本公开关于一种服务调用方法、装置、电子设备及存储介质,所述方法包括:获取任务处理请求;确定所述子任务对应的子目标服务;为所述任务处理请求分配第一调用线程,所述第一调用线程用于依次调用所述子目标服务;在所述第一调用线程调用所述子目标服务的过程中,当确定所述子目标服务处于异常状态时,为所述子目标服务分配第二调用线程,所述第二调用线程用于替代所述第一调用线程调用所述子目标服务;若所述第一调用线程未能在预设的线程间等待时间内,接收到所述第二调用线程返回的所述子目标服务处理所述子任务的处理结果时,则通过所述第一调用线程继续调用下一个所述子任务对应的子目标服务。本公开能提高整个任务处理请求的处理效率。

【技术实现步骤摘要】
服务调用方法、装置、电子设备及存储介质
本公开涉及互联网
,尤其涉及一种服务调用方法、装置、电子设备及存储介质。
技术介绍
随着互联网业务的发展,所能够提供的服务越来越复杂,因此对服务进行了拆分,将一个服务拆分成多个子服务,并部署到不同的服务器上,在需要时再通过RPC(RemoteProcedureCal,远程调用)来调用多个子服务从而提供完全的服务。在互联网服务中,为了完成一个任务,有可能需要使用远程调用请求其他的子服务来完成一些中间步骤,即该任务的子任务,如果被调用的子服务出现故障,有可能导致子任务的处理结果不能及时返回,从而阻塞了整个任务的处理。在严重的情况下,可能因为一个较小的子服务的故障,导致整体的任务都不能继续执行,这种现象称为雪崩。目前业内提出了解决上述调用阻塞的问题的方案,比如超时机制。具体来说,超时机制是设置一个超时时间,当某个子服务的远程调用的耗时超过超时时间后,则确定为针对该子服务的远程调用失败,则可以继续远程调用下一个子服务,从而保证了后续子任务可以继续执行,同时避免计算资源一直被占用。然而,超时机制存在的问题是,为了避免少量的服务性能抖动就导致远程调用超时失败,所以超时时间通常设置得比较长,这意味着如果被调用的子服务或网络长时间故障时,有可能导致所有的子任务都会增加等待比较长的等待时间,而在某个子服务的调用长期故障时,仍然会导致雪崩的发生。可见,超时时间设置过长不能解决故障情况下的阻塞问题,因此如何合理调整调用子服务的超时时长,从而避免长时间阻塞,提高任务处理请求的处理效率,是亟待解决的问题。
技术实现思路
本公开提供一种服务调用方法、装置、电子设备及存储介质,以至少解决相关技术中调用子服务的超时时长不合理,导致长时间阻塞,任务处理请求的处理效率低下的问题。本公开的技术方案如下:根据本公开实施例的第一方面,提供一种服务调用方法,所述方法包括:一种服务调用方法,其特征在于,所述方法包括:获取任务处理请求;所述任务处理请求包括至少一个待处理的子任务;确定所述子任务对应的子目标服务;所述子目标服务用于处理所述子任务并返回处理结果;为所述任务处理请求分配第一调用线程,所述第一调用线程用于依次调用所述子目标服务;在所述第一调用线程调用所述子目标服务的过程中,当确定所述子目标服务处于异常状态时,为所述子目标服务分配第二调用线程,所述第二调用线程用于替代所述第一调用线程调用所述子目标服务;若所述第一调用线程未能在预设的线程间等待时间内,接收到所述第二调用线程返回的所述子目标服务处理所述子任务的处理结果时,则通过所述第一调用线程继续调用下一个所述子任务对应的子目标服务;其中,所述线程间等待时间小于所述第一调用线程对应的第一超时时间,所述第一超时时间为所述第一调用线程判断是否停止调用所述子目标服务的等待时间。在一示例性实施例中,在所述为所述子目标服务分配第二调用线程之前,所述方法还包括:获取所述子目标服务的状态描述数据;所述状态描述数据用于表征所述子目标服务对所述子任务的响应状态;根据所述状态描述数据,确定所述子目标服务处于异常状态或者正常状态。在一示例性实施例中,当所述状态描述数据为权重值时,所述权重值用于表征所述子目标服务被成功调用的次数在其被调用总次数中的比重;所述根据所述状态描述数据,确定所述子目标服务处于异常状态或者正常状态,包括:当所述权重值小于预设阈值时,确定所述子目标服务处于异常状态;当所述权重值大于或等于预设阈值时,确定所述子目标服务处于正常状态。在一示例性实施例中,在所述为所述子目标服务分配第二调用线程之后,所述方法还包括:当在第二超时时间内,通过所述第二调用线程获取到所述子目标服务处理所述子任务的处理结果,则增加所述权重值;其中,第二超时时间为所述第二调用线程判断是否停止调用所述子目标服务的等待时间;当未在第二超时时间内,通过所述第二调用线程接收到所述子目标服务处理所述任务的处理结果,则减小所述权重值。在一示例性实施例中,当所述状态描述数据为所述子目标服务返回所述子任务的处理结果的耗时时间时,所述根据所述状态描述数据,确定所述子目标服务处于异常状态或者正常状态,包括:获取所述子目标服务返回所述子任务的每个处理结果的耗时时间;根据每个处理结果的耗时时间,获取所述子目标服务在预设时间区间内返回所述子任务的多个处理结果的平均耗时时间;当所述平均耗时时间大于或等于预设指标阈值时,确定所述子目标服务处于异常状态;当所述平均耗时时间小于所述预设指标阈值时,确定所述子目标服务处于正常状态。在一示例性实施例中,所述为所述子目标服务分配第二调用线程,包括:获取所述子目标服务对应的所述子任务的任务处理等级标识;根据所述任务处理等级标识,确定所述子任务为第一处理等级任务或者第二处理等级任务;其中,所述第一处理等级任务的任务重要程度低于所述第二处理等级任务的任务重要程度;当确定所述子任务为第一处理等级任务时,为所述子目标服务分配所述第二调用线程;当确定所述子任务为第二处理等级任务时,拒绝为所述子目标服务分配所述第二调用线程。在一示例性实施例中,在所述为所述子目标服务分配第二调用线程之后,所述方法还包括:在所述线程间等待时间内,通过所述第一调用线程接收所述第二调用线程返回的所述子目标服务处理所述子任务的处理结果。在一示例性实施例中,在所述为所述任务处理请求分配第一调用线程之后,所述方法还包括:当确定所述子目标服务处于正常状态时,通过所述第一调用线程获取所述子目标服务处理所述子任务的处理结果。在一示例性实施例中,所述方法还包括:当完成对多个所述子目标服务的调用时,组合多个所述子目标服务返回的处理结果,得到所述任务处理请求对应的任务处理结果;将所述任务处理结果发送至所述任务处理请求对应的请求端。根据本公开实施例的第二方面,提供一种服务调用装置,所述装置包括:任务处理请求获取单元,被配置为执行获取任务处理请求;所述任务处理请求包括至少一个待处理的子任务;子目标服务确定单元,被配置为执行确定所述子任务对应的子目标服务;所述子目标服务用于处理所述子任务并返回处理结果;第一调用线程分配单元,被配置为执行为所述任务处理请求分配第一调用线程,所述第一调用线程用于依次调用所述子目标服务;第二调用线程分配单元,被配置为执行在所述第一调用线程调用所述子目标服务的过程中,当确定所述子目标服务处于异常状态时,为所述子目标服务分配第二调用线程,所述第二调用线程用于替代所述第一调用线程调用所述子目标服务;继续调用单元,被配置为执行若所述第一调用线程未能在预设的线程间等待时间内,接收到所述第二调用线程返回的所述子目标服务处理所述子任务的处理结果时,则通过所述第一调用线程继续调用下一个所述子任务对应的子目标本文档来自技高网
...

【技术保护点】
1.一种服务调用方法,其特征在于,所述方法包括:/n获取任务处理请求;所述任务处理请求包括至少一个待处理的子任务;/n确定所述子任务对应的子目标服务;所述子目标服务用于处理所述子任务并返回处理结果;/n为所述任务处理请求分配第一调用线程,所述第一调用线程用于依次调用所述子目标服务;/n在所述第一调用线程调用所述子目标服务的过程中,当确定所述子目标服务处于异常状态时,为所述子目标服务分配第二调用线程,所述第二调用线程用于替代所述第一调用线程调用所述子目标服务;/n若所述第一调用线程未能在预设的线程间等待时间内,接收到所述第二调用线程返回的所述子目标服务处理所述子任务的处理结果时,则通过所述第一调用线程继续调用下一个所述子任务对应的子目标服务;其中,所述线程间等待时间小于所述第一调用线程对应的第一超时时间,所述第一超时时间为所述第一调用线程判断是否停止调用所述子目标服务的等待时间。/n

【技术特征摘要】
1.一种服务调用方法,其特征在于,所述方法包括:
获取任务处理请求;所述任务处理请求包括至少一个待处理的子任务;
确定所述子任务对应的子目标服务;所述子目标服务用于处理所述子任务并返回处理结果;
为所述任务处理请求分配第一调用线程,所述第一调用线程用于依次调用所述子目标服务;
在所述第一调用线程调用所述子目标服务的过程中,当确定所述子目标服务处于异常状态时,为所述子目标服务分配第二调用线程,所述第二调用线程用于替代所述第一调用线程调用所述子目标服务;
若所述第一调用线程未能在预设的线程间等待时间内,接收到所述第二调用线程返回的所述子目标服务处理所述子任务的处理结果时,则通过所述第一调用线程继续调用下一个所述子任务对应的子目标服务;其中,所述线程间等待时间小于所述第一调用线程对应的第一超时时间,所述第一超时时间为所述第一调用线程判断是否停止调用所述子目标服务的等待时间。


2.根据权利要求1所述的服务调用方法,其特征在于,在所述为所述子目标服务分配第二调用线程之前,所述方法还包括:
获取所述子目标服务的状态描述数据;所述状态描述数据用于表征所述子目标服务对所述子任务的响应状态;
根据所述状态描述数据,确定所述子目标服务处于异常状态或者正常状态。


3.根据权利要求2所述的服务调用方法,其特征在于,当所述状态描述数据为权重值时,所述权重值用于表征所述子目标服务被成功调用的次数在其被调用总次数中的比重;
所述根据所述状态描述数据,确定所述子目标服务处于异常状态或者正常状态,包括:
当所述权重值小于预设阈值时,确定所述子目标服务处于异常状态;
当所述权重值大于或等于预设阈值时,确定所述子目标服务处于正常状态。


4.根据权利要求3所述的服务调用方法,其特征在于,在所述为所述子目标服务分配第二调用线程之后,所述方法还包括:
当在第二超时时间内,通过所述第二调用线程获取到所述子目标服务处理所述子任务的处理结果,则增加所述权重值;其中,第二超时时间为所述第二调用线程判断是否停止调用所述子目标服务的等待时间;
当未在第二超时时间内,通过所述第二调用线程接收到所述子目标服务处理所述任务的处理结果,则减小所述权重值。


5.根据权利要求2所述的服务调用方法,其特征在于,当所述状态描述数据为所述子目标服务返回所述子任务的处理结果的耗时时间时,所述根据所述状态描述数据,确定所述子目标服务处于异常状态或者正常状态,包括:
获取所述子目标服务返回所述子任务的每个处理结果的耗时时间;
根据每个处理结果的耗时时间,获取所述子目标服务在预设时间区间内返回所述子任务的多个处理...

【专利技术属性】
技术研发人员:曹福祥邢志浩刘希诚王玉龙何锐贺群斐
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:北京;11

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

1