掌桥专利:专业的专利平台
掌桥专利
首页

任务调度方法、装置、设备、系统及存储介质

文献发布时间:2023-06-19 09:35:27


任务调度方法、装置、设备、系统及存储介质

技术领域

本发明实施例涉及计算机技术领域,尤其涉及任务调度方法、装置、设备、系统及存储介质。

背景技术

目前,分布式软件系统构建过程中经常涉及任务调度问题。任务调度一般由调度器实现,在分布式系统中,通常设置有多个调度器。

常见的调度器实现方式一般是通过第三方调度服务来调度本系统中的服务,但需要引入第三方调度器系统框架,甚至围绕该框架还需要准备其他中间件,如zookeeper等。这种模式下,需要采用协调器来对多个调度器进行管理,其对第三方调度组件的依赖性较高,浪费服务资源,额外增加的组件也会带来额外的维护成本。因此,目前的任务调度方案仍不够完善,需要改进。

发明内容

本发明实施例提供了任务调度方法、装置、设备及存储介质,可以优化现有的任务调度方案。

第一方面,本发明实施例提供了一种任务调度方法,应用于分布式调度系统中的第一调度器,所述分布式调度系统中包含存储服务和至少两个调度器,所述方法包括:

从所述存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号,其中,所述已被占用的调度序号按顺序依次递增;

向所述存储服务发送第一序号的占用请求,并在接收到所述存储服务返回的占用成功消息时,将所述第一序号设定为所述第一调度器对应的第一调度序号,其中,所述第一序号为所述最大序号的下一个序号;

基于所述第一调度序号分配相应的任务。

第二方面,本发明实施例提供了一种任务调度装置,集成于分布式调度系统中的第一调度器,所述分布式调度系统中包含存储服务和至少两个调度器,所述装置包括:

最大序号获取模块,用于从所述存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号,其中,所述已被占用的调度序号按顺序依次递增;

占用请求发送模块,用于向所述存储服务发送第一序号的占用请求,并在接收到所述存储服务返回的占用成功消息时,将所述第一序号设定为所述第一调度器对应的第一调度序号,其中,所述第一序号为所述最大序号的下一个序号;

任务分配模块,用于基于所述第一调度序号分配相应的任务。

第三方面,本发明实施例提供了一种调度器设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的任务调度方法。

第四方面,本发明实施例提供了一种分布式调度系统,包括存储服务和至少两个本发明实施例提供的调度器设备。

第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的任务调度方法。

本发明实施例中提供的任务调度方案,应用于分布式调度系统中的第一调度器,分布式调度系统中包含存储服务和至少两个调度器,第一调度器从存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号,向存储服务发送该最大序号的下一个序号的占用请求,并在接收到存储服务返回的占用成功消息时,将该最大序号的下一个序号设定为第一调度器对应的第一调度序号,并基于第一调度序号分配相应的任务。通过采用上述技术方案,不需要依赖第三方调度框架中的协调器来对调度器进行协调,采用轻量级的存储服务来实现已占用的调度序号的存储,由调度器自主进行调度序号的申请,并根据申请到的调度序号分配相应的任务,从而弱化对协调器功能的依赖,节省服务资源,避免额外增加的组件所带来的维护成本。

附图说明

图1为本发明实施例提供的一种任务调度方法所适用的应用场景的场景架构图;

图2为本发明实施例提供的一种任务调度方法的流程示意图;

图3为本发明实施例提供的又一种任务调度方法的流程示意图;

图4为本发明实施例提供的另一种任务调度方法的流程示意图;

图5为本发明实施例提供的一种任务调度装置的结构框图;

图6为本发明实施例提供的一种调度器设备的结构框图;

图7为本发明实施例提供的一种分布式调度系统的工作过程示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

图1为本发明实施例提供的一种任务调度方法所适用的应用场景的场景架构图。具体的,参考图1,该应用场景中可以包括存储服务10和至少两个调度器20。本发明实施例对调度器的数量不做限定,可以根据实际需求灵活配置。图1中以三个调度器为例。存储服务10可以由具备存储功能的设备或系统提供,具体不做限定,可统称为节点服务器。调度器20可以是独立的设备,也可以集成在同时具有其他功能的设备中作为一个调度模块,例如可以集成在任务执行服务器中,该任务执行服务器中可包含调度器和执行器,还可包括定时器等,具体不做限定。本发明实施例所适用的应用场景例如可包括定时业务场景、对后台数据进行计算的场景、事务补偿场景以及数据下游业务处理场景等,还可以有其他场景,可根据实际需求设置。

