本技术涉及金融科技领域,具体而言,涉及一种任务处理方法、装置、电子设备和计算机可读存储介质。
背景技术:
1、在银行开发业务需求中,往往存在这样一种特定的业务功能:执行流程长,关键事件多,业务互相堆砌,需要实现幂等。对于这种业务执行链路十分冗长,也相当耗时,服务器承载压力大。
技术实现思路
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、本技术公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本技术公开的上述技术即可得知。
53、为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。