任务调度方法及系统、调度中心服务器和存储介质与流程

文档序号:18257118发布日期:2019-07-24 10:20阅读:192来源:国知局
任务调度方法及系统、调度中心服务器和存储介质与流程

本发明实施例涉及计算机技术领域,特别涉及一种任务调度方法及系统、调度中心和存储介质。



背景技术:

随着计算机的普及以及互联网行业的迅速发展,互联网业务系统变得愈加复杂和庞大。在分布式系统中,定时调度任务的运用能够解决大量复杂业务上的处理逻辑,在互联网业务领域应用广泛。

然而,发明人发现,传统的定时任务是采用Crontab技术(一种定时任务操作技术)实现,即编写服务器脚本规定运行时间和频率,通过服务器设备的触发来执行定时任务。但是,使用Crontab技术实现定时任务存在一些弊端:1).程序异常或者服务器异常,会导致定时任务不能执行,若要重新执行的话,需要手动修改Crontab脚本内的运行时间,重新执行后还得改回正常时间,维护工作量大。2).任务执行状态的监控难度高,对于分布式系统而言,则需要登录到多台机器查看定时任务的执行状态,耗时费力。3).多台机器配置相同的定时任务时,存在相同任务被重复执行的问题。扩充执行机器时,操作复杂,工作量大。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本发明实施方式的目的在于提供一种任务调度方法及系统、调度中心和存储介质,使得调度中心服务器能够调度每一个执行器,避免定时任务被重复执行,且通过调度中心服务器监控定时任务的状况,降低了定时任务的监控难度。

为解决上述技术问题,本发明的实施方式提供了一种任务调度方法,应用于调度中心服务器,调度中心服务器与至少两个执行器连接,该任务调度方法包括:

根据各定时任务的执行时间,确定待执行的定时任务;

根据每个执行器的当前状态和每个执行器的更新顺序,选择用于执行待执行的定时任务的执行器作为任务执行器。

本发明的实施方式还提供了一种任务调度系统,包括:至少一个处理器;以及,

与至少一个处理器通信连接的存储器;以及,

与执行器通信连接的通信组件,通信组件在处理器的控制下接收和发送数据;

其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的任务调度方法。

本发明的实施方式还提供了一种任务调度系统,包括:上述的调度中心服务器和与调度中心服务器连接的至少两个的执行器。

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

本发明实施方式相对于现有技术而言,调度中心服务器根据定时任务的执行时间确定待执行的定时任务,以便调度中心服务器对定时任务进行管理和监控,通过调度中心服务器可监控定时任务的状态,省时省力,降低了定时任务的监控难度;并且根据每个执行器的当前状态以及执行器对任务锁的更新顺序,确定最终执行待执行的定时任务的执行器,调度中心服务器将待执行的定时任务的数据传输至最终执行调度的执行器,并使得其他执行器放弃该待执行定时任务,这就能确保只有一个节点执行该待执行定时任务,从而能够有效避免定时任务被多次执行的问题。

另外,调度中心包括不止一个的服务器和包括全部定时任务的信息的数据库,数据库以集群化部署的方式分布于至少一个的服务器上;

根据各定时任务的执行时间,确定待执行的定时任务之前,任务调度方法还包括:根据数据库中的每个定时任务的信息确定每个定时任务的执行时间。

该实施方式中,调度中心包括不止一个的服务器,且数据库以集群化部署的方式设置于每一个服务器上,即使出现个别服务器异常,也可以由其他的服务器继续管理数据库中的定时任务,保证系统的正常工作,减小系统的维护难度。

另外,根据每个执行器的当前状态和每个执行器对任务锁的更新顺序,选择用于执行待执行的定时任务的执行器作为任务执行器,具体包括:分别向每个执行器发送调度请求,并获取每个执行器的响应信息;根据每个执行器的响应信息,确定当前状态为空闲状态的执行器;根据当前状态为空闲状态的执行器对任务锁的标识码的更新顺序,选择用于执行待执行的定时任务执行器作为任务执行器。

该实施方式中,调度中心服务器确定出每个执行器的状态,有助于通过调度服务器对定时任务进行监控。

另外,根据当前状态为空闲状态的执行器对任务锁的标识码的更新顺序,选择用于执行待执行的定时任务执行器作为任务执行器,具体包括:获取当前状态为空闲状态的执行器发送的更新标识码的请求;将待执行的定时任务的标识码传输至当前状态为空闲状态的执行器;获取当前状态为空闲状态的执行器返回的新的标识码,其中,新的标识码由当前状态为空闲状态的执行器对待执行的定时任务的标识码修改得到;若确定待执行的定时任务的标识码未发生变化,采用新的标识码替换待执行的定时任务的标识码;确定新的标识码对应的执行器作为任务执行器。