现有的分布式调度系统中,调度器的实现方式一般是通过第三方调度服务来调度本系统中的服务,需要引入第三方调度器系统框架,甚至围绕该框架还需要准备其他中间件,如zookeeper等。这种模式下,需要采用协调器来对多个调度器进行管理,其对第三方调度组件的依赖性较高,浪费服务资源,额外增加的组件也会带来额外的维护成本。也就是说,以图1为例,现有技术中,节点服务器是由第三方调度系统框架中的协调器实现的,如zookeeper协调器、etcd协调器或consul协调器等等,由协调器对各调度器进行管理,如分配待调度的任务等,由于第三方调度系统框架中的协调器提供的功能复杂,协调器本身需要高可用保障,一般需要至少要3台以上服务器保障,其接入门槛和管理维护成本都较高。

本发明实施例中,采用存储服务来代替协调器,不需要依赖第三方调度框架中的协调器来对调度器进行管理,采用轻量级的存储服务来实现已占用的调度序号的存储,由调度器自主进行调度序号的申请,并根据申请到的调度序号自行确定待分配的任务并进行任务分配,从而弱化对协调器功能的依赖。

图2为本发明实施例提供的一种任务调度方法的流程示意图,该方法可以由任务调度装置执行,其中该装置可由软件和/或硬件实现,一般可集成在调度器设备中,所述调度器设备中包含分布式调度系统中的第一调度器,所述分布式调度系统中包含存储服务和至少两个调度器,第一调度器可以是分布式调度系统中任意一个调度器。如图2所示,该方法包括:

步骤201、从存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号。

本发明实施例中,存储服务可以由具备存储功能的设备或系统提供,具体不做限定,可称为节点服务器。本发明实施例中,将由协调器集中管理调度器的方式更改为由调度器自主进行调度序号的申请,并根据申请到的调度序号自行确定待分配的任务并进行任务分配,因此存储服务相比于第三方调度系统框架中的协调器,所需提供的功能很少,所需存储的数据量也不大,可以由存储微小数据容量的简单存储介质实现,示例性的,节点服务器可以是文本系统,也可以是缓存服务器等。

示例性的,对于不同的调度事件,可以灵活地设定调度器的数量。例如,可以根据对业务功能的控制力度的需求来制定调度策略,调度策略中可包括所需调度器的数量,如随机一台、随机N台、指定一台、指定N台或全部等,其中N可以为大于或等于二且小于全部调度器数量的整数,具体可以由调度策略制定人员来设置,也可以由系统根据当前使用场景自动确定。调度策略制定完毕后,可以通知当前调度事件对应的所有调度器,随后,收到通知的调度器可以向存储服务申请调度序号。此外,也可通知存储服务当前调度事件对应的调度器总数,供存储服务进行记录。

示例性的,本步骤的执行时机可根据实际需求设置,例如可以是当前调度事件创建完毕时,可以是当前调度事件被触发时。以定时业务场景为例,当第一调度器对应的当前调度事件的第一定时器被触发时,则可执行本步骤。

示例性的,存储服务中可以存储当前调度事件对应的已被占用的调度序号,已被占用的调度序号按顺序依次递增,如1、2、3...。由于当前调度事件对应的不同调度器收到通知的时间可能不同,申请调度序号的时机也可能不同,因此,可以在申请之前先从存储服务中获取当前调度事件对应的已被占用的调度序号中的最大序号,若第一调度器是第一个获取最大序号的调度器,则此时并不存在被占用的调度序号,最大序号可以认为是0。若目前已被占用的序号包括1、2和3,则最大序号为3。

步骤202、向所述存储服务发送第一序号的占用请求,并在接收到所述存储服务返回的占用成功消息时,将所述第一序号设定为所述第一调度器对应的第一调度序号,其中,所述第一序号为所述最大序号的下一个序号。

示例性的,可规定每个调度器均按照顺序递增申请占用调度序号,则在获取到已被占用的调度序号中的最大序号后,可以申请占用当前最大序号的下一个序号,这里记为第一序号。存储服务在接收到第一调度器针对第一序号的占用请求时,可以核实第一序号是否已被占用,因为在接收到第一调度器的占用请求之前,也可能先接收到并回应了其他调度器针对第一序号的占用请求,若第一序号未被占用,则可向第一调度器返回占用成功消息。

