分布式任务调度方法及系统转让专利

申请号 : CN202010957836.6

文献号 : CN114257586B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴南南吴凡马艳芳

申请人 : 同方威视技术股份有限公司

摘要 :

提供了一种分布式任务调度方法,包括:由安检模块扫描被检对象,生成所述被检对象的图像,并将生成的图像实时地发送给对应的任务模块;由任务模块从对应的安检模块接收所述图像,生成对应的判图任务,并将判图任务向外广播;以及由判图站定期广播自身的工作状态,并接受任务分配请求,执行判图任务,其中,每个任务模块接收并缓存所有任务模块的判图任务广播以及所有判图站的工作状态广播,在统一的调度执行时刻执行分布式调度,针对调度结果中由自身生成的判图任务向匹配的判图站发送任务分配请求。

权利要求 :

1.一种分布式任务调度方法,包括:

由安检模块扫描被检对象,生成所述被检对象的图像,并将生成的图像实时地发送给对应的任务模块;

由任务模块从对应的安检模块接收所述图像,生成对应的判图任务,并将判图任务向外广播;以及由判图站定期广播自身的工作状态,并接受任务分配请求,执行判图任务,其中,每个任务模块接收并缓存所有任务模块的判图任务广播以及所有判图站的工作状态广播,在统一的调度执行时刻执行分布式调度,针对调度结果中由自身生成的判图任务向匹配的判图站发送任务分配请求,其中,每个任务模块执行所述分布式调度时所依据的信息是在统一的调度依据时刻之前接收到的信息,所述调度依据时刻比所述调度执行时刻提前了预设间隔。

2.根据权利要求1所述的分布式任务调度方法,其中,所述预设间隔是根据分布式任务调度系统的网络延迟情况、系统响应延迟和业务实时性要求而计算出的。

3.根据权利要求1所述的分布式任务调度方法,其中,较早产生的任务的优先级高于较晚产生的任务的优先级。

4.根据权利要求1所述的分布式任务调度方法,其中,每个任务模块根据预设的排序规则将待分配任务列表和可用判图站列表进行排序,然后按照顺序对待分配任务和可用判图站进行逐一匹配。

5.根据权利要求4所述的分布式任务调度方法,其中,所有任务模块中的待分配任务列表和可用判图站列表的排序规则是一致的。

6.根据权利要求1所述的分布式任务调度方法,其中,所有任务模块的判图任务广播以及所有判图站的工作状态广播均带有时间戳,并定期更新,时间戳超时的广播信息被丢弃。

7.根据权利要求1所述的分布式任务调度方法,其中,调度失败的任务在下一次调度中被再次调度。

8.一种分布式任务调度系统,包括:

安检模块,被配置为扫描被检对象,生成所述被检对象的图像,并将生成的图像实时地发送给对应的任务模块;

任务模块,被配置为从对应的安检模块接收所述图像,生成对应的判图任务,并将判图任务向外广播;以及判图站,被配置为定期广播自身的工作状态,并接受任务分配请求,执行判图任务,其中,每个任务模块还被配置为:接收并缓存所有任务模块的判图任务广播以及所有判图站的工作状态广播,在统一的调度执行时刻执行分布式调度,针对调度结果中由自身生成的判图任务向匹配的判图站发送任务分配请求,其中,每个任务模块执行所述分布式调度时所依据的信息是在统一的调度依据时刻之前接收到的信息,所述调度依据时刻比所述调度执行时刻提前了预设间隔。

9.一种电子设备,包括:

一个或多个处理器;

存储装置,用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现根据权利要求1~7中任一项所述的方法。

10.一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时实现根据权利要求1~7中任一项所述的方法。

说明书 :

分布式任务调度方法及系统

技术领域

[0001] 本发明涉及分布式系统领域,并且更具体地涉及一种分布式任务调度方法及系统、电子设备以及计算机可读介质。

背景技术