另外,调度请求包括:心跳检测请求和/或忙碌检测请求,响应信息包括:执行器的运行状态信息和/或执行器的忙碌状态信息。

另外,执行器的运行状态信息包括:执行器发生故障、执行器未发生故障、未执行任务、任务执行中、任务执行成功和任务执行失败;执行器的忙碌状态信息包括:执行器忙碌和执行器不忙碌;

根据每个执行器的响应信息,确定当前状态为空闲状态的执行器,具体包括:

针对每个执行器进行如下处理:获取执行器发送的响应消息;若确定响应消息中包括执行器未执行任务和/或执行器不忙碌的信息,则确定执行器为当前状态为空闲状态的执行器。

另外,根据每个执行器的当前状态和每个执行器对任务锁的更新顺序,选择用于执行待执行的定时任务的执行器作为任务执行器之后,任务调度方法还包括:发送状态信息查询请求至任务执行器;获取任务执行器返回的状态响应信息;若确定状态响应信息表示任务执行器执行待执行的定时任务失败;发送切换执行器的调度请求至当前状态为空闲状态的执行器。

另外,根据每个执行器的当前状态和每个执行器对任务锁的更新顺序,选择用于执行待执行的定时任务的执行器作为任务执行器之后,任务调度方法还包括:获取任务执行器传输的待执行的定时任务的执行结果;根据执行结果更改待执行的定时任务的状态。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是本发明第一实施方式中任务调度方法的流程图;

图2是本发明第一实施方式中调度中心与执行器连接的结构示意图

图3是本发明第二实施方式中任务调度方法的流程图;

图4是本发明第三实施方式中调度中心服务器的结构图;

图5是本发明第四实施方式中调度系统的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种任务调度方法。应用于调度中心服务器,调度中心服务器与至少两个执行器连接,其具体流程如图1所示,包括如下实施步骤:

步骤101:根据各定时任务的执行时间,确定待执行的定时任务。

具体地说,调度中心服务器中设置有包括全部定时任务的信息的数据库,使得调度中心服务器可获取到各定时任务的执行时间,或者,调度中心服务器可直接获取到各定时任务的执行时间。此处对于调度中心服务器获取到各定时任务的执行时间的方式不做具体限定,由于调度中心服务器可获取到各定时任务的执行时间,有助于调度中心服务器对定时任务进行监控和管理。

一个具体实现中,调度中心包括不止一个的服务器和包括全部定时任务的信息的数据库,数据库以集群化部署的方式分布于至少一个的服务器上。这种分布方式使得调度中心服务器能够对全部的定时任务进行监控和管理。例如,本实施方式中的数据库为MongoDB(一种基于分布式文件存储的数据库)作为调度中心的数据存储,集群化部署的数据库多台服务器均连接同一个MongoDB,每个服务器上均设置MongoDB的副本集,MongoDB的设置能够实现统一配置、统一管理定时任务数据,副本集于多个服务器上实现冗余,在服务器或网络故障时能够提供自动故障转移,保证系统的正常运行。

例如,集群化部署的多台服务器中有一个服务器出现故障,调度中心可自动切换到一台正常的服务器,继续对各定时任务进行调度和监控,保证系统的正常运转。

其中,在执行步骤101之前,调度中心服务器可直接根据数据库中的定时任务的信息确定各定时任务的执行时间。

具体地说,本实施方式中在调度中心服务器中设置数据库用于管理各定时任务的信息,为了便于维护人员对系统的维护,将调度中心服务器的信息生成一个显示页面,例如,根据调度中心服务器对各定时任务的管理和监控生成网页信息,使得维护人员可根据显示的网页对定时任务进行实时监控,便于维护人员的操作。

步骤102:根据每个执行器的当前状态和每个执行器的更新顺序,选择用于执行待执行的定时任务的执行器作为任务执行器。

具体地说,为了避免多台执行器执行相同的定时任务,定时任务被重复执行的问题,根据每个执行器的当前状态来确定该执行器是否可以执行待执行的定时任务,执行器的更新顺序使得调度中心服务器选择执行待执行任务的执行器。

一个具体实现中,确定每个执行器的当前状态和每个执行器的更新顺序的具体过程为:分别向每个执行器发送调度请求,并获取每个执行器的响应信息;根据每个执行器的响应信息,确定当前状态为空闲状态的执行器;根据当前状态为空闲状态的执行器对任务锁的标识码的更新顺序,选择用于执行待执行的定时任务执行器作为任务执行器。