示例性的,第一调度器在接收到存储服务返回的占用成功消息时,说明第一调度器对应的调度序号可以确定下来,将第一序号设定为第一调度器对应的第一调度序号。

可选的,若存储服务发现第一序号已被其他调度器占用,则可向第一调度器返回占用失败消息。若第一调度器接收到存储服务返回的占用失败消息,或者第一调度器在第一预设时长内未收到存储服务返回的占用成功消息,可以重新执行从存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号的相关步骤,也可以直接向存储服务发送第二序号的占用请求,第二序号是第一序号的下一个序号,依此类推,直到接收到存储服务返回的占用成功消息为止,将所接收到的占用成功消息对应的序号设定为所述第一调度器对应的第一调度序号。

步骤203、基于所述第一调度序号分配相应的任务。

示例性的,由于当前调度事件对应的各调度器所占用的调度序号是唯一的,因此,可以保证各调度器基于自己的调度序号能够明确需要由自己进行分配的任务,也即调度序号不同的调度器所获取到的待分配的任务不同,避免相同任务被不同的调度器重复分配,造成业务错误,也可避免部分调度器处于空置状态或较低负荷的运行状态,影响整个系统的执行效率。

本发明实施例中提供的任务调度方法,应用于分布式调度系统中的第一调度器,分布式调度系统中包含存储服务和至少两个调度器,第一调度器从存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号,向存储服务发送该最大序号的下一个序号的占用请求,并在接收到存储服务返回的占用成功消息时,将该最大序号的下一个序号设定为第一调度器对应的第一调度序号,并基于第一调度序号分配相应的任务。通过采用上述技术方案,不需要依赖第三方调度框架中的协调器来对调度器进行协调,采用轻量级的存储服务来实现已占用的调度序号的存储,由调度器自主进行调度序号的申请,并根据申请到的调度序号分配相应的任务,从而弱化对协调器功能的依赖,节省服务资源,避免额外增加的组件所带来的维护成本。

在一些实施例中,所述基于所述第一调度序号分配相应的任务,包括:获取第一待分配任务对应的第一身份信息;采用预设哈希算法计算所述第一身份信息对应的第一哈希值;若所述第一哈希值与所述第一调度序号相匹配,则将所述第一待分配任务确定为所述第一调度器对应的目标任务;分配所述目标任务。这样设置的好处在于,通过计算哈希值的方式,可以快速将待分配任务的身份信息映射到一定的数字空间,该数字空间中的数字可以与调度序号存在匹配关系,进而快速准确地确定一个待分配任务对应的调度序号,也即快速确定当前的待分配任务是否应该由第一调度器进行分配。

示例性的,待分配任务对应的身份信息可以是任务ID或其他能够唯一标识任务的信息。待分配任务的身份信息的表现形式可以根据业务需求进行设置。例如,以网上购物场景为例,在进行商品发货时,可以针对所有已下单的用户进行即时通讯消息(InstantMessaging,IM)的推送,此时,可以将用户的ID作为IM推送任务对应的任务ID。

示例性的,预设哈希算法可以是哈希一致性算法。在哈希一致性算法中,将数字空间的全部数字头尾相连,形成一个闭合的环形空间。在环形空间中,从第一个数字(如0)开始,沿着逆时针方向数字递增,直到最后一个数字,因此,在环形空间中,第一个数字与最后一个数字邻接。

示例性的,若第一哈希值与第一调度序号不匹配,则确定第一待分配任务不需要第一调度器进行分配,则不对第一待分配任务进行处理。

在一些实施例中,所述第一身份信息为整数值;所述采用预设哈希算法计算所述第一身份信息对应的第一哈希值,包括:计算所述第一身份信息与所述当前调度事件对应的调度器总数相除后的第一余数,根据所述第一余数确定第一哈希值。这样设置的好处在于,将身份信息设置为整数值,可以简化哈希算法,进而更加快速准确地计算哈希值。可选的,根据所述第一余数确定第一哈希值,可以是将第一余数作为第一哈希值,还可以是在第一余数基础上进行附加计算(如加1等),得到第一哈希值,便于与调度序号进行匹配。