[0002] 安检判图通常采用远程集中判图系统,即,各个安检点采集的被检物图像通过与其对应的判图任务模块形成为判图任务,并通过任务调度模块将判图任务调度到多个远程判图站中的空闲判图站。
[0003] 在这种远程集中判图系统中,现有的任务调度方法一般有集中式和分布式两种实现方式。
[0004] 集中式任务调度方法是通过集中的任务调度模块实现任务调度,即,将各个判图任务全部集中到任务调度模块处进行任务调度。集中式任务调度方法主要有以下两种方案。
[0005] 其中一种方案是,任务调度模块接收安检点及判图任务模块产生的判图任务的全部信息(包括安检图像在内),同时任务调度模块会接收判图站的工作状态,并选择空闲的判图站,将安检任务信息及图像发送至所选择的判图站进行判图。
[0006] 另一种方案是,任务调度模块只接收安检点及其判图任务模块产生的判图任务的基础信息,并根据基础信息和判图站的工作状态进行任务调度,将调度命令发送给安检点及其判图任务模块或者判图站,实现安检点及其判图任务模块与判图站之间的配对,实际的判图任务及图像在配对后的安检点及其判图任务模块与判图站间进行传输。
[0007] 分布式任务调度方法通常将每个安检点及其判图任务模块作为一个分布式节点,在各个分布式节点中通过一定的规则选举出主节点,由主节点进行统一决策。各个分布式节点将所有判图任务向主节点汇总,并从主节点接受任务调度命令。各个分布式节点监控主节点的状态并判断主节点工作是否正常,以此决定是否需要重新选举新的主节点。为了保证主节点的有效性以及决策的统一性,一般需要依赖超过半数节点确认才能完成主节点的选举和决策。
[0008] 对于上述集中式任务调度方法,存在以下问题。
[0009] 在上面第一种方案中,任务调度模块需要完整的判图任务(包括扫描图像在内)才能进行任务调度,实时性较差,只适用于民航等强控制安检领域,对于轨道交通这种高实时性要求的弱控制安检领域并不适用。
[0010] 上面第二种方案虽然能够及时开始任务调度,但是由于任务调度模块只发布了调度指令,所以需要确认指令被正确接收并执行,否则需要重新进行调度。因此,需要设计完善的反馈机制,来保证任务调度模块能够准确收到调度指令的执行结果以及失败时的原因等,机制复杂度高。由于上述反馈机制需要多个模块通过多次网络通讯完成,考虑可能的网络故障和延迟等因素,不确定因素进一步增加。
[0011] 而且以上两种方案对于任务调度模块都存在强依赖,如果任务调度模块出现故障,将会导致整个系统无法工作。
[0012] 对于分布式调度方法,由于分布式一致性算法往往要求半数以上的分布式节点均正常才能正常工作,所以一旦出现分区(系统由于网络故障等被划分为多个小区域,区域内彼此联通但是区域间相互不连通),不足半数节点的分区就无法正常工作。对于安检领域,这种放弃较小分区来保证一致性的做法会带来安全隐患,无法适应业务需要。而且在更极端情况下,如果系统分裂成多个小分区,可能导致每个分区都无法正常工作,最终导致系统级别瘫痪。

发明内容

