基于时间刻度策略的集群容错处理方法、装置及设备与流程
本发明实施例涉及计算机应用系统,特别涉及一种基于时间刻度策略的集群容错处理方法、装置及设备。
背景技术:
1、在分布式系统与微服务架构中,服务间的远程调用(rpc)无处不在。由于网络不稳定、服务器资源耗尽、服务宕机等原因,远程调用失败是常态而非例外。为了构建高可用的系统,集群容错策略成为了核心组件。失败重试策略是一种简单而有效的方法,当调用失败时,系统会在一定时间后重新尝试发起调用,以期在短暂的故障恢复后能够成功。然而,现有的失败重试实现,尤其是涉及延时重试和超时控制的场景,存在显著的技术缺陷:
2、定时器管理效率低下:传统的重试机制通常依赖于scheduledthreadpoolexecutor或类似的定时任务线程池。每次重试都需要创建一个延时任务。当系统面临海量并发请求且出现大规模瞬时故障时,会瞬间创建数百万计的定时任务。这会导致定时任务队列急剧膨胀,使得任务的添加、取消和到期执行操作变得极其沉重,cpu 资源大量消耗在任务调度上,而非真正的业务处理,严重制约系统在高负载下的性能和可伸缩性。
3、内存与gc压力巨大:每一个定时任务都是一个独立的对象。在海量重试场景下,数千万个任务对象会驻留在内存中,给java虚拟机的垃圾回收带来巨大压力,容易引发outofmemoryerror或导致因频繁full gc而产生的服务暂停。
4、资源清理不及时:当主调用成功或调用方因超时而放弃后,对应的等待重试任务若不能及时被取消,会成为“僵尸任务”,不仅占用内存,在其最终执行时也可能进行无意义的冗余调用,浪费网络和计算资源。
技术实现思路
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、下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。
1.一种基于时间刻度策略的集群容错处理方法,其特征在于,包括:
2.根据权利要求1所述的基于时间刻度策略的集群容错处理方法,其特征在于,所述基于所述失败信息实例化重试任务,包括:
3.根据权利要求2所述的基于时间刻度策略的集群容错处理方法,其特征在于,所述调用拦截器根据所述失败信息及重试任务对象实例化所述重试任务,包括:
4.根据权利要求3所述的基于时间刻度策略的集群容错处理方法,其特征在于,根据所述失败信息及重试任务对象确定任务重试信息,包括:
5.根据权利要求1所述的基于时间刻度策略的集群容错处理方法,其特征在于,所述利用时间刻度调度引擎确定所述重试任务在时钟轮上的目标槽位,包括:
6.根据权利要求1所述的基于时间刻度策略的集群容错处理方法,其特征在于,所述利用所述时间刻度调度引擎结合所述延迟时间计算所述重试任务在时钟轮上的目标槽位,包括:
7.根据权利要求6所述的基于时间刻度策略的集群容错处理方法,其特征在于,所述响应于所述重试任务的触发,执行所述重试任务,包括:
8.根据权利要求5所述的基于时间刻度策略的集群容错处理方法,其特征在于,所述根据所述重试任务的执行结果确定是否继续执行所述重试任务,包括:
9.一种基于时间刻度策略的集群容错处理装置,其特征在于,包括:
10.一种电子设备,其特征在于,包括:
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com