其中,调度请求包括:心跳检测请求和/或忙碌检测请求,响应信息包括:执行器的运行状态信息和/或执行器的忙碌状态信息。

具体地说,执行器配置有心跳检测接口和/或忙碌检测接口,其中,心跳检测接口供调度中心服务器检测执行器的状态,忙碌检测接口用于供调度中心检测该执行器是否处于忙碌状态。

值得一提的是,调度中心服务器可实现对定时任务的监控,在搭建调度中心服务器时调度中心实现的功能主要包括:配置任务注册服务器,实现定时任务的注册;配置任务调度功能服务器,用于实现定时任务的灵活调度;配置监控显示服务器,用于实时显示监控任务执行状态。此处仅是举例。

如图2中,调度中心与至少一个的执行器连接的结构图,根据调度中心的功能对调度中心进行划分,调度中心服务器10分别与任务注册服务器11、任务调度功能服务器12和监控显示服务器13连接,调度中心服务器10与至少两个的执行器连接,图示中的21、22和23,每个执行器均是通过心跳检测接口和/或忙碌检测接口与调度中心服务器连接。

图示中调度中心服务器10与执行器之间为双向的箭头,表示调度中心服务器10传输调度请求至执行器,执行器返回对应的响应信息至调度中心服务器10。

一个具体实现中,执行器的运行状态信息包括:未执行任务、任务执行中、任务执行成功和任务执行失败;执行器的忙碌状态信息包括:执行器忙碌和执行器不忙碌。则确定执行器为当前状态为空闲状态的执行器具体包括:获取执行器发送的响应消息;若确定响应消息中包括执行器未执行任务和/或执行器不忙碌的信息,则确定执行器为当前状态为空闲状态的执行器。

具体地说,根据当前状态为空闲状态的执行器对标识码的更新顺序选择任务执行器,调度中心服务器仅对标识码更新一次,在对标识码的更新顺序中第一个更新标识码的执行器作为任务执行器,一个具体实现为:获取当前状态为空闲状态的执行器发送的更新标识码的请求;将待执行的定时任务的标识码传输至当前状态为空闲状态的执行器;获取当前状态为空闲状态的执行器返回的新的标识码,其中,新的标识码由当前状态为空闲状态的执行器对待执行的定时任务的标识码修改得到;若确定待执行的定时任务的标识码未发生变化,采用新的标识码替换待执行的定时任务的标识码;确定新的标识码对应的执行器作为任务执行器。

其中,标识码用于唯一确定该定时任务,例如,在MongoDB中为每个定时任务生成一个标识码(Universally Unique Identifier,UUID)。具体实施中,在执行定时任务时调度中心服务器在每个任务节点加入乐观锁,即执行器获取到MongoDB中的定时任务的数据,对该定时任务的UUID进行更新,由更新后的执行器执行该定时任务,这样处理能够保证集群分布式调度的一致性,确保只有一个节点去执行此任务。

例如,同时有执行器A和执行器B获取到了MongoDB中同一定时任务的数据,若此时执行器A和执行器B同时执行该定时任务,会导致该定时任务被多个执行器执行,产生重复运算和流量。加入乐观锁,需要执行器A和执行器B去更新该定时任务的UUID,若执行器A的处理速度比执行器B的处理速度快,执行器A首先更新了乐观锁中的UUID,执行器B在更新UUID时就会发现不能与定时任务的UUID匹配,则放弃更新,同时放弃对定时任务的执行。

需要说明的是,本实施方式中为了避免同一定时任务被重复执行在调度中心服务器中设置乐观锁,此处仅是示例说明,实际中还可以根据其他的方式对执行器进行选择,此处不做限制。

具体地说,调度中心服务器设置有数据库存储有定时任务的数据,每个执行器需要执行的定时任务和定时任务的数据均设置在该执行器上,调度服务器选择可执行待执行定时任务的任务执行器,由任务执行器执行该定时任务。

一个具体实现中,将调度中心服务器中的数据生成网页,在可视化界面上显示该网页,使得监控人员可随时了解定时任务的执行状况,对定时任务进行实时监控。

需要说明的是:本发明第一实施方式中涉及一种任务调度方法,主要的改进点包括上述方法实施流程图中的各实施步骤,通过调度中心服务器从至少两个的执行器中选择调度服务器,由任务执行器执行待执行的定时任务,避免了一个定时任务被多个执行器执行,导致系统出现逻辑问题。

具体地说,在步骤102之后,任务执行器开始制定定时任务,监控人员可随时发出监控命令获取调度中心服务器上定时任务的状态,一个具体实现为:发送状态信息查询请求至任务执行器;获取任务执行器返回的状态响应信息;若确定状态响应信息表示任务执行器执行待执行的定时任务失败;发送切换执行器的调度请求至当前状态为空闲状态的执行器。