图3为本发明实施例提供的又一种任务调度方法的流程示意图,如图3所示,该方法包括:

步骤301、从存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号。

其中,所述已被占用的调度序号按顺序依次递增。

步骤302、向存储服务发送第一序号的占用请求。

其中,所述第一序号为最大序号的下一个序号。

步骤303、判断是否接收到存储服务返回的占用成功消息,若是,则执行步骤304;否则,返回执行步骤301。

示例性的,可以设定判断操作的时间范围,也即在发出占用请求后的预设时段内判断是否接收到存储服务返回的占用成功消息。

需要说明的是,再次执行步骤301时,所获取到的最大序号一般会发生变化,此时,步骤302中的第一序号则为新的最大序号的下一个序号。

步骤304、将第一序号设定为第一调度器对应的第一调度序号。

步骤305、获取第一待分配任务对应的第一身份信息。

示例性的,第一待分配任务可以是任务池中的任意一个任务,可以按照任务的编号或其他顺序规则来遍历任务池中的任务,进而全面确定应该由第一调度器进行分配的任务。

步骤306、计算第一身份信息与当前调度事件对应的调度器总数相除后的第一余数,根据第一余数确定第一哈希值。

步骤307、判断第一哈希值与第一调度序号是否匹配,若是,则执行步骤308;否则,执行步骤309。

步骤308、将第一待分配任务确定为第一调度器对应的目标任务,并分配所述目标任务。

需要说明的是,本步骤中在将第一待分配任务确定为第一调度器对应的目标任务后,可以立即分配所确定的目标任务,也可以对该目标任务进行记录或存储,等待合适的时机再进行分配,具体的分配时机不做限定。

步骤309、确定第一待分配任务不属于第一调度器对应的目标任务。

本发明实施例提供的任务调度方法,第一调度器自主向存储服务申请调度序号,在得到调度序号后,可以遍历任务池中的任务,根据任务的身份信息来计算相应的哈希值,并根据哈希值与自己的调度序号是否相匹配来快速准确地确定需要自己进行分配的任务,在减少第三方调度组件的依赖以及节省服务资源的同时,保证各调度器能够有自己唯一的调度序号,并有效避免相同任务被不同的调度器重复分配,保障业务功能正常。

在上述各可选实施例基础上,还可针对调度器可能存在异常情况的问题进行进一步优化。在一些实施例中,上述各方法中还包括:每隔第一预设时长向所述存储服务上报所述第一调度器对应的第一服务的第一健康状态信息。这样设置的好处在于,可以实现对各调度器的健康状态进行监测。其中,健康状态信息可以理解为是否处于正常工作状态的信息,具体可包括心跳,也即,第一调度器可以每隔第一预设时长向存储服务上报第一调度器心跳,若上报心跳,则表示第一调度器对应的第一服务的处于健康状态。第一服务可以理解为第一调度器对应的用于对所分配的任务进行执行的服务,具体表现形式不做限定,衡量第一服务是否处于健康状态的标准可以根据实际情况设置,例如第一服务可以由第一调度器对应的第一执行器提供,第一执行器对应的设备处于正常工作状态,则可任务第一服务处于健康状态。另外,若第一调度器和第一执行器处于同一个服务器内,记为第一服务器,第一调度器上报的心跳可以是第一调度器所属第一服务器的心跳。第一预设时长可以根据实际需求设置,例如1秒。

在一些实施例中,还可包括:从所述存储服务获取所述当前调度事件对应的所有调度器的健康状态信息记录;根据所述健康状态信息记录确定当前处于健康状态的调度器数量;所述获取第一待分配任务对应的第一身份信息,包括:判断所述当前处于健康状态的调度器数量是否等于所述当前调度事件对应的调度器总数,若等于,则获取第一待分配任务对应的第一身份信息。这样设置的好处在于,各调度器可以从存储服务获知当前调度事件对应的调度器是否均处于健康状态,若不存在异常的调度器,则说明自己的调度序号不需要发生变化,可以继续进行确定目标任务的相关操作,避免造成任务分配错乱的情况发生。

