任务调度方法及系统的制作方法

文档序号:9708154阅读:446来源:国知局
任务调度方法及系统的制作方法
【技术领域】
[0001 ]本发明涉及计算机技术领域,特别是涉及一种任务调度方法及系统。
【背景技术】
[0002]云服务器是一种简单、高效、处理能力可弹性伸缩的计算服务。弹性伸缩是指根据用户的业务需求和策略,自动调整其弹性计算资源的管理服务,能够在业务增长时自动增加云主机实例,并在业务下降时自动减少云主机实例。用户可以指定定时策略、周期策略以及监控触发策略实现弹性伸缩;其中,定时策略和周期策略在公有云场景下会产生海量的任务,这些任务需要调度中心来调度。
[0003]调度集群中每个调度节点都执行不同的任务,对于任意一个调度节点而言,每执行一个任务都需要读写一次数据库,读取要执行的任务,从而导致单个调度节点的处理能力依赖于数据库的读写能力;而且,为了保证对于给定的任务只在单独的一个调度节点上执行,当前方案的处理方式是:当调度集群里最先能够抢占到该任务的调度节点执行该任务时,会对数据库里对应的任务加共享锁,这样,其它的调度节点就不能占用该共享锁,直到上一个节点释放共享锁后才能占用;此时,其它的调度节点处于等待状态,从而出现大量的等待资源,这种情况随着节点的增加会越来越严重。

【发明内容】

[0004]为了解决上述技术问题,本发明实施例中提供了一种任务调度方法及系统,技术方案如下:
[0005]第一方面,本发明提供一种任务调度方法,应用于任务调度系统中,所述任务调度系统包括任务数据库、调度集群和业务集群;其中,所述调度集群包括至少一个调度节点,所述业务集群包括至少一个业务节点,所述任务数据库中存储待处理的任务,所述至少一个调度节点从所述任务数据库中读取任务并调用所述业务节点处理读取的任务,所述方法包括:
[0006]调度节点根据预设算法从所述任务数据库中获取属于所述调度节点的预设时间段内的待处理任务,所述预设时间段内的待处理任务是执行时间超前于当前时刻的时间差处于所述预设时间段内的任务;然后,调度节点将所述预设时间段内的待处理任务存储在所述调度节点的任务资源池中;当到达所述待处理任务的当前执行时间时,调度节点向所述业务节点发送任务触发消息;最终,业务节点根据所述任务触发消息处理所述待处理任务。
[0007]第一方面提供的任务调度方法,调度节点能够预先从任务数据库中拉取属于自身的预设时间段内的多个任务,从而不需要每执行一个任务就访问一次任务数据库,减少对任务数据库的访问次数,因此,提高了单个调度节点的处理能力;而且,该任务调度过程不需要使用数据库的共享锁机制,从而避免各个调度节点之间任务执行时发生冲突,降低了等待资源,提高了海量任务并发处理性能。
[0008]结合第一方面,在第一方面的第一种可能的实现方式中,所述调度节点利用预设算法获取属于所述调度节点的预设时间段内的待处理任务,包括:
[0009]所述调度节点获取所述调度集群所包含的调度节点的总数,并确定自身在所述调度集群中的位置数;然后,获取所述任务数据库中任务创建时间戳相对于所述调度节点的总数的余数,确定余数与所述调度节点的位置数相同的预设时间段内的任务为所述待处理任务。
[0010]结合第一方面,在第一方面的第二种可能的实现方式中,所述方法还包括:
[0011]当确定所述调度集群包含的调度节点的数量更新时,所述调度节点根据任务的执行时间检测所述任务数据库中是否存在属于所述调度节点的未触发任务,所述未触发任务是超过任务的执行时间且未执行的任务;当确定存在所述未触发任务时,所述调度节点从所述任务数据库中获取所述未触发任务,并触发所述未触发任务。
[0012]第一方面的第二种可能的实现方式提供的任务调度方法,当调度集群所包含的调度节点总数发生变化时,调度节点检测到未触发任务后立即触发,保证任务不会丢失。
[0013]结合第一方面,在第一方面的第三种可能的实现方式中,所述任务调度系统还包括任务执行数据库,所述任务执行数据中存储被触发的任务;所述任务触发消息包含所述待处理任务的任务标识和当前执行时间;
[0014]所述业务节点根据所述任务触发消息处理所述待处理任务,包括:所述业务节点根据所述任务触发消息所包含的任务标识和当前执行时间,更新所述任务执行数据库内的任务;当所述任务执行数据库更新成功后,所述业务节点处理所述任务标识对应的任务。
[0015]第一方面的第三种可能的实现方式中,业务节点通过更新任务执行数据库中的任务的方式,避免重复任务,从而避免使用共享锁机制也能够解决任务重复执行的问题。而且,不使用共享锁机制能够降低等待资源,提高任务并发处理性能。
[0016]结合第一方面,在第一方面的第四种可能的实现方式中,所述业务节点根据所述任务触发消息所包含的任务标识和当前执行时间,更新所述任务执行数据库内的任务,包括:
[0017]所述业务节点判断所述任务执行数据库中是否存在所述任务标识对应的任务;如果所述任务执行数据库中不存在所述任务标识对应的任务,所述业务节点在所述任务执行数据库中添加所述任务标识对应的任务,且所述任务标识对应的任务的执行时间为所述当前执行时间;如果所述任务执行数据库中存在所述任务标识对应的任务,所述业务节点判断所述任务标识对应任务的执行时间是否是所述当前执行时间;如果所述任务标识对应任务的执行时间不是所述当前执行时间,则将所述任务的执行时间更新为所述当前执行时间,并确定所述任务执行数据库更新成功;如果所述任务标识对应任务的执行时间是所述当前执行时间,则确定所述任务执行数据库更新失败。
[0018]第二方面,本发明提供一种任务调度系统,该系统包括任务数据库、调度集群和业务集群;其中,所述调度集群包括至少一个调度节点,所述业务集群包括至少一个业务节点,所述任务数据库中存储待处理的任务,所述至少一个调度节点从所述任务数据库中读取任务并调用所述业务节点处理读取的任务;调度节点用于执行第一方面提供的任务调度方法;业务节点用于执行第一方面提供的任务调度方法。
[0019]由以上技术方案可见,本发明实施例提供的任务调度方法,调度节点根据预设算法从任务数据库中获取属于本调度节点的预设时间段内的待处理任务,待处理任务是指任务的执行时间超前于当前时刻的时间差处于预设时间段内的全部任务。调度节点将获得的待处理任务存储在本调度节点的任务资源池中。然后,任务资源池中的任务到达执行时间时,调度节点向业务节点发送任务触发消息,业务节点根据该任务触发消息处理待处理任务。本发明提供的任务调度过程中,调度节点能够预先从任务数据库中拉取属于自身的预设时间段内的多个任务,从而不需要每执行一个任务就访问一次任务数据库,减少对任务数据库的访问次数,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1