其中,状态信息查询命令中包括对定时任务的描述,具体包括:定时任务的执行时间、定时任务的UUID,或者定时任务的名称等信息,此处不做具体限定。

具体地说,任务执行器开始执行定时任务之后,若任务执行器执行完成该定时任务,调度中心服务器执行该任务调度方法还包括:获取任务执行器传输的待执行的定时任务的执行结果;根据执行结果更改待执行的定时任务的状态。

其中,调度服务器可获取任务执行器传输的执行结果,并根据执行结果对定时任务的状态进行更改,包括,定时任务执行完成,定时任务未执行完成。若定时任务已执行完成,对定时任务的状态进行标记,避免任务被重复执行;若定时任务未执行完成,说明任务执行器执行失败,需要重新安排执行器执行该定时任务。

一个具体实现中,任务执行器在开始执行待执行的定时任务之后,将执行状况反馈至调度中心服务器,包括:定时任务执行成功、定时任务执行失败,以及定时任务的执行进程等信息,此处仅是示例,不做具体限制。

需要说明的是,获取执行器执行待执行的定时任务得的执行结果,一方面是为了方便监控人员根据调度中心服务器给出的数据对定时任务进行监控,另一方面,调度中心服务器可根据获取的执行结果确定待执行的定时任务是否执行完成,保证每个定时任务都能够完成,例如,某一个执行器返回的执行结果表示定时任务执行失败,则调度中心服务器可根据该执行结果切换一台正常的执行器继续执行该定时任务,确保每个定时任务都能够被执行。

需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。

相对于现有技术而言,调度中心服务器根据定时任务的执行时间确定待执行的定时任务,以便调度中心服务器对定时任务进行管理和监控,通过调度中心服务器可监控定时任务的状态,省时省力,降低了定时任务的监控难度;并且根据每个执行器的当前状态以及执行器的更新顺序,确定最终执行待执行的定时任务的执行器,调度中心服务器将待执行的定时任务的数据传输至最终执行调度的执行器,并使得其他执行器放弃该带执行定时任务,这就能确保只有一个节点执行该待执行定时任务,从而能够有效避免定时任务被多次执行的问题。

本发明的第二实施方式涉及一种任务调度方法,第二实施方式与第一实施方式大致相同,主要区别之处在于,本实施方式中具体说明了调度中心服务器查询执行器状态的具体过程。其方法流程如图3所示,包括如下具体实施步骤:

具体地说,本实施方式中,包括步骤301至步骤307,其中,步骤301至步骤302与第一实施方式中的步骤101至步骤102大致相同,此处不再赘述,主要说明不同之处:

步骤303:任务执行器开始执行待执行的定时任务。

步骤304:发送状态信息查询请求至任务执行器。

具体地说,通过心跳检测接口或忙碌检测接口将状态信息查询任务执行器的状态,此处仅是示例说明。

步骤305:获取任务执行器返回的状态响应信息。

步骤306:判断响应信息是否表示待执行的定时任务失败,若为是,执行步骤207,否则,结束当前的流程。

步骤307:发送切换执行器的调度请求至当前状态为空闲状态的执行器。

具体地说,调度中心服务器有待执行的定时任务,并选择任务执行器,若通过对该定时任务的监控发现该定时器执行失败,则自动切换到其他的当前状态为空闲状态的执行器执行该定时任务,保证每个定时任务顺利执行。

需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第三实施方式涉及一种调度中心服务器,如图4所述,包括:至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;以及,与执行器通讯连接的通讯组件403,通讯组件403在处理器401的控制下接收和发送数据;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行任务调度方法。

本实施方式中,处理器401以中央处理器(Central Processing Unit,CPU)为例,存储器402以可读写存储器(Random Access Memory,RAM)为例。处理器401、存储器402以及通讯组件403可以通过总线或者其他方式连接,图4中以通过总线连接为例。存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施方式中实现任务调度方法的程序就存储于存储器402中。处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述任务调度方法。通讯组件403主要是用于实现与执行器之间的通讯连接,对于具体的模块组成等不做限定。

存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个程序模块存储在存储器402中,当被一个或者多个处理器401执行时,执行上述第一或第二方法实施方式中的任务调度方法。

上述产品可执行本申请实施方式所提供的任务调度方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的任务调度方法。

本发明的第四实施方式涉及一种任务调度系统,如图5所示,包括第三实施方式中的调度中心服务器501和与调度中心服务器501连接的至少一个的执行器21。

本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述第一或第二实施方式中的任务调度方法。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1