[0013] 本发明是鉴于上述情况而做出的。本发明的实施例采用去中心化设计,不再依赖单独的调度模块,而是在产生判图任务的任务模块上集成分布式调度算法,由每个任务模块分布式地自发完成任务调度。通过同步所有任务模块的判图任务信息以及判图工作站的状态和调度结果信息,对进行调度决策的时间点(即,调度执行时刻)和决策依据时间点(即,调度依据时刻)进行统一,实现所有安检设备及判图任务模块在统一的时刻依据一致的信息进行调度决策,实现了分布式调度方法的一致性。
[0014] 在本发明的第一方面中,提供了一种分布式任务调度方法,包括:由安检模块扫描被检对象,生成所述被检对象的图像,并将生成的图像实时地发送给对应的任务模块;由任务模块从对应的安检模块接收所述图像,生成对应的判图任务,并将判图任务向外广播;以及由判图站定期广播自身的工作状态,并接受任务分配请求,执行判图任务,其中,每个任务模块接收并缓存所有任务模块的判图任务广播以及所有判图站的工作状态广播,在统一的调度执行时刻执行分布式调度,针对调度结果中由自身生成的判图任务向匹配的判图站发送任务分配请求。
[0015] 根据第一方面,每个任务模块执行所述分布式调度时所依据的信息是在统一的调度依据时刻之前接收到的信息,所述调度依据时刻比所述调度执行时刻提前了预设间隔。
[0016] 根据第一方面,所述预设间隔是根据所述分布式任务调度系统的网络延迟情况、系统响应延迟和业务实时性要求而计算出的。
[0017] 根据第一方面,较早产生的任务的优先级高于较晚产生的任务的优先级。
[0018] 根据第一方面,每个任务模块根据预设的排序规则将待分配任务列表和可用判图站列表进行排序,然后按照顺序对待分配任务和可用判图站进行逐一匹配。
[0019] 根据第一方面,所有任务模块中的待分配任务列表和可用判图站列表的排序规则是一致的。
[0020] 根据第一方面,所有任务模块的判图任务广播以及所有判图站的工作状态广播均带有时间戳,并定期更新,时间戳超时的广播信息被丢弃。
[0021] 根据第一方面,调度失败的任务在下一次调度中被再次调度。
[0022] 在本发明的第二方面中,提供了一种分布式任务调度系统,包括:安检模块,被配置为扫描被检对象,生成所述被检对象的图像,并将生成的图像实时地发送给对应的任务模块;任务模块,被配置为从对应的安检模块接收所述图像,生成对应的判图任务,并将判图任务向外广播;以及判图站,被配置为定期广播自身的工作状态,并接受任务分配请求,执行判图任务,其中,每个任务模块还被配置为:接收并缓存所有任务模块的判图任务广播以及所有判图站的工作状态广播,在统一的调度执行时刻执行分布式调度,针对调度结果中由自身生成的判图任务向匹配的判图站发送任务分配请求。
[0023] 在本发明的第三方面中,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现根据本发明的第一方面所述的方法。
[0024] 在本发明的第四方面中,提供了一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时实现根据本发明的第一方面所述的方法。
[0025] 基于本发明提供的各个方面,由每个任务模块分布式地自发完成任务调度,所有安检设备及任务模块在统一的时刻依据一致的信息进行调度决策,实现了分布式调度方法的一致性。

附图说明

[0026] 图1是示出了根据本发明实施例的分布式任务调度系统中调度1之前的各个任务的产生时刻和接收时刻的示例的图。
[0027] 图2中示出了根据本发明实施例的分布式任务调度系统中调度1的调度结果的示例的图。
[0028] 图3是示出了根据本发明实施例的分布式任务调度系统中调度1的调度依据信息和调度结果的示例的图。
[0029] 图4是示出了根据本发明实施例的分布式任务调度系统中调度2的调度依据信息和调度结果的示例的图。
[0030] 图5至图6是示出了根据本发明实施例的分布式任务调度系统的另一调度示例的示意图。
[0031] 图7至图8是示出了根据本发明实施例的分布式任务调度系统的又一调度示例的示意图。
[0032] 图9是示出了根据本发明实施例的分布式任务调度系统的再一调度示例的示意图。
[0033] 图10至图12是示出了根据本发明实施例的分布式任务调度系统的下一调度示例的示意图。
[0034] 图13是示出了根据本发明实施例的分布式任务调度系统的示意性框图。
[0035] 图14是示出了根据本发明实施例的分布式任务调度方法的流程图。

具体实施方式

