有序任务的执行方法、执行装置和执行系统与流程

文档序号:24412046发布日期:2021-03-26 19:45阅读:119来源:国知局
有序任务的执行方法、执行装置和执行系统与流程

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.图1示出了本发明的一个实施例的有序任务的执行方法的流程图;
37.图2示出了本发明的又一个实施例的有序任务的执行方法的流程图;
38.图3示出了本发明的又一个实施例的有序任务的执行方法的流程图;
39.图4示出了本发明的又一个实施例的有序任务的执行方法的流程图;
40.图5示出了本发明的一个实施例的有序任务的执行装置的示意图;
41.图6示出了本发明的一个实施例的有序任务的执行系统的示意图;
42.图7示出了本发明的一个实施例的任务接收器的示意图;
43.图8示出了本发明的一个实施例的任务调度器的示意图;
44.图9示出了本发明的一个实施例的结果集存储器的示意图。
45.其中,附图标记与部件名称之间的对应关系为:
46.500有序任务的执行装置,502任务接收器,504任务调度器,506结果集存储器,508幂等执行器,510任务执行器组,600有序任务的执行系统,602存储器,604处理器。
具体实施方式
47.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
48.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
49.下面参照图1至图9描述根据本发明的一些实施例提供的有序任务的执行方法、有序任务的执行装置、有序任务的执行系统和可读存储介质。
50.实施例一
51.如图1所示,实施例一提供了一种有序任务的执行方法,包括:
52.步骤102,接收任务信息,其中,任务信息携带有组号和序号;
53.步骤104,根据组号和序号,对任务信息进行分组排序存储,以生成待执行任务组;
54.步骤106,获取任务执行器组的工作状态;
55.步骤108,基于任务执行器组的空闲状态,发送待执行任务组至任务执行器组,以供任务执行器组执行待执行任务组;
56.步骤110,将任务执行器组执行完成的任务信息分组排序存储至完成任务集。
57.本发明实施例提供的有序任务的执行方法,通过接收携带有组号和序号的任务信息,以便对接收的任务信息按照组号和序号进行分组排序存储,并生成待执行任务组,使得任务执行器组在执行待执行任务组时,能够按照任务信息在待执行任务组中的排序进行执行,从而实现所有的任务信息能够按照既定的顺序执行,保证一组内有相关性和顺序性的任务信息执行顺序的一致性。具体地,在进行分组排序存储时,将任务信息按照组号进行分组,并按照序号确定任务信息在组内的顺序。进一步地,通过将任务执行器组执行完成的任务信息分组排序存储至完成任务集,以便在完成任务集中判断是否执行幂等逻辑,从而不必在业务代码中判断是否执行幂等逻辑,降低了判断幂等逻辑的复杂性、重复性问题,从而保证了任务执行失败后幂等业务逻辑的统一调用能够实现。更进一步的,通过对接收的任务信息按照组号和序号进行分组排序存储,以及将任务执行器组执行完成的任务信息分组排序存储至完成任务集,解决了分布式系统中多个有序的任务进行异步按序执行的问题,
以及当其他任务执行出现异常后,进行幂等回滚其他已经执行完成的任务,从而确保了任务组中的任务信息的一致性,进而同时实现确保有序任务组中的任务的有序执行和任务失败后的统一幂等回滚逻辑调用。此外,通过主动获取任务执行器组的工作状态,进而在任务执行器组空闲状态时,将待执行任务组发送至任务执行器组,以供任务执行器组进行执行,提高了响应速度和用户体验,从而提高了任务信息的执行效率。
58.在该实施例中,有序任务的执行方法能够确保在分布式系统中相关业务的有序执行,并且提高了对业务服务器的响应速度,简化了业务领域开发的流程,通过统一的机制处理顺序任务,做了到可监测、可追溯,降低了相关技术中在业务代码中进行幂等操作的业务代码的复杂性,有效的提高了开发效率。
59.在该实施例中,通过接收业务服务器发送的携带有组号和序号的任务信息,实现了确保不同应用发布的任务能够按照其既定顺序执行。具体地,业务服务器对需要保证顺序性的一组任务给定唯一的组号和组内的序号,以便对接收到的任务信息进行分组排序存储。
60.在该实施例中,有序任务的执行方法实现了控制和调节任务执行的速度,提高系统处理效率。在该实施例中,以任务执行器组的空闲状态为依据,拉取需要执行的待执行任务组,并将待执行任务组中的任务信息分配到任务执行器组中触发任务信息的执行,并将任务信息的执行结果分组排序存储。
61.在该实施例中,通过对已执行完成的任务信息按照执行状态进行分类、分组、排序存储,以备后续根据任务信息的执行状态(即任务信息执行成功或者任务信息执行失败)进行统一的幂等回滚调用。
62.在一种实施方式中,对于网络等异常问题导致任务信息到达顺序不一致,以致接收的任务信息与既定顺序不符的问题,由于对接收的任务信息按照组号和序号进行分组排序存储,保证一组任务的组内有序性,使得存储后的待执行任务组中的排序与既定顺序相符,从而实现了确保任务执行器组能够按照既定顺序执行任务。
63.在另一种实施方式中,将任务执行器组执行完成的任务信息分组排序存储至完成任务集,也即,对于已经执行完成的任务信息,根据组号和序号存储至完成任务集。具体地,根据组号对已经执行完成的任务信息进行分组,根据序号对各个组内的任务信息进行排序。通过对执行完成的任务信息分组排序存储,能够提高判断是否执行幂等逻辑的效率和准确性,从而保证了任务执行失败后幂等业务逻辑的统一调用能够实现。
64.实施例二
65.如图2所示,在实施例一的基础上,实施例二提供了一种有序任务的执行方法,进一步限定了任务执行器组执行待执行任务组的步骤,具体包括:
66.步骤202,获取待执行任务组中的任务信息;
67.步骤204,根据任务信息的序号,判断当前任务信息的前一任务信息是否存在于完成任务集,在判断结果为是时,执行步骤206,在判断结果为否时,执行步骤208;
68.步骤206,基于前一任务信息存在于完成任务集的判断结果,执行当前任务信息;
69.步骤208,基于前一任务信息未存在于完成任务集的判断结果,继续执行前一任务信息。
70.在该实施例中,任务执行器组执行待执行任务组时,先获取待执行任务组中一个
需要执行的任务信息,然后根据任务信息的序号,判断当前任务信息的前一任务信息是否存在于完成任务集中,也即,判断前一任务信息是否执行完毕,以确认是执行当前任务信息,还是继续执行前一任务信息,从而避免在前一任务信息未执行完毕的情况下,执行当前信息,导致一组任务无法有序执行,进而实现所有的任务信息能够按照既定的顺序执行,保证一组内有相关性和顺序性的任务信息执行顺序的一致性。具体地,在前一任务信息存在于完成任务集的情况下,也即,在前一任务信息执行完毕的情况下,则执行当前任务信息;在前一任务信息未存在于完成任务集的情况下,也即,在前一任务信息未执行完毕的情况下,此时,不能执行当前任务信息,而是继续执行前一任务信息,以保证所有的任务信息能够按照既定的顺序执行。
71.在一种实施方式中,在执行完当前任务信息后,还包括:查看当前待执行任务组中是否有可执行任务。在当前待执行任务组中有可执行的任务信息的情况下,根据当前任务信息的序号,继续执行当前待执行任务组中的下一任务信息;在当前待执行任务组中没有可执行的任务信息的情况下,根据当前待执行任务组的组号,获取下一待执行任务组。通过查看当前待执行任务组中是否有可执行任务,从而在当前待执行任务组中没有可执行任务信息时,重新获取待执行任务组,以保证所有待执行任务组能够被有序的执行。
72.在另一种实施方式中,还可以根据执行器组的空闲繁忙状态,给执行器组分配任务,以控制任务信息的执行速度。
73.在另一种实施方式中,同一个待执行任务组的任务信息在相同的任务执行器上执行,以保证其有序性。其中,任务执行器是任务执行器组中的任一任务执行器。
74.在另一种实施方式中,任务执行器组包括至少两个任务执行器。
75.在另一种实施方式中,不同待执行任务组的任务信息分配到同一任务执行器中,以复用执行器。
76.实施例三
77.如图3所示,在上述任一实施例的基础上,实施例三提供了一种有序任务的执行方法,进一步限定了将任务执行器组的执行结果分组排序存储至完成任务集的步骤,具体包括:
78.步骤302,获取执行完成的任务信息的执行状态,其中,执行状态包括执行成功和执行失败;
79.步骤304,判断任务信息的执行状态是否为执行成功,在判断结果为是时,执行步骤306,在判断结果为否时,执行步骤308;
80.步骤306,将任务信息存储至成功任务集;
81.步骤308,将任务信息存储至失败任务集。
82.在该实施例中,将任务执行器组的执行结果分组排序存储至完成任务集时,获取执行完成的任务信息的执行状态,并根据任务信息的执行状态的不同,将任务信息存储至不同的任务集中。具体地,将执行成功的任务信息存储至成功任务集,将执行失败的任务信息存储至失败任务集。通过根据任务信息的执行状态为执行完成的任务信息分配任务集,使得执行成功的任务信息和执行失败的任务信息分别存储至不同的任务集,从而在进行是否执行幂等逻辑的判断时,只需判断存储至失败任务集中的已执行任务组是否执行幂等回滚操作即可,从而提高了判断是否执行幂等逻辑的效率和准确性,保证了任务执行失败后
幂等业务逻辑的统一调用能够实现。
83.在一种实施方式中,完成任务集包括成功任务集和失败任务集。其中,成功任务集用于存储执行成功的任务集,失败任务集用于存储执行失败的任务集。
84.实施例四
85.如图4所示,在上述任一实施例的基础上,实施例四提供了一种有序任务的执行方法,进一步限定了有序任务的执行方法,还包括:
86.步骤402,获取失败任务集中的任一任务组;
87.步骤404,根据组号和序号,判断任务组中是否有存储于成功任务集中的任务信息,在判断结果为是时,执行步骤406,在判断结果为否时,执行步骤408;
88.步骤406,对存储于成功任务集中的任务信息执行回滚操作;
89.步骤408,将任务组移至完成回滚操作任务集。
90.在该实施例中,有序任务的执行方法还包括获取失败任务集中的任一任务组,以判断是否对任务组执行幂等回滚操作。具体地,根据任务组的组号和序号,判断任务组中是否有存储于成功任务集中的任务信息,也即,判断任务组中是否有执行成功的任务信息,具体地,在任务组中有存储于成功任务集中的任务信息时,对存储于成功任务集中的任务信息执行幂等回滚操作,在任务组中没有存储于成功任务集中的任务信息时,说明不需要对任务组执行幂等回滚操作,此时,直接将任务组移至完成幂等回滚操作任务集。通过判断失败任务集中任一任务组中是否有存储于成功任务集中的任务信息,能够确认任务组中的任务信息是否有执行成功的,从而确认是否需要对任务组执行幂等回滚操作。通过判断失败任务集中任务组中是否有存储于成功任务集中的任务信息,实现确认是否需要对任务组执行幂等回滚操作,从而不必在业务代码中判断是否执行幂等逻辑,降低了判断幂等逻辑的复杂性、重复性问题,提高了判断是否执行幂等逻辑的效率和准确性,从而保证了任务执行失败后幂等业务逻辑的统一调用能够实现。
91.在一种实施方式中,在对存储于成功任务集中的所有任务信息均执行完幂等回滚操作后,将失败任务集中的任务组移至完成幂等回滚操作任务集。
92.在一种实施方式中,完成幂等回滚操作任务集为非完成任务集。
93.实施例五
94.如图5所示,实施例五提供了一种有序任务的执行装置500,包括:任务接收器502,用于接收任务信息,并根据任务信息携带的组号和序号对任务信息进行分组排序存储,以生成待执行任务组;任务调度器504,用于从任务接收器502中拉取待执行任务组并发送至任务执行器组510,以供任务执行器组510执行待执行任务组;结果集存储器506,用于将任务执行器组510执行完成的任务信息分组排序存储至完成任务集。
95.本发明实施例提供的有序任务的执行装置500,包括任务接收器502、任务调度器504和结果集存储器506。通过对接收的任务信息按照组号和序号进行分组排序存储,以及将任务执行器组510执行完成的任务信息分组排序存储至完成任务集,解决了分布式系统中多个有序的任务进行异步按序执行的问题,以及当其他任务执行出现异常后,进行幂等回滚其他已经执行完成的任务,从而确保了任务组中的任务信息的一致性,进而同时实现确保有序任务组中的任务的有序执行和任务失败后的统一幂等回滚逻辑调用。此外,通过任务调度器504主动获取任务执行器组510的工作状态,进而在任务执行器组510空闲状态
时,将待执行任务组发送至任务执行器组510,以供任务执行器组510进行执行,提高了响应速度和用户体验,从而提高了任务信息的执行效率。
96.在该实施例中,有序任务的执行装置能够确保在分布式系统中相关业务的有序执行,并且提高了对业务服务器的响应速度,简化了业务领域开发的流程,通过统一的机制处理顺序任务,做了到可监测、可追溯,降低了相关技术中在业务代码中进行幂等操作的业务代码的复杂性,有效的提高了开发效率。
97.其中,如图7所示,任务接收器502用于接收任务信息,任务信息携带有组号和序号,任务接收器502根据组号和序号对任务信息进行分组排序存储,以供任务调度器504进行调用。通过任务接收器502接收携带有组号和序号的任务信息,并对接收的任务信息按照组号和序号进行分组排序存储,生成待执行任务组,使得任务执行器组510在执行待执行任务组时,能够按照任务信息在待执行任务组中的排序进行执行,从而实现所有的任务信息能够按照既定的顺序执行,保证一组内有相关性和顺序性的任务信息执行顺序的一致性。具体地,在进行分组排序存储时,将任务信息按照组号进行分组,并按照序号确定任务信息在组内的顺序。在该实施例中,通过任务接收器502,实现了确保不同应用发布的任务能够按照其既定顺序执行。在该实施例中,任务接收器502接收业务服务器发送的任务信息,业务服务器对需要保证顺序性的一组任务给定唯一的组号和组内的序号,以便任务接收器502对接收到的任务信息进行分组排序存储,用于任务调度器504进行拉取。
98.如图8所示,任务调度器504用于从任务接收器502中拉取待执行任务组并发送至任务执行器组510,以供任务执行器组510执行待执行任务组。通过任务调度器504从任务接收器502中拉取待执行任务组,并根据任务执行器组510的工作状态,也即,根据任务执行器组510处于空闲状态或繁忙状态,确定是否将待执行任务组发送至任务执行器组510,也即,给任务执行器组510分配需要执行的任务信息,从而实现控制和调节任务信息的执行速度,提高系统处理效率。在该实施例中,通过任务调度器504实现了控制和调节任务执行的速度,提高系统处理效率。在该实施例中,任务调度器504的功能是根据任务执行器组510的空闲状态为依据,从任务接收器502中拉取需要执行的待执行任务组,并将待执行任务组中的任务信息分配到任务执行器组中触发任务信息的执行,并将任务信息的执行结果存入结果集存储器506中。
99.如图9所示,结果集存储器506用于将任务执行器组510执行完成的任务信息分组排序存储至完成任务集。通过将任务执行器组510执行完成的任务信息分组排序存储至完成任务集,以便在完成任务集中判断是否执行幂等逻辑,从而不必在业务代码中判断是否执行幂等逻辑,降低了判断幂等逻辑的复杂性、重复性问题,从而保证了任务执行失败后幂等业务逻辑的统一调用能够实现。在该实施例中,通过结果集存储器506对已执行完成的任务信息按照执行状态进行分类、分组、排序存储,以备后续的幂等执行器508根据任务信息的执行状态(即任务信息执行成功或者任务信息执行失败)进行统一的幂等回滚调用。在该实施例中,结果集存储器506包括成功任务集和失败任务集,并根据分组情况对任务组进行了状态标记。
100.在一种实施方式中,对于网络等异常问题导致任务信息到达顺序不一致,以致接收的任务信息与既定顺序不符的问题,由于任务接收器502对接收的任务信息按照组号和序号进行分组排序存储,保证一组任务的组内有序性,使得存储后的待执行任务组中的排
序与既定顺序相符,从而实现了确保任务执行器组510能够按照既定顺序执行任务。
101.在另一种实施方式中,将任务执行器组510执行完成的任务信息分组排序存储至结果集存储器506的完成任务集,也即,对于已经执行完成的任务信息,根据组号和序号存储至结果集存储器506的完成任务集。具体地,根据组号对已经执行完成的任务信息进行分组,根据序号对各个组内的任务信息进行排序。通过对执行完成的任务信息分组排序存储,能够提高判断是否执行幂等逻辑的效率和准确性,从而保证了任务执行失败后幂等业务逻辑的统一调用能够实现。
102.进一步地,在该实施例中,有序任务的执行装置500还包括:幂等执行器508,用于从结果集存储器506中拉取执行失败的任务组,以执行回滚操作。通过从结果存储器中拉取执行失败的任务组,以执行回滚操作,从而不必在业务代码中判断是否执行幂等逻辑,降低了判断幂等逻辑的复杂性、重复性问题,提高了判断是否执行幂等逻辑的效率和准确性,从而保证了任务执行失败后幂等业务逻辑的统一调用能够实现。在该实施例中,查询结果集存储器存储的任务执行器执行过的任务信息的执行状态,是幂等执行器进行幂等逻辑判断的依据,存储在失败任务集中的任务是后续幂等执行器执行业务回滚的依据。
103.在另一种实施方式中,任务执行器组510执行待执行任务组时,先获取待执行任务组中一个需要执行的任务信息,然后根据任务信息的序号,判断当前任务信息的前一任务信息是否存在于完成任务集中,也即,判断前一任务信息是否执行完毕,以确认是执行当前任务信息,还是继续执行前一任务信息,从而避免在前一任务信息未执行完毕的情况下,执行当前信息,导致一组任务无法有序执行,进而实现所有的任务信息能够按照既定的顺序执行,保证一组内有相关性和顺序性的任务信息执行顺序的一致性。具体地,在前一任务信息存在于完成任务集的情况下,也即,在前一任务信息执行完毕的情况下,则执行当前任务信息;在前一任务信息未存在于完成任务集的情况下,也即,在前一任务信息未执行完毕的情况下,此时,不能执行当前任务信息,而是继续执行前一任务信息,以保证所有的任务信息能够按照既定的顺序执行。
104.在另一种实施方式中,任务执行器组510中的任务执行器在执行完当前任务信息后,还包括:查看当前待执行任务组中是否有可执行任务。在当前待执行任务组中有可执行的任务信息的情况下,根据当前任务信息的序号,继续执行当前待执行任务组中的下一任务信息;在当前待执行任务组中没有可执行的任务信息的情况下,根据当前待执行任务组的组号,获取下一待执行任务组。通过查看当前待执行任务组中是否有可执行任务,从而在当前待执行任务组中没有可执行任务信息时,重新获取待执行任务组,以保证所有待执行任务组能够被有序的执行。
105.在另一种实施方式中,还任务调度器504可以根据执行器组的空闲繁忙状态,给执行器组分配任务,以控制任务信息的执行速度。在另一种实施方式中,任务调度器504在进行给任务执行器组510中的任务执行器分配任务时,同一个待执行任务组的任务信息在相同的任务执行器上执行,以保证其有序性。在另一种实施方式中,任务调度器504在进行给任务执行器组510中的任务执行器分配任务时,不同待执行任务组的任务信息分配到同一任务执行器中,以复用执行器。
106.在另一种实施方式中,有序任务的执行装置500还包括任务执行器组510。
107.在另一种实施方式中,任务执行器组510包括至少两个任务执行器。
108.在另一种实施方式中,结果集存储器506将任务执行器组510的执行结果分组排序存储至完成任务集时,先获取执行完成的任务信息的执行状态,并根据任务信息的执行状态的不同,将任务信息存储至不同的任务集中。具体地,将执行成功的任务信息存储至成功任务集,将执行失败的任务信息存储至失败任务集。通过结果集存储器506根据任务信息的执行状态为执行完成的任务信息分配任务集,使得执行成功的任务信息和执行失败的任务信息分别存储至不同的任务集,从而在幂等执行器508进行是否执行幂等逻辑的判断时,只需判断存储至失败任务集中的已执行任务组是否执行幂等回滚操作即可,从而提高了判断是否执行幂等逻辑的效率和准确性,保证了任务执行失败后幂等业务逻辑的统一调用能够实现。
109.在另一种实施方式中,幂等执行器508获取失败任务集中的任一任务组,以判断是否对任务组执行幂等回滚操作。具体地,幂等执行器508根据任务组的组号和序号,判断任务组中是否有存储于成功任务集中的任务信息,也即,判断任务组中是否有执行成功的任务信息,具体地,在任务组中有存储于成功任务集中的任务信息时,对存储于成功任务集中的任务信息执行幂等回滚操作,在任务组中没有存储于成功任务集中的任务信息时,说明不需要对任务组执行幂等回滚操作,此时,直接将任务组移至完成幂等回滚操作任务集。通过判断失败任务集中任一任务组中是否有存储于成功任务集中的任务信息,能够确认任务组中的任务信息是否有执行成功的,从而确认是否需要对任务组执行幂等回滚操作。通过判断失败任务集中任务组中是否有存储于成功任务集中的任务信息,实现确认是否需要对任务组执行幂等回滚操作,从而不必在业务代码中判断是否执行幂等逻辑,降低了判断幂等逻辑的复杂性、重复性问题,提高了判断是否执行幂等逻辑的效率和准确性,从而保证了任务执行失败后幂等业务逻辑的统一调用能够实现。
110.在另一种实施方式中,在幂等执行器508对存储于成功任务集中的所有任务信息均执行完幂等回滚操作后,将失败任务集中的任务组移至完成幂等回滚操作任务集。
111.在另一种实施方式中,结果集存储器506包括完成任务集和非完成任务集。其中,完成任务集包括成功任务集和失败任务集,非完成任务集包括完成幂等回滚操作任务集。其中,成功任务集用于存储执行成功的任务集,失败任务集用于存储执行失败的任务集。
112.在另一种实施方式中,在对存储于成功任务集中的所有任务信息均执行完幂等回滚操作后,将失败任务集中的任务组移至完成幂等回滚操作任务集。
113.实施例六
114.如图6所示,实施例六提供了一种有序任务的执行系统600,包括:存储器602,存储器602存储有程序或指令;处理器604,处理器604执行程序或指令实现上述任一技术方案中的有序任务的执行方法的步骤。
115.本发明的实施例提供的有序任务的执行系统600,包括存储器602和处理器604。处理器604执行程序或指令时能够实现上述任一技术方案中的有序任务的执行方法的步骤,因此,具有上述任一技术方案提供的有序任务的执行方法所具有的全部有益的技术效果,在此不再赘述。
116.实施例七
117.实施例七供了一种可读存储介质,其上存储有程序或指令,程序或指令被处理器执行时实现上述任一技术方案提供的有序任务的执行方法的步骤。
118.本发明的实施例提供的可读存储介质,能够实现上述任一技术方案提供的有序任务的执行方法的步骤,因此,具有上述任一技术方案提供的有序任务的执行方法所具有的全部有益的技术效果,在此不再赘述。
119.应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
120.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
121.以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1