一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种任务处理方法、装置及相关设备与流程

2022-02-22 18:06:06 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,特别是涉及一种任务处理方法、装置及相关设备。


背景技术:

2.分布式系统是多个处理机通过通信线路互联而构成的松散耦合的系统,其具有四个特点:(1)分布式系统由多台计算机组成,整个系统的功能分散在各个节点上实现;(2)分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能,各个节点既能自制地进行工作,又能利用共享的通信线路传送信息和协调任务处理;(3)一个大的任务(task)可以分为若干个子任务,分别在不同的主机上执行;(4)分布式系统中存在一个单一的、全局的进程通信机制,使得任何一个进程都能与其他进行通信。
3.对于分布式系统中任务处理,由于各个节点之间独立自治,若想实现任务在各个节点间的协调处理,需要提供集群消息通知和管理、任务管理机制等,同时需要考虑分布式系统崩溃后重启能够继续重做未完成的任务,需要将任务持久存储记录索引。


技术实现要素:

4.为解决上述技术问题,本技术实施例提供一种任务处理方法,利用etcd数据库进行任务的记录,实现分布式系统中任务的稳定高效处理。其具体方案如下:
5.第一方面,本技术公开了一种任务处理方法,应用于分布式系统中的第一节点,所述方法包括:
6.在利用watcher机制接收到待处理任务的任务通知后,从etcd数据库中提取所述待处理任务到等待队列中;所述待处理任务根据任务请求生成;
7.将所述待处理任务从所述等待队列提取到处理中队列,利用任务处理函数对所述待处理任务进行处理;所述任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的节点确定;
8.在对所述待处理任务处理完成后,将所述待处理任务移出所述处理中队列,并对etcd数据库中所述待处理任务的任务状态进行更新;所述待处理任务的任务状态以键值对的形式存储在etcd数据库中。
9.可选的,所述待处理任务包括同步任务,所述任务处理函数包括同步任务处理函数;所述第一节点为主节点,所述etcd数据库中所述待处理任务的任务状态包括所述待处理任务的同步任务状态和所述待处理任务的总任务状态,所述待处理任务的总任务状态体现所述待处理任务是否全部完成。
10.可选的,所述待处理任务包括同步任务和异步任务,所述任务处理函数包括同步任务处理函数和异步任务处理函数,所述待处理任务的任务状态至少包括所述待处理任务的异步任务状态中所述第一节点对应的子任务状态;所述利用任务处理函数对所述待处理任务进行处理,包括:
11.利用所述同步任务处理函数对所述同步任务进行处理;
12.在获取到同步任务处理完成的通知后,利用所述异步任务处理函数对所述异步任务进行处理;
13.所述对etcd数据库中所述待处理任务的任务状态进行修改,包括:
14.将所述待处理任务的异步任务状态中所述第一节点对应的子任务状态更新为已完成状态。
15.可选的,所述第一节点为所述分布式系统中的主节点,所述待处理任务的任务状态还包括所述待处理任务的同步任务状态,所述方法还包括:
16.在所述同步任务处理完成后,将所述etcd数据库中所述待处理任务的同步任务状态更新为已完成状态,以使所述分布式系统中各个节点通过watcher机制获取到同步任务处理完成的通知。
17.可选的,所述方法还包括:
18.确定所述待处理任务的异步任务状态中的各个节点对应的子任务状态均为已完成状态,将etcd数据库中所述待处理任务的总任务状态更新为已完成状态,所述待处理任务的总任务状态体现所述待处理任务是否全部完成。
19.可选的,所述方法还包括:
20.在所述分布式系统中的第二节点崩坏,或所述第一节点重启时,遍历etcd数据库中的任务列表,从所述任务列表中确定所述待处理任务,以对所述待处理任务进行处理。
21.可选的,所述第一节点的内存中具有所述待处理任务的任务内存结构,所述任务内存结构的成员包括所述待处理任务的异步任务状态和任务处理函数,所述异步任务状态的值表征所述待处理任务的异步任务是否完成;所述方法还包括:
22.在所述分布式系统中的第二节点崩坏时,若所述待处理任务在等待队列中,则更新所述任务处理函数,以利用更新的任务处理函数对所述待处理任务进行处理;所述更新的任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的更新的节点确定,所述更新的节点不包括所述第二节点;
23.在所述分布式系统中的第二节点崩坏时,若所述待处理任务在处理中队列中,将所述待处理在任务内存结构中的异步任务状态置为空,同时为所述待处理任务生成新的任务内存结构,并将所述待处理任务置于等待队列中;更新所述任务处理函数,以利用更新的任务处理函数对所述待处理任务进行处理;
24.其中,所述新的内存结构中异步任务状态不为空,以便异步任务处理完成后根据所述新的任务内存结构中的异步任务状态的值更新etcd数据库中的异步任务状态;更新的任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的更新的节点确定,所述更新的节点不包括所述第二节点。
25.第二方面,本技术公开了一种任务处理装置,应用于分布式系统中的第一节点,所述装置包括:
26.队列管理单元,用于在利用watcher机制接收到待处理任务的任务通知后,从etcd数据库中提取所述待处理任务到等待队列中;所述待处理任务根据任务请求生成;
27.任务处理单元,用于利用任务处理函数对所述待处理任务进行处理;所述任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的节点确定;
28.状态更新单元,用于在利用所述任务处理函数对所述待处理任务处理完成后,对
etcd数据库中所述待处理任务的任务状态进行更新;所述待处理任务的任务状态以键值对的形式存储在etcd数据库中;
29.所述队列管理单元,还用于:在利用所述任务处理函数对所述待处理任务进行处理前,将所述待处理任务从所述等待队列提取到处理中队列;在利用所述任务处理函数对所述待处理任务处理完成后,将所述待处理任务移出所述处理中队列。
30.可选的,所述待处理任务包括同步任务,所述任务处理函数包括同步任务处理函数;所述第一节点为主节点,所述etcd数据库中所述待处理任务的任务状态包括所述待处理任务的同步任务状态和所述待处理任务的总任务状态,所述待处理任务的总任务状态体现所述待处理任务是否全部完成。
31.可选的,所述待处理任务包括同步任务和异步任务,所述任务处理函数包括同步任务处理函数和异步任务处理函数,所述待处理任务的任务状态至少包括所述待处理任务的异步任务状态中所述第一节点对应的子任务状态;所述任务处理单元,包括:
32.同步任务处理单元,用于利用所述同步任务处理函数对所述同步任务进行处理;
33.异步任务处理单元,用于在获取到同步任务处理完成的通知后,利用所述异步任务处理函数对所述异步任务进行处理;
34.所述状态更新单元具体用于:将所述待处理任务的异步任务状态中所述第一节点对应的子任务状态更新为已完成状态。
35.可选的,所述第一节点为所述分布式系统中的主节点,所述待处理任务的任务状态还包括所述待处理任务的同步任务状态,所述装置还包括:
36.通知单元,用于在所述同步任务处理完成后,将所述etcd数据库中所述待处理任务的同步任务状态更新为已完成状态,以使所述分布式系统中各个节点通过watcher机制获取到同步任务处理完成的通知。
37.可选的,所述装置还包括:
38.任务状态更新单元,用于确定所述待处理任务的异步任务状态中的各个节点对应的子任务状态均为已完成状态,将etcd数据库中所述待处理任务的总任务状态更新为已完成状态,所述待处理任务的总任务状态体现所述待处理任务是否全部完成。
39.可选的,所述装置还包括:
40.任务确定单元,用于在所述分布式系统中的第二节点崩坏,或所述第一节点重启时,遍历etcd数据库中的任务列表,从所述任务列表中确定所述待处理任务,以对所述待处理任务进行处理。
41.可选的,所述第一节点的内存中具有所述待处理任务的任务内存结构,所述任务内存结构的成员包括所述待处理任务的异步任务状态和任务处理函数,所述异步任务状态的值表征所述待处理任务的异步任务是否完成;所述装置还包括:
42.函数更新单元,用于在所述分布式系统中的第二节点崩坏时,若所述待处理任务在等待队列中,则更新所述任务处理函数,以利用更新的任务处理函数对所述待处理任务进行处理;所述更新的任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的更新的节点确定,所述更新的节点不包括所述第二节点;
43.任务更新单元,用于在所述分布式系统中的第二节点崩坏时,若所述待处理任务在处理中队列中,将所述待处理在任务内存结构中的异步任务状态置为空,同时为所述待
处理任务生成新的任务内存结构,并将所述待处理任务置于等待队列中;更新所述任务处理函数,以利用更新的任务处理函数对所述待处理任务进行处理;
44.其中,所述新的内存结构中异步任务状态不为空,以便异步任务处理完成后根据所述新的任务内存结构中的异步任务状态的值更新etcd数据库中的异步任务状态;更新的任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的更新的节点确定,所述更新的节点不包括所述第二节点。
45.第三方面,本技术公开了一种电子设备,包括:
46.存储器和处理器;
47.其中,所述存储器,用于存储计算机程序;
48.所述处理器,用于执行所述计算机程序,以实现前述公开的任务处理方法。
49.第四方面,本技术公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的任务处理方法。
50.本技术实施例提供了一种任务处理方法、装置及相关设备,应用于分布式处理系统中的第一节点,在利用watcher机制接收到待处理任务的任务通知后,可以从etcd数据库中提取待处理任务到等待队列,待处理任务根据任务请求生成,之后将待处理任务从等待队列提取到处理中队列,利用任务处理函数对待处理任务进行处理,待处理函数根据待处理任务和分布式系统各种用于处理待处理任务的节点确定,在利用任务处理函数对待处理任务处理完成后,将待处理任务移除处理中队列,并对etcd数据库中待处理任务的任务状态进行更新,待处理任务的任务状态可以以键值对的形式存储在etcd数据库中,这样可以利用etcd数据库对待处理任务的处理进度进行记录,并利用etcd数据库的watcher机制进行任务的相关通知,便于各个节点查询以及进行分布式处理,即使分布式系统崩溃重启,也能顺利执行未完成的任务,从而实现分布式系统中任务的稳定高效处理。
附图说明
51.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
52.图1为本技术实施例提供的一种任务处理方法的流程图;
53.图2为本技术实施例提供的一种任务处理过程的示意图;
54.图3为本技术实施例提供的一种任务处理装置的结构框图;
55.图4为本技术公开的一种电子设备结构示意图。
具体实施方式
56.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
57.正如背景技术的说明,对于分布式系统中的任务处理,由于各个节点之间独立自治,若想实现任务在各个节点间的协调处理,需要提供集群消息通知和管理、任务管理机制
等,同时考虑到分布式系统崩溃后重启能够继续重做未完成的任务,需要将任务持久存储记录索引。
58.基于以上技术问题,本技术实施例提供了一种任务处理方法、装置及相关设备,应用于分布式处理系统中的第一节点,在利用watcher机制接收到待处理任务的任务通知后,可以从etcd数据库中提取待处理任务到等待队列,待处理任务根据任务请求生成,之后将待处理任务从等待队列提取到处理中队列,利用任务处理函数对待处理任务进行处理,待处理函数根据待处理任务和分布式系统各种用于处理待处理任务的节点确定,在利用任务处理函数对待处理任务处理完成后,将待处理任务移除处理中队列,并对etcd数据库中待处理任务的任务状态进行更新,待处理任务的任务状态可以以键值对的形式存储在etcd数据库中,这样可以利用etcd数据库对待处理任务的处理进度进行记录,并利用etcd数据库的watcher机制进行任务的相关通知,便于各个节点查询以及进行分布式处理,即使分布式系统崩溃重启,也能顺利执行未完成的任务,从而实现分布式系统中任务的稳定高效处理。
59.下面结合附图,通过实施例来详细说明本技术实施例提供的任务处理方法、装置及相关设备的具体实现方式。
60.参考图1所示,为本技术实施例提供的一种任务处理方法的流程图,分布式系统中可以具有多个节点(node),该方法可以应用于分布式系统中的第一节点,该方法包括以下步骤:
61.s101,在利用watcher机制接收到待处理任务的任务通知后,从etcd数据库中提取待处理任务到等待队列中。
62.本技术实施例中,分布式系统可以包括多个节点,具体的,可以包括一个主节点和多个从节点,各个节点可以用于共同处理待处理任务,主节点可以用于与外部设备通信,其中第一节点可以为主节点,也可以为从节点。
63.etcd是一个高可用的键(key)/值(value)存储系统,设计用来可靠而快速的保存关键数据并提供数据访问,通过分布式锁、leader选举和写屏障来实现可靠的分布式协作,etcd本质上作为一个布式键值对存储能够满足记录索引的需求,同时具备消息订阅和注册机制。分布式通知和协作使用etcd的watcher机制(etcd中用于发布订阅的机制),通过注册与异步通知机制,实现分布式环境下的不同系统之间的通知与协调,从而对数据变更进行实时处理。
64.因此,本技术实施例中,可以利用etcd数据库存储任务的状态,并利用etcd的watcher机制发送任务通知,实现分布式系统中任务的分发、同步和协调,同时具有任务状态、进度的查询,即使节点或者集群崩溃后也能够继续未完成的任务,从而为分布式系统中任务处理架构提供一种稳定、高效、可参考的实现方式。
65.本技术实施例中,待处理任务根据任务请求生成。分布式系统作为一个服务端,支持命令行或者restful api(rest风格的网络接口)的访问请求方式,因此分布式系统中存在来源于分布式系统外部的外部任务,该外部任务来源于命令行或者restful api的访问请求;同时,分布式系统内部在运行过程中也存在需要节点执行的任务,这种任务称为内部任务,该内部任务与系统的业务逻辑相关。待处理任务可以为外部任务,也可以为内部任务。待处理任务可以由收到任务请求的节点生成,该节点可以称为代理节点,代理节点可以为主节点,也可以为从节点,可以为第一节点,也可以为第一节点之外的其他节点。
66.待处理任务可以包括同步任务,同步任务是待处理任务中需要同步处理完成的部分,多见于内存处理和数据库等非耗时非阻塞性的工作,此时任务处理函数包括同步任务处理函数,若待处理任务只包括同步任务,则同步任务完成后即表示待处理任务完成。
67.待处理任务也可以包括同步任务和异步任务,异步任务是待处理任务中需要异步处理完成的任务,多见于数据读写等耗时的阻塞性工作,此时任务处理函数可以包括同步任务处理函数和异步任务处理函数,同步任务和异步任务均完成后才表示待处理任务完成。
68.在待处理任务产生后,可以通过特定前缀保存在etcd数据库,分布式中的节点可以将该待处理任务从etcd数据库提取到本地的等待队列中,并在本地内存中建立待处理任务相关的任务内存结构,该任务内存结构可以包括多个成员,例如可以包括待处理任务的唯一识别码、处理状态、基本信息等,处理状态可以包括同步任务状态、异步任务状态、总任务状态等,参考表1所示,为本技术实施例提供的一种task内存结构的示例。
69.其中,任务(task)通过etcd获取系统唯一且自增的序列号作为唯一识别码,记为task_id;任务的总任务状态task_state可以设置为初始状态(init),即未经过处理,任务的总任务状态表征该任务是否全部完成;任务具有用于在同步任务完成后需要更新的key,可以称为同步任务状态(task_sync_key),表征任务中的同步任务是否完成;设置task任务的任务处理函数,任务处理函数可以包括同步任务处理函数task_sync_process和异步处理函数task_async_process,各个节点利用不同的任务处理函数对待处理任务进行处理;任务具有用于在异步任务完成后通知的key,即异步任务状态(task_key),表征任务中的异步任务是否完成,task_key包含但不限于task_id,在异步任务状态的值中,可以包括多个字段用于表征各个节点的子任务状态,通常每个节点对应有部分字段,在该节点对待处理任务处理完成后,更新其对应的字段,以表征该节点的子任务状态为已完成状态。
70.表1任务内存结构示例
[0071][0072][0073]
在待处理任务生成后,可以检查待处理任务是否存在同步任务,若存在,则watcher用于同步任务完成后基于task_sync_key进行通知,否则不进行同步任务完成时的
通知。
[0074]
待处理任务产生后,待处理任务会通过特定的前缀更新到etcd数据库中,分布式系统中的节点通过etcd的watcher机制获取待处理任务产生的通知,分布式系统中的节点也会在待处理任务处理完成后根据本地的任务内存结构中的任务状态的参数更新etcd数据库中相应的状态值,本地的任务内存结构中的处理状态和etcd数据库中的任务状态具有对应关系。
[0075]
本技术实施例中,分布式系统中的第一节点在利用watcher机制接收到待处理任务的任务通知后,可以从etcd数据库中提取待处理任务到本地的等待队列,并通知任务处理工作线程来处理待处理任务。当然,分布式系统中的其他节点也可以同时利用watcher机制接受到待处理任务的任务通知,而后从etcd数据库中提取待处理任务到本地的等待队列,并进行待处理任务的处理,通过多个节点处理待处理子任务,可以实现分布式系统中的待处理任务的并行处理。
[0076]
s102,将待处理任务从等待队列提取到处理中队列,并利用任务处理函数对待处理任务进行处理。
[0077]
本技术实施例中,在获取到待处理任务后,可以利用任务处理函数对待处理任务进行处理,不同的节点可以对应不同的任务处理函数,则利用不同的任务处理函数可以对待处理任务有不同的处理方式。任务处理函数是根据待处理任务和分布式系统中用于处理待处理任务的节点确定,相当于根据待处理任务需要执行的操作将待处理任务分为多个可以并行的操作,这些操作以任务处理函数的形式分配给不同的节点。在对待处理任务处理之前,可以将待处理任务从等待队列提取到处理中队列,以对待处理任务进行处理。
[0078]
在待处理任务包括同步任务时,利用任务处理函数对待处理任务进行处理,可以具体为,利用同步任务函数对同步任务进行处理。此时,同步任务处理完成,即表示整个待处理任务处理完成。
[0079]
在待处理任务包括同步任务和异步任务时,利用任务处理函数对待处理任务进行处理,可以具体为,利用同步任务处理函数对同步任务进行处理,在获取到同步任务处理完成的通知后,利用异步任务处理函数对异步任务进行处理,从而完成对待处理任务的处理。
[0080]
具体实施时,在获取到待处理任务后,可以判断待处理任务中是否存在同步任务,若是,则先进行同步任务的处理,若否,则表示待处理任务不合规,不进行待处理任务的处理。具体的,可以通过判断待处理任务是否定义了同步任务处理函数(task_sync_process),若定义了则说明待处理任务存在同步任务,则可以基于task_sync_process处理待处理任务的同步任务。
[0081]
在第一节点为分布式系统中的主节点时,在完成待处理任务的同步任务后,可以将etcd数据库中待处理任务的同步任务状态(task_sync_key)进行更新,例如更新为已完成状态,etcd数据库基于watcher机制可以根据更新后的同步任务状态进行向各个节点进行通知。也就是说,可以由主节点在自身的同步任务完成后触发同步任务完成的通知,以便外部设备根据同步任务完成的通知触发其他操作,而不必等待异步任务处理完成。在待处理任务的同步任务失败后,将etcd数据库中待处理任务的同步任务状态更新为失败,失败和已完成状态均作为task_sync_key的value。在待处理任务的同步任务状态为失败后,可以将第待处理任务从进行中任务队列中移除。
[0082]
在完成待处理任务的同步任务后,可以进行待处理任务的异步任务的处理,具体的,可以在获取到同步任务处理完成的通知后,开始异步任务的处理。具体实施时,可以基于异步任务处理函数(task_async_process)对待处理任务的异步任务进行处理。
[0083]
s103,在对待处理任务处理完成后,将待处理任务移出处理中队列,并对etcd数据库中待处理任务的任务状态进行更新。
[0084]
在完成待处理任务的异步任务后,说明待处理任务处理完成,此时可以将待处理任务移出处理中队列,并对etcd数据库中待处理任务的任务状态进行更新。待处理任务的任务状态可以以键值对的形式存储在etcd数据库中,第一节点可以根据本地的任务内存结构中的成员的值,对etcd数据库中的键值对中的值进行更新。
[0085]
在待处理任务仅包括同步任务而不包括异步任务时,同步任务完成即意味着待处理任务完成。若第一节点为主节点,待处理任务的任务状态可以包括待处理任务的同步任务状态和待处理任务的总任务状态,则可以在同步任务完成后,对待处理任务的同步任务状态(task_sync_process)进行更新,例如更新为已完成状态,并对待处理任务的总任务状态(task_state)进行更新,例如更新为已完成状态。
[0086]
在待处理任务仅包括同步任务和异步任务时,异步任务完成则表示待处理任务完成,待处理任务的任务状态至少包括待处理任务的异步任务状态中的第一节点对应的子任务状态,则对etcd数据库中待处理任务的任务状态进行修改,可以具体为,将待处理任务的异步任务状态中第一节点对应的子任务状态(task_key)更新为已完成状态。在待处理任务的异步任务失败后,将etcd数据库中的待处理任务的异步任务状态更新为失败,失败和已完成状态均作为task_key的value。在第一节点在对待处理任务的异步任务处理完成后,还可以将第一节点的标识写到done_list中,表征第一节点完成待处理任务,在异步任务处理失败后,不更新done_list。
[0087]
在处理完成待处理任务后,可以判断待处理任务的异步任务状态中的各个节点对应的子任务状态是否均为已完成状态,若是,则说明整个待处理任务已完成,则可以更新etcd数据库中待处理任务(task_state)的总任务状态为已完成状态(done),否则,不更新待处理任务的任务状态。具体的,done_list用于存储完成待处理任务的节点,即存在于done_list中的节点对应的子任务状态为已完成状态,则可以判断done_list中的节点是否为进行待处理任务处理的所有节点,来确定异步任务中的各个节点对应的子任务状态是否均为已完成状态。
[0088]
节点在对待处理任务进行处理的过程中,可以实时更新etcd中的待处理任务的进度,从而实现待处理任务的进度和状态的查询,利于实现任务的分布式处理。
[0089]
参考图2所示,为本技术实施例提供的一种任务处理过程的示意图,以分布式系统中的三个节点(node)为例进行说明,其中第一个node可以作为代理节点,即用于task产生,第一个node可以同时为主节点,用于进行task同步完成通知。第一个node在获取到任务请求后,可以利用内部的task产生装置将外部请求组成成task,并将task置于etcd数据库中,触发etcd数据库利用watcher机制发出task通知,而后三个节点获取到task的通知,将该task从etcd数据库提取到本地的队列中并利用各自的task处理装置进行task的处理,其中task的处理过程中,先进行task的同步任务处理,在第一个node(即主节点)完成task同步任务后,可以更新etcd数据库中的该任务的同步任务状态,以触发etcd数据库利用watcher
机制进行task同步完成通知,而后各个节点进行task异步任务的处理,每个节点在异步任务处理完成后均进行该节点对应的异步任务状态中的子状态的更新,直到所有节点的异步任务均完成,则该task的总任务状态可以更新为已完成状态。
[0090]
本技术实施例中,若待处理任务的处理过程中发生了节点崩坏的情况,则分布式系统中的正常节点可以处理待处理任务中原本属于崩坏节点的任务。或者分布式系统需要全局重启时,各个节点在启动后也需要处理未处理完成的任务。
[0091]
具体的,在分布式系统中的第二节点崩坏时,可能有原属于第二节点的待处理任务重新分配到第一节点,则第一节点可以遍历etcd数据库中的任务列表,从任务列表中确定待处理任务,以对待处理任务进行处理。对待处理任务的处理方式可以参考s101-s103的步骤。
[0092]
具体的,在第一节点重启时,可能有属于第一节点的待处理任务丢失,则第一节点可以遍历etcd数据库中的任务列表,从任务列表中确定待处理任务,以对待处理任务进行处理。对待处理任务的处理方式可以参考s101-s103的步骤。
[0093]
具体的,在分布式系统中的第二节点崩坏时,若待处理任务在等待队列(task_pending_list)中,则更新任务处理函数,以利用更新的任务处理函数对待处理任务进行处理,更新的任务处理函数根据待处理任务和分布式系统中用于处理待处理任务的更新的节点确定,更新的节点不包括第二节点。也就是说,可以根据正常的节点重新分配任务处理函数,以利用正常的节点完成待处理任务的处理,更新的节点可以位于待处理任务的done_list中,在done_list中的所有节点均对待处理任务处理完成,则待处理任务处理完成。
[0094]
具体的,第一节点的内存中的任务内存结构可以包括多个成员,多个成员可以包括待处理任务的异步任务状态和任务处理函数,异步任务状态的值表征待处理任务的异步任务是否完成,则在分布式系统中的第二节点崩坏时,若待处理任务在处理中队列(task_processing_list)中,则可以将待处理任务在本地任务内存结构中的异步任务状态(task_key)置为空,即阻止了待处理任务在完成时根据本地任务内存结构中的异步任务状态的值去更新etcd中相应的异步任务状态,同时可以为待处理任务产生新的任务内存结构,并将待处理任务置于等待队列(task_pending_list)中,以便基于新的任务内存结构对待处理任务进行重新处理,新的内存结构中异步任务状态不为空,则异步任务处理完成后可以根据新的任务内存结构中的异步任务状态的值更新etcd数据库中的异步任务状态。此外还可以更新任务处理函数,以利用更新的任务处理函数对待处理任务进行处理,更新的任务处理函数根据待处理任务和分布式系统中用于处理待处理任务的更新的节点确定,更新的节点不包括第二节点。
[0095]
具体实施时,对待处理任务的处理,可以有不同的处理模式(epoch),不同的处理模式下可以有不同的处理节点和不同的任务处理函数。每个处理模式下对待处理任务的处理节点可以为分布式系统中所有正常的节点,具体的,每个处理模式下可以存在节点列表。则判断done_list中的节点是否为进行待处理任务处理的所有节点,可以判断done_list中的节点是否为该模式下节点列表中的所有节点。
[0096]
举例来说,模式1对应第一节点、第二节点和第三节点,模式2对应第一节点和第三节点,在待处理任务的模式1中,利用第一节点、第二节点和第三节点对待处理任务进行处理,待处理任务具有模式1下的任务状态,例如具有模式1下的同步任务状态、异步任务状
态、总任务状态、done_list等,异步任务状态包括对应三个节点的子任务状态,done_list中包括三个节点时说明待处理任务处理完成;在第二节点崩坏时,待处理任务的处理模式从模式1切换为模式2,即开始利用第一节点和第三节点对待处理任务进行处理,第一节点和第三节点利用更新的任务处理函数对待处理任务进行处理,模式2下具有区别于模式1的任务状态,表征第一节点和第三节点对待处理任务的处理状态,模式2可以具有同步任务状态、异步任务状态、总任务状态、done_list等,异步任务状态包括对应两个节点的子任务状态,done_list中包括两个节点时说明待处理任务处理完成。
[0097]
本技术实施例提供了一种任务处理方法,应用于分布式处理系统中的第一节点,在利用watcher机制接收到待处理任务的任务通知后,可以从etcd数据库中提取待处理任务到等待队列,待处理任务根据任务请求生成,之后将待处理任务从等待队列提取到处理中队列,利用任务处理函数对待处理任务进行处理,待处理函数根据待处理任务和分布式系统各种用于处理待处理任务的节点确定,在利用任务处理函数对待处理任务处理完成后,将待处理任务移除处理中队列,并对etcd数据库中待处理任务的任务状态进行更新,待处理任务的任务状态可以以键值对的形式存储在etcd数据库中,这样可以利用etcd数据库对待处理任务的处理进度进行记录,并利用etcd数据库的watcher机制进行任务的相关通知,便于各个节点查询以及进行分布式处理,即使分布式系统崩溃重启,也能顺利执行未完成的任务,从而实现分布式系统中任务的稳定高效处理。
[0098]
基于以上任务处理方法,本技术实施例还提供了一种任务处理装置,参考图3所示,为本技术实施例提供的一种任务处理装置的结构框图,包括:
[0099]
队列管理单元110,用于利用任务处理函数对所述待处理任务进行处理;所述任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的节点确定;
[0100]
任务处理单元120,用于利用任务处理函数对所述待处理任务进行处理;所述任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的节点确定;
[0101]
状态更新单元130,用于在利用所述任务处理函数对所述待处理任务处理完成后,对etcd数据库中所述待处理任务的任务状态进行更新;所述待处理任务的任务状态以键值对的形式存储在etcd数据库中;
[0102]
所述队列管理单元,还用于:在利用所述任务处理函数对所述待处理任务进行处理前,将所述待处理任务从所述等待队列提取到处理中队列;在利用所述任务处理函数对所述待处理任务处理完成后,将所述待处理任务移出所述处理中队列。
[0103]
可选的,所述待处理任务包括同步任务,所述任务处理函数包括同步任务处理函数;所述第一节点为主节点,所述etcd数据库中所述待处理任务的任务状态包括所述待处理任务的同步任务状态和所述待处理任务的总任务状态,所述待处理任务的总任务状态体现所述待处理任务是否全部完成。
[0104]
可选的,所述待处理任务包括同步任务和异步任务,所述任务处理函数包括同步任务处理函数和异步任务处理函数,所述待处理任务的任务状态至少包括所述待处理任务的异步任务状态中所述第一节点对应的子任务状态;所述任务处理单元,包括:
[0105]
同步任务处理单元,用于利用所述同步任务处理函数对所述同步任务进行处理;
[0106]
异步任务处理单元,用于在获取到同步任务处理完成的通知后,利用所述异步任务处理函数对所述异步任务进行处理;
[0107]
所述状态更新单元具体用于:将所述待处理任务的异步任务状态中所述第一节点对应的子任务状态更新为已完成状态。
[0108]
可选的,所述第一节点为所述分布式系统中的主节点,所述待处理任务的任务状态还包括所述待处理任务的同步任务状态,所述装置还包括:
[0109]
通知单元,用于在所述同步任务处理完成后,将所述etcd数据库中所述待处理任务的同步任务状态更新为已完成状态,以使所述分布式系统中各个节点通过watcher机制获取到同步任务处理完成的通知。
[0110]
可选的,所述装置还包括:
[0111]
任务状态更新单元,用于确定所述待处理任务的异步任务状态中的各个节点对应的子任务状态均为已完成状态,将etcd数据库中所述待处理任务的总任务状态更新为已完成状态,所述待处理任务的总任务状态体现所述待处理任务是否全部完成。
[0112]
可选的,所述装置还包括:
[0113]
任务确定单元,用于在所述分布式系统中的第二节点崩坏,或所述第一节点重启时,遍历etcd数据库中的任务列表,从所述任务列表中确定所述待处理任务,以对所述待处理任务进行处理。
[0114]
可选的,所述第一节点的内存中具有所述待处理任务的任务内存结构,所述任务内存结构的成员包括所述待处理任务的异步任务状态和任务处理函数,所述异步任务状态的值表征所述待处理任务的异步任务是否完成;所述装置还包括:
[0115]
函数更新单元,用于在所述分布式系统中的第二节点崩坏时,若所述待处理任务在等待队列中,则更新所述任务处理函数,以利用更新的任务处理函数对所述待处理任务进行处理;所述更新的任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的更新的节点确定,所述更新的节点不包括所述第二节点;
[0116]
任务更新单元,用于在所述分布式系统中的第二节点崩坏时,若所述待处理任务在处理中队列中,则将所述待处理在任务内存结构中的异步任务状态置为空,同时为所述待处理任务生成新的任务内存结构,并将所述待处理任务置于等待队列中;更新所述任务处理函数,以利用更新的任务处理函数对所述待处理任务进行处理;
[0117]
其中,所述新的内存结构中异步任务状态不为空,以便异步任务处理完成后根据所述新的任务内存结构中的异步任务状态的值更新etcd数据库中的异步任务状态;更新的任务处理函数根据所述待处理任务和所述分布式系统中用于处理所述待处理任务的更新的节点确定,所述更新的节点不包括所述第二节点。
[0118]
本技术实施例提供了一种任务处理装置,应用于分布式处理系统中的第一节点,在利用watcher机制接收到待处理任务的任务通知后,可以从etcd数据库中提取待处理任务到等待队列,待处理任务根据任务请求生成,之后将待处理任务从等待队列提取到处理中队列,利用任务处理函数对待处理任务进行处理,待处理函数根据待处理任务和分布式系统各种用于处理待处理任务的节点确定,在利用任务处理函数对待处理任务处理完成后,将待处理任务移除处理中队列,并对etcd数据库中待处理任务的任务状态进行更新,待处理任务的任务状态可以以键值对的形式存储在etcd数据库中,这样可以利用etcd数据库对待处理任务的处理进度进行记录,并利用etcd数据库的watcher机制进行任务的相关通知,便于各个节点查询以及进行分布式处理,即使分布式系统崩溃重启,也能顺利执行未完
成的任务,从而实现分布式系统中任务的稳定高效处理。
[0119]
参见图4所示,为本技术实施例提供的一种电子设备20的结构示意图,该电子设备20可以实现前述实施例中公开的任务处理方法步骤。
[0120]
通常,本实施例中的电子设备20包括:处理器21和存储器22。
[0121]
其中,处理器21可以包括一个或多个处理核心,比如四核心处理器、八核心处理器等。处理器21可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程们阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的图像的渲染和绘制。一些实施例中,处理器21可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0122]
存储器22可以包括一个或多个计算机可读存储介质,计算机可读存储介质可以是非暂态的。存储器22还可以包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器22至少用于存储以下计算机程序221,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例中公开的任务处理方法步骤。
[0123]
在一些实施例中,电子设备20还可包括有显示屏23、输入输出接口24、通信接口25、传感器26、电源27以及通信总线28。
[0124]
本技术领域人员可以理解,图3中示出的结构并不构成对电子设备20的限定,可以包括比图示更多或更少的组件。
[0125]
进一步的,本技术实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的任务处理方法。
[0126]
其中,关于上述任务处理方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0127]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例和装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0128]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,rom)/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本技术各个实施例或者实施例的某些部分所述的方法。
[0129]
本技术实施例中提到的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”等。
[0130]
以上所述仅是本技术的优选实施方式,并非用于限定本技术的保护范围。应当指
出,对于本技术领域的普通技术人员来说,在不脱离本技术的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献