[0036] 下面将详细描述本发明的具体实施例,应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。在以下描述中,为了提供对本发明的透彻理解,阐述了大量特定细节。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本发明。在其他实例中,为了避免混淆本发明,未具体描述公知的电路、材料或方法。
[0037] 在整个说明书中,对“一个实施例”、“实施例”、“一个示例”或“示例”的提及意味着:结合该实施例或示例描述的特定特征、结构或特性被包含在本发明至少一个实施例中。因此,在整个说明书的各个地方出现的短语“在一个实施例中”、“在实施例中”、“一个示例”或“示例”不一定都指同一实施例或示例。此外,可以以任何适当的组合和/或子组合将特定的特征、结构或特性组合在一个或多个实施例或示例中。
[0038] 应当理解,当称元件“耦接到”或“连接到”另一元件时,它可以是直接耦接或连接到另一元件或者可以存在中间元件。相反,当称元件“直接耦接到”或“直接连接到”另一元件时,不存在中间元件。
[0039] 此外,这里使用的术语“和/或”包括一个或多个相关列出的项目的任何和所有组合。
[0040] 将理解的是,与术语相应的单数形式的名词可包括一个或更多个事物,除非相关上下文另有明确指示。如这里所使用的,诸如“A或B”、“A和B中的至少一个”、“A或B中的至少一个”、“A、B或C”、“A、B和C中的至少一个”以及“A、B或C中的至少一个”的短语中的每一个短语可包括在与所述多个短语中的相应一个短语中一起列举出的项的所有可能组合。如这里所使用的,诸如“第1”和“第2”或者“第一”和“第二”的术语可用于将相应部件与另一部件进行简单区分,并且不在其它方面(例如,重要性或顺序)限制所述部件。
[0041] 如这里所使用的,术语“模块”可包括以硬件、软件或固件实现的单元,并可与其他术语(例如,“逻辑”、“逻辑块”、“部分”或“电路”)可互换地使用。模块可以是被适配为执行一个或更多个功能的单个集成部件或者是该单个集成部件的最小单元或部分。例如,根据实施例,可以以专用集成电路(ASIC)的形式来实现模块。
[0042] 应该理解的是,本公开的各种实施例以及其中使用的术语并不意图将在此阐述的技术特征限制于具体实施例,而是包括针对相应实施例的各种改变、等同形式或替换形式。除非本文另有明确定义,否则所有术语将给出其最广泛的可能解释,包括说明书中暗示的含义以及本领域技术人员理解的和/或字典、论文等中定义的含义。
[0043] 此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。对于附图的描述,相似的参考标号可用来指代相似或相关的元件。以下将参考附图对本公开进行示例性描述。
[0044] 图13是示出了根据本发明实施例的分布式任务调度系统的示意性框图。下面参考图13详细描述根据本发明实施例的分布式任务调度系统。
[0045] 如图13所示,根据本发明实施例的分布式任务调度系统包括安检模块、任务模块和判图站。安检模块、任务模块和判图站分别可以设置有一个或多个,它们通过网络相互通信连接。每个安检模块具有与其相对应的任务模块。安检模块及其对应的任务模块可以设置在同一安检点中,也可以分开设置。判图站可以设置在安检点本地,也可以设置在与安检点不同的其他位置处。另外,图13的框图仅为示意图,本发明不限于此。
[0046] 每个安检模块被配置为扫描被检对象,生成所述被检对象的图像,并将生成的图像实时地发送给对应的任务模块。
[0047] 每个任务模块被配置为从对应的安检模块接收图像,生成对应的判图任务,并将判图任务向外广播。在判图任务有效期内,对于所有的待分配的任务,任务模块会定期更新任务状态。如果任务信息超过约定期限没有更新,则会被认为是过时的并被抛弃。
[0048] 每个判图站会定期广播自身的工作状态,并接受任务分配请求,执行判图任务。判图站的工作状态包括判图站是否在线、是否可以接受判图任务等等。在收到任务分配请求后,如果判图站可以接受判图任务,判图站会确认请求,并广播判图站工作状态的更新以及任务分配请求中判图任务的状态的更新;如果判图站无法接受判图任务,判图站会拒绝请求,不广播任何状态变化。
[0049] 每个任务模块接收并缓存所有任务模块的任务信息广播以及判图站工作状态广播,在统一的调度执行时刻执行分布式调度,针对调度结果中由自身生成的判图任务向匹配的判图站发送任务分配请求。
[0050] 例如,可以根据预设的调度间隔将时间划分为不同的格子,如图1所示。每个任务模块可以在每个偶数个格子后进行时间上统一的分布式调度。预设的调度间隔依据网络延迟情况、系统响应延迟、业务实时性要求等综合考虑设计。
[0051] 在每次进行分布式调度时,每个任务模块将缓存的所有信息中,一个调度间隔之前(上一个奇数格子之前,见图1)的所有信息整合为待分配任务列表和可用判图站列表。每个任务模块根据预设的排序策略将待分配任务列表和可用判图站列表进行排序;然后按照顺序对待分配任务和判图站进行逐一匹配。在成功匹配的待分配任务中如果有自身模块产生的任务,则向与之匹配的判图站发送任务分配请求;此任务被标记为已经分配,不再发布其的信息更新。如果请求成功,任务调度完成;如果请求失败,重新将任务标记为待分配,重新发布任务信息更新,等待下次调度。
[0052] 图1中,将调度执行时刻设置为每个偶数格子之后,将调度依据时刻设置为相应的前一个奇数格子。然而,这仅仅是一个示例,本发明不限于此。在实际应用中,只要在统一的时刻执行调度,并且调度依据时刻比调度执行时刻提前预设间隔即可。
[0053] 由于系统业务特点,判图任务的产生是随机的,而且系统中所有信息在网络中的传递都会有无法避免的延迟,因此每个任务模块接收到判图任务信息的时刻会存在差异。本发明通过对调度执行时刻进行统一,并且使每次调度只依赖于比调度执行时刻提前了预设间隔的调度依据时刻之前的信息,来避免上述原因导致的每个节点信息的差异,从而达到避免调度决策差异的目的。
[0054] 如图1所示,实际情况中,任务1和任务2在调度1依据的时刻之前产生,任务3在调度1依据的时刻之后、调度1执行时刻之前产生。由于网络传输和模块自身响应延迟的影响,各个任务模块收到这些任务的时间存在差异,且都晚于产生时刻。
[0055] 图1中,安检点包括安检模块和与安检模块相对应的任务模块。在各个任务模块执行调度1的时刻,安检点1接收到了任务1和任务2的信息,安检点2接收到了任务1、任务2和任务3的信息。此时安检点1和安检点2存在信息的不一致,这是无法避免的。因此采用在每个调度执行时刻依据对应的调度依据时刻之前的信息做出决策。如图1所示,只要合理根据网络、系统延时情况计算出合理的决策间隔,就可以保证在进行调度时,在正常的网络和系统延迟及误差影响下,所有节点都已经收到了所有调度依据时刻之前的全部信息。
[0056] 调度成功后,判图任务会被分配到对应的判图站,此时任务状态和判图站空闲状态都会发生变化,这些信息变化和任务信息一样会影响之后的调度决策。由于统一了调度执行时刻,虽然由于系统和网络会产生一定的延迟,但是任务的分配及其结果会集中在每次调度时刻之后,而不是像任务产生时那样随机分布,如图2所示。
[0057] 在网络和系统响应正常的情况下,调度1的结果会在调度2的依据时刻前被所有节点收到。在进行调度2时,各个任务模块已经完整获取到了调度1的全部结果信息。因此调度2所依据的信息包含了调度1的全部执行结果,调度2会对此时的全局信息进行重新排序和匹配。由于调度1的结果已经更新,如图4所示,任务1、2和已分配的判图站都会从队列中删除,调度2不会出现调度1中重复的信息,也不会产生冲突。
[0058] 图5至图6是示出了根据本发明实施例的分布式任务调度系统的另一调度示例的示意图。下面参考图5至图6说明根据本发明实施例的分布式任务调度系统的另一调度示例。
[0059] 如图5所示,由于网络及系统响应等问题,导致调度1的结果在调度2依据时刻之后才更新。这样,在执行调度2时,调度1的结果尚未更新。在执行调度2时,任务队列中增加了任务3,然后重新进行排序。在轨道交通安检领域,由于任务具有较强的时效性,远程判图站需要在乘客通过安检机拿取行李前完成判图并反馈判图结果,所以一般情况下产生较早的任务应该优先进行分配。因此,在对任务进行优先级排序时,较早产生的任务(如任务1)的优先级会比较高,较晚产生的任务(如任务3)的优先级较低。由此,调度2的队列排序和匹配情况如图6所示。可以看出,由于新增加的任务3的优先级低于较早产生的任务1和任务2,所以任务1和任务2在调度2依然被分配给了优先级最高的判图站A和B,任务3被分配给判图站C。这样,调度2和调度1并没有产生决策冲突,同时由于每个负责具体任务分配的任务模块已经在上一次决策中进行了任务1和任务2的分配,所以调度2中的任务1和任务2的分配不会产生实际影响。在这种场景下,本发明的分布式任务调度方法同样可以正确完成分布式决策。
[0060] 根据该示例,本发明的分布式任务调度系统使较早产生的任务的优先级高于较晚产生的任务的优先级,从而即使在由于网络及系统响应等问题导致所有节点中调度结果更新滞后时也能正确完成分布式任务调度。
[0061] 图7至图8是示出了根据本发明实施例的分布式任务调度系统的又一调度示例的示意图。下面参考图7至图8说明根据本发明实施例的分布式任务调度系统的又一调度示例。
[0062] 有时,系统中的某个或者某些节点的性能出现瓶颈,或者网络阻塞导致某个或者某些节点的信息滞后于系统中其他节点。例如,如图7所示,在安检点1处,调度1的结果直到调度2执行时刻之后才得到更新。在这种情况下,在执行调度2时,安检点1和安检点2之间的信息并不一致。但是由于在所有任务模块中任务和可用判图站队列的排序规则是一致的,所以此时安检点1和安检点2的队列情况如图8所示并不存在冲突和差异。具体而言,虽然信息不一致,但是由于在调度结果信息中任务1已分配和对应的判图站A已被占用是同时发布的,并且每个节点的排序规则是一致的,所以最终的调度结果不会存在冲突和差异。
[0063] 根据该示例,本发明的分布式任务调度系统使所有任务模块中的待分配任务列表和可用判图站列表的排序规则是一致的,从而即使在仅某个或某些节点中调度结果更新比其他节点滞后时也能正确完成分布式任务调度。
[0064] 图9是示出了根据本发明实施例的分布式任务调度系统的再一调度示例的示意图。下面参考图9说明根据本发明实施例的分布式任务调度系统的再一调度示例。
[0065] 分布式任务调度系统中的任务模块和判图站在发布任务状态和判图站状态时均带有发布时的时间戳,同时所有模块需要根据预设的心跳超时时间定期更新信息,直到信息发生变化或失效(如任务分配成功或者超过分配限时等)。任务模块在每次进行调度时,会判断调度依据信息中是否存在已经超时没有更新的信息,所有超时的信息都会被丢弃而不会影响调度决策。例如,如图9所示,由于对应的节点的系统或者网络故障等因素,任务2待分配和判图站A可用的信息未能及时更新,因而成为超时信息。在执行调度时,这些超时信息不会被加入到队列中,因此不会影响调度结果。
[0066] 由于安检集中判图是一个实时性要求很高的场景,因此可以结合业务场景及各种要求,设计较短的信息超时时间,这样可以保证故障或者离线节点在离线前发布的信息只会在一个较短的时间内影响系统内其他节点的决策,确保了系统的稳定性和快速恢复能力。
[0067] 根据该示例,本发明的分布式任务调度系统使所有任务模块的判图任务广播以及所有判图站的工作状态广播均带有时间戳,并定期更新,时间戳超时的广播信息被丢弃,从而即使在有节点出现故障或离线时也能正确完成分布式任务调度。
[0068] 图10至图12是示出了根据本发明实施例的分布式任务调度系统的下一调度示例的示意图。下面参考图10至图12说明根据本发明实施例的分布式任务调度系统的下一调度示例。
[0069] 由于是分布式调度算法,所以在特定场景下还是不能完全避免调度冲突的情况。例如,考虑下列情况:虽然任务3晚于任务1和任务2产生,但是由于某些特殊原因(例如,任务3所在安检点环境不同,乘客可以更快地拿到行李),所以任务3需要更快的判图;或者任务3所在任务模块刚刚从离线中恢复,因此,实际上早于任务1产生的任务3的信息晚于任务
1和任务2发布,等等。
[0070] 出现上述情况时,调度1只分配了任务1和任务2,如果调度1的结果在调度2依据时刻前更新,则不会对调度2产生影响;如果调度1的结果如图10所示在调度2依据时刻后才更新,此时调度2将会对任务1、任务2、任务3进行调度,调度1和调度2此时的队列排序情况如图11所示。可见在这种场景下,在调度1和调度2之间存在决策冲突,其中调度2中将任务3分配给判图站A的调度将会失败,同时任务1和任务2由于已经在调度1中进行了分配,所以调度2中对任务1和任务2的调度决策不会被执行。
[0071] 不过,由于调度1的结果在之后的调度3中就会更新,而任务3在调度2中调度失败,所以在调度3中会再次尝试进行调度,此时任务3就可以被正确调度。调度3的队列排序情况如图12所示。
[0072] 根据该示例,本发明的分布式任务调度系统使调度失败的任务在下一次调度中被再次尝试进行调度,从而即使在出现调度冲突时也能正确完成分布式任务调度。
[0073] 图14是示出了根据本发明实施例的分布式任务调度方法的流程图。下面参考图14详细描述根据本发明实施例的分布式任务调度方法。
[0074] 在步骤S1401中,由安检模块扫描被检对象,生成所述被检对象的图像,并将生成的图像实时地发送给对应的任务模块;
[0075] 在步骤S1402中,由任务模块从对应的安检模块接收所述图像,生成对应的判图任务,并将判图任务向外广播;
[0076] 在步骤S1403中,由判图站定期广播自身的工作状态,并接受任务分配请求,执行判图任务;以及
[0077] 在步骤S1404中,每个任务模块接收并缓存所有任务模块的判图任务广播以及所有判图站的工作状态广播,在统一的调度执行时刻执行分布式调度,针对调度结果中由自身生成的判图任务向匹配的判图站发送任务分配请求。
[0078] 在根据本发明实施例的分布式任务调度方法及系统中,采用去中心化设计,由每个任务模块分布式地自发完成任务调度,所有安检设备及任务模块在统一的时刻依据一致的信息进行调度决策,实现了分布式调度方法的一致性。
[0079] 尽管以上各个框图中示出了多个组件,但是本领域技术人员应当理解,可以在缺少一个或多个组件或将某些组件组合的情况下实现本发明的实施例。
[0080] 尽管以上根据附图中所示的顺序对各个步骤进行了描述,但是本领域技术人员应当理解,所述各个步骤可以按照不同的顺序执行,或者可以在没有上述步骤中的一个或多个步骤的情况下实现本发明的实施例。
[0081] 根据前述内容可以理解,一个或多个系统或设备的电子组件可以包括但不限于至少一个处理单元、存储器、以及将包括存储器在内的各个组件耦接到处理单元的通信总线或通信装置。系统或设备可以包括或可以访问各种设备可读介质。系统存储器可以包括易失性和/或非易失性存储器形式的设备可读存储介质(比如,只读存储器(ROM)和/或随机存取存储器(RAM))。通过示例而非限制的方式,系统存储器还可以包括操作系统、应用程序、其它程序模块和程序数据。
[0082] 实施例可以实现为系统、方法或程序产品。因此,实施例可以采用全硬件实施例或者包括软件(包括固件、常驻软件、微代码等)的实施例的形式,它们在本文中可以统称为“电路”、“模块”或“系统”。此外,实施例可以采取在其上体现有设备可读程序代码的至少一个设备可读介质中体现的程序产品的形式。
[0083] 可以使用设备可读存储介质的组合。在本文档的上下文中,设备可读存储介质(“存储介质”)可以是任何有形的非信号介质,其可以包含或存储由配置为由指令执行系统、装置或设备使用或与其结合使用的程序代码组成的程序。出于本公开的目的,存储介质或设备应被解释为非暂时性的,即不包括信号或传播介质。
[0084] 本公开出于说明和描述的目的得以呈现,但是并非旨在穷举或限制。许多修改和变化对于本领域普通技术人员将是明显的。选择和描述实施例以便说明原理和实际应用,并且使得本领域普通技术人员能够理解具有适合于所预期的特定用途的各种修改的本公开的各种实施例。