在一些实施例中,在所述判断所述当前处于健康状态的调度器数量是否等于所述当前调度事件对应的调度器总数之后,还可包括:若不等于,则重复执行从所述存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号的相关步骤。这样设置的好处在于,若当前处于健康状态的调度器数量不等于当前调度事件对应的调度器总数,则说明能够正常进行任务分配的调度器发生了变化,若小于,说明可能存在调度器出现异常的情况,若大于,说明可能新增了调度器,这时,原来的调度序号分配结果已经不再适用,因此,各调度器可以重新申请调度序号,从而快速合理地实现各调度器的动态均衡。

在一些实施例中,所述根据所述健康状态信息记录确定当前处于健康状态的调度器数量,包括:统计所述健康状态信息记录中最近的第二预设时长内收到的健康状态信息对应的协调器的数量,得到当前处于健康状态的调度器数量,第二预设时长大于或等于第一预设时长。这样设置的好处在于,可以快速准确地确定当前处于健康状态的调度器数量,从而及时发现调度器数量的变化情况。例如,第一预设时长为1秒,第二预设时长也为1秒,则在健康状态信息记录中最近的1秒内,存在对应的健康状态信息的上报记录的调度器可以认为当前是处于健康状态的,若不存在最近1秒内某个调度器的上报记录,则说明该调度器未处于健康状态。另外,第二预设时长的设置也可适当放宽松,如第二预设时长为第一预设时长的预设倍数,预设倍数小于或等于预设倍数阈值,预设倍数阈值例如可以是2。

图4为本发明实施例提供的另一种任务调度方法的流程示意图,如图4所示,该方法可包括:

步骤401、检测到第一调度器启动后,每隔预设时长向存储服务上报第一调度器对应的心跳信息。

其中,心跳信息用于标识第一调度器对应的第一服务的健康状态信息。在本步骤之前,可以由工作人员或系统根据当前业务需求设定当前调度事件的调度策略,若所设定的调度策略中包含由第一调度器参与当前调度事件,则可控制第一调度器启动。

示例性的,存储服务中会收到当前调度事件对应的所有调度器定时上报的心跳信息,并进行记录。存储服务可以汇总处于健康状态的调度器,并通过过期失效功能保存一定时长(一般可大于上述预设时长,若将上述预设时长即为第一时长,则这里的一定时长可记为第二时长,第二时长大于或等于第一时长)内的健康状态信息记录,例如心跳信息上报记录。若存储服务不具备过期失效功能,则存储服务中可以记录每个调度器每次上报心跳信息的时间点,并保存在健康状态信息记录中。

步骤402、检测到调度时间到达。

示例性的,以定时业务场景为例,可以由对应的定时器通知第一调度器到达调度时间。

步骤403、从存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号。

步骤404、向存储服务发送第一序号的占用请求。

其中,所述第一序号为最大序号的下一个序号。

步骤405、判断是否接收到存储服务返回的占用成功消息,若是,则执行步骤406;否则,返回执行步骤403。

步骤406、将第一序号设定为第一调度器对应的第一调度序号。

步骤407、基于第一调度序号分配相应的任务。

步骤408、从存储服务获取当前调度事件对应的所有调度器的心跳信息上报记录,并根据心跳信息上报记录确定当前处于健康状态的调度器数量。

步骤409、判断当前处于健康状态的调度器数量是否等于当前调度事件对应的调度器总数,若是,则返回执行步骤407;否则,返回执行步骤403。

示例性的,步骤408和步骤409可以在步骤407的执行过程中同时执行,并不限于上述执行时序。

示例性的,若所有待分配的任务均已分配完毕或,则可退出上述流程。

本发明实施例提供的任务调度方法,第一调度器自主向存储服务申请调度序号,在得到调度序号后,基于调度序号确定需要自己进行分配的任务并进行分配,在分配任务的过程中,还可实时或定时获取当前调度事件对应的其他调度器的健康状态信息,若处于健康状态的调度器数量发生变化,则会重新申请调度序号,从而快速合理地实现各调度器的动态均衡。对于分布式调度系统,可以根据业务需要灵活配置调度事件对应的调度器,各调度器采用上述方案实现,可以利用有效资源进行高负荷并行计算,加快业务逻辑执行,保证系统正常运行的前提下,提高系统运行效率。

图5为本发明实施例提供的一种任务调度装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在调度器设备中,具体可集成于分布式调度系统中的第一调度器,所述分布式调度系统中包含存储服务和至少两个调度器,该装置可通过执行任务调度方法来进行任务调度。如图5所示,该装置包括:

最大序号获取模块501,用于从所述存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号,其中,所述已被占用的调度序号按顺序依次递增;

占用请求发送模块502,用于向所述存储服务发送第一序号的占用请求,并在接收到所述存储服务返回的占用成功消息时,将所述第一序号设定为所述第一调度器对应的第一调度序号,其中,所述第一序号为所述最大序号的下一个序号;

任务分配模块503,用于基于所述第一调度序号分配相应的任务。

本发明实施例中提供的任务调度装置,应用于分布式调度系统中的第一调度器,分布式调度系统中包含存储服务和至少两个调度器,第一调度器从存储服务获取当前调度事件对应的已被占用的调度序号中的最大序号,向存储服务发送该最大序号的下一个序号的占用请求,并在接收到存储服务返回的占用成功消息时,将该最大序号的下一个序号设定为第一调度器对应的第一调度序号,并基于第一调度序号分配相应的任务。通过采用上述技术方案,不需要依赖第三方调度框架中的协调器来对调度器进行协调,采用轻量级的存储服务来实现已占用的调度序号的存储,由调度器自主进行调度序号的申请,并根据申请到的调度序号分配相应的任务,从而弱化对协调器功能的依赖,节省服务资源,避免额外增加的组件所带来的维护成本。

本发明实施例提供了一种调度器设备,该调度器设备中可集成本发明实施例提供的任务调度装置。图6为本发明实施例提供的一种调度器设备的结构框图。调度器设备600包括存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序,所述处理器602执行所述计算机程序时实现本发明实施例提供的任务调度方法。

本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的任务调度方法。

本发明实施例还提供一种分布式调度系统,包括存储服务和至少两个本发明实施例提供的调度器设备。

图7为本发明实施例提供的一种分布式调度系统的工作过程示意图。如图7所示,假设节点服务器(Node-Server)为缓存存储介质,可设置缓存介质的过期时间,将该服务器简称为S;假设调度器设备为任务服务器(task-Server),任务服务器中包含心跳上报程序(s-Cli)。当前调度事件确定任务服务器A和B为所需的调度器,通知A和B,A和B的服务启动,A和B通过各自的心跳上报程序向S上报心跳,A从S获取信息得知有两个服务,也即由两个调度器,目前最大序号为0,为自己分配序号1,并将该分配更新到S(也即向S申请调度序号1),若S返回占用成功,则A的调度序号可设置为1。随后,B向S获取信息得知有两个服务,但序号1已经被分配,则自己顺序+1为2,并分配给自身。随后,A和B可以基于自己的调度序号进行任务分配。此时如果有C启动服务并上报心跳到S,由于A和B会从S获取当前调度事件对应的所有心跳上报记录,所以A和B也能感知到S的变化,也即感知到新增了C,从而触发重新分配的过程,也即图中的再平衡(re-balance)。若有特殊情况发生,如某一时刻有A停止上报,可称为中断,由于存储内容有过期时间,超过一定时间后将被删除,该过期内容将被所有健康机器感知到,从而触发重新分配调度序号。如缓存存储介质改用没有过期时间的文件系统,可以把心跳信息上报的时间点记录下来,供各健康机器做时间差对比,以确定是否存在中断的调度器。以上过程是机器的调度序号的分配过程,接下来再以图7为例简单介绍任务分配过程。假设所有健康机器均申请到了自己的调度序号,如图7,任务服务器A的调度序号为1,任务服务器B的调度序号为2,任务服务器C的调度序号为3,此时,需要找到所需分配的任务或所需处理的数据的唯一标示或行号记录。假设图中将任务ID记为key,key的取值从1开始逐渐递增,图中仅示出了10个任务作为示意性说明。每个调度器在确定自己所需分配的任务时,可以用任务ID对总健康机器数(假设图中的3)做余数+1,得到一个与调度序号一致的数值,表明该任务由该调度器处理。因为各调度器的调度序号始终是从1开始顺序递增的,所以不用担心任务或数据会处理不到,不会出现漏任务或漏数据的情况。

上述实施例中提供的任务调度装置、设备以及存储介质可执行本发明任意实施例所提供的任务调度方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的任务调度方法。

注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。

相关技术
  • 任务调度方法、任务调度装置、任务调度设备及存储介质
  • 用例任务调度方法、系统、装置、设备及存储介质
技术分类

06120112224944