CN107566460B - 分布式部署计划任务的方法和系统 - Google Patents
分布式部署计划任务的方法和系统 Download PDFInfo
- Publication number
- CN107566460B CN107566460B CN201710699914.5A CN201710699914A CN107566460B CN 107566460 B CN107566460 B CN 107566460B CN 201710699914 A CN201710699914 A CN 201710699914A CN 107566460 B CN107566460 B CN 107566460B
- Authority
- CN
- China
- Prior art keywords
- execution
- task
- time
- current
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012544 monitoring process Methods 0.000 claims abstract description 23
- 238000010586 diagram Methods 0.000 description 8
- 230000003203 everyday effect Effects 0.000 description 3
- 230000000593 degrading effect Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及计划任务技术领域,具体涉及分布式部署计划任务的方法包括,监视服务器配置计划任务,形成配置数据;并将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中;分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;抢占成功的一台执行服务器执行所述符合执行条件的计划任务。在本发明中,将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中,执行计划任务需要读取分布式数据库的配置数据。本发明能解决中心调度服务器死机导致所有计划任务无法正常执行的问题。
Description
技术领域
本发明涉及计划任务技术领域,具体涉及分布式部署计划任务的方法和系统。
背景技术
程序中有很多需要定时执行的计划任务(Crontab)单例程序,这类单例程序不允许在本机或者多台服务器同时启动多个进程;常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
若计划任务在多台服务器同时启动会导致计算数据错误、数据写入重复等问题,受此限制,计划任务无法直接采用主流的分布式部署。现有技术中,计划任务部署方式通常为以下三种:
1.单机部署。仅在一台服务器上部署;
2.交互时间部署。部署两台或两台以上服务器,在计划任务可执行周期时段交替执行,每个时间只有一台服务器执行;
3.中心服务器调度执行服务器部署。部署一台中心调度服务器,多台执行服务器,中心服务器根据计划任务的配置,到达执行时间时,指定一台执行服务器执行。
但是上述现有技术存在如下问题:
1.单机部署:容灾性差,服务器状态未知,无法查询任务启动结束时间;
2.交互时间部署:配置复杂,需要在多台服务器对不同计划任务的每个执行周期分别配置不同的时间段;若其中一台服务器故障,故障期间该服务器所需执行的时间段计划任务无法执行,只能持续以降级状态运行;由于各服务器之间无法通讯,难以保证不会重复执行;
3.中心服务器调度执行服务器部署:执行服务器如果有一台死机,中心调度服务器可指派其它执行服务器执行,但若中心调度服务器死机,则无法正常执行所有计划任务。
发明内容
本发明要解决的技术问题在于,克服现有的技术的不足,提供的分布式部署计划任务的方法和系统,其能解决中心调度服务器死机导致所有计划任务无法正常执行的问题。
为达到上述技术目的,一方面,本发明所述的分布式部署计划任务的方法,所述方法包括:
监视服务器配置计划任务,形成配置数据;并将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中;
分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;
抢占成功的一台执行服务器执行所述符合执行条件的计划任务。
另一方面,本发明所述的分布式部署计划任务的系统,所述系统包括监视服务器、为计划任务对应的业务功能提供业务数据的分布式数据库、分布式部署的多台执行服务器;
所述监视服务器包括:
配置单元,用于配置计划任务,形成配置数据;
存储单元,用于将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中;
每台执行服务器包括:
抢占单元,用于周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;
执行单元,用于如果本执行服务器抢占成功,执行所述符合执行条件的计划任务。
在本发明中,将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中,执行计划任务需要读取分布式数据库的配置数据。由于本发明没有中心服务器,不存在中心服务器死机导致计划任务无法正常执行的情况,而且分布式数据库部署在多台数据服务器上,即使部分数据服务器死机,不会影响执行服务器读取到配置数据,从而不会影响整体计划任务执行。并且,对于分布式数据库而言,其向业务功能提供数据,如果所有数据库服务器全部出现问题,则业务功能也无法正常工作。在业务功能无法正常工作的情况下,执行计划任务没有任何意义。另外分布式部署的多台执行服务器根据配置数据对计划任务进行抢占的模式,也能够保证计划任务的正常执行,而不是无法执行或降级执行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例的方法流程示意图;
图2为本发明另一个实施例的方法流程示意图;
图3为本发明实施例的系统结构示意图;
图4为本发明实施例的监视服务器的结构示意图;
图5为本发明实施例的监视服务器的另一个结构示意图;
图6为本发明实施例的执行服务器的结构示意图;
图7为本发明实施例的抢占单元的结构示意图;
图8为本发明实施例的执行单元的结构示意图;
图9为本发明实施例的抢占单元的另一个结构示意图;
图10为本发明实施例的执行服务器的另一个结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明所述的分布式部署计划任务的方法,包括:
101、监视服务器配置计划任务,形成配置数据;并将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中;
102、分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;
103、抢占成功的一台执行服务器执行所述符合执行条件的计划任务。
所述计划任务的配置数据包括计划任务的执行时间、执行周期、执行程序和计划任务自身包含的参数;
所述分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务,具体包括:
分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务;
若检测到符合执行条件的计划任务,则分布式部署的多台执行服务器抢占符合执行条件的计划任务;
以及,
所述抢占成功的一台执行服务器执行所述符合执行条件的计划任务,具体包括:
一台执行服务器抢占成功、其他执行服务器抢占失败所述符合执行条件的计划任务后,抢占成功的执行服务器读取分布式数据库中当前计划任务的执行程序和计划任务自身包含的参数;
根据当前计划任务的执行程序和计划任务自身包含的参数,执行一个执行周期的当前计划任务。
所述计划任务的配置数据还包括计划任务的最大执行时长;
所述方法还包括:
抢占成功的执行服务器读取分布式数据库中当前计划任务的最大执行时长,在实际执行时长超过对应的最大执行时长时,主动结束正在执行的当前计划任务;否则,在一个执行周期到达时,当前计划任务结束;并
将当前计划任务的结束时间存储至分布式数据库,所述结束时间包括执行完成一个执行周期的计划任务的结束时间、或者实际执行时长超过最大执行时长时主动结束正在执行的当前计划任务的结束时间。
所述方法还包括:
各台执行服务器以预定第一频率将运行状态信息更新至分布式数据库中;
若某台执行服务器在规定时间段内没有更新运行状态信息,则判定该执行服务器为死机状态,否则,判定该执行服务器为正常运行状态。
所述分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务,具体包括:
各台正常运行状态的执行服务器以预定第二频率读取当前时间;针对每一个计划任务:
若当前时间为当前计划任务的录入时间之后的第一个执行时间,则判定当前计划任务符合执行条件,所述录入时间之后的第一个执行时间根据录入时间、执行时间和执行周期确定;
若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则进一步判断分布式数据库中是否存储有上个执行周期当前计划任务的结束时间;
若分布式数据库中存储有上个执行周期当前计划任务的结束时间,则判定当前计划任务符合执行条件;
若分布式数据库中没有存储上个执行周期当前计划任务的结束时间、且上个执行周期当前计划任务的执行服务器为死机状态,则判定当前计划任务符合执行条件;
所述若检测到符合执行条件的计划任务,则分布式部署的多台执行服务器抢占符合执行条件的计划任务,具体包括:
检测到符合执行条件的计划任务时,若当前时间为当前计划任务的录入时间之后的第一个执行时间,则各台正常运行状态的执行服务器分别尝试使用当前时间写入分布式数据库中,作为当前计划任务第一次执行周期的被抢占时间;若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则各台正常运行状态的执行服务器分别尝试使用当前时间更新分布式数据库中当前计划任务在上次执行周期的被抢占时间;
首先将当前时间写入分布式数据库中的执行服务器数据更新成功,其他执行服务器数据更新失败;
数据更新成功的执行服务器为抢占当前计划任务成功的执行服务器;数据更新失败的执行服务器为抢占当前计划任务失败的执行服务器。
所述执行一个执行周期的当前计划任务之后,还包括;
所述分布式部署的多台执行服务器将抢占信息存储至分布式数据库,所述抢占信息表示每台执行服务器每次抢占符合执行条件的计划任务的结果。
如图2所示,作为另一个实施例,本发明所述的分布式部署计划任务的方法,包括:
201、监视服务器配置计划任务,形成配置数据;并将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中;
所述计划任务的配置数据包括计划任务的执行时间、执行周期、执行程序、计划任务自身包含的参数和最大执行时长。
202、分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;具体地:
分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务;
若检测到符合执行条件的计划任务,则分布式部署的多台执行服务器抢占符合执行条件的计划任务。
203、抢占成功的一台执行服务器执行所述符合执行条件的计划任务;具体地:
一台执行服务器抢占成功、其他执行服务器抢占失败所述符合执行条件的计划任务后,抢占成功的执行服务器读取分布式数据库中当前计划任务的执行程序和计划任务自身包含的参数;
根据当前计划任务的执行程序和计划任务自身包含的参数,执行一个执行周期的当前计划任务;
所述分布式部署的多台执行服务器将抢占信息存储至分布式数据库,所述抢占信息表示每台执行服务器每次抢占符合执行条件的计划任务的结果。
204、监视服务器将分布式数据库中存储的数据取出,并进行查看;
所述分布式数据库中存储的数据包括:各计划任务的ID、各计划任务的配置数据、各台执行服务器的运行状态信息、各计划任务的各执行周期的结束时间、各计划任务在当前执行周期的被抢占时间、各执行服务器的抢占信息。
所述方法还包括:
抢占成功的执行服务器读取分布式数据库中当前计划任务的最大执行时长,在实际执行时长超过对应的最大执行时长时,主动结束正在执行的当前计划任务;否则,在一个执行周期到达时,当前计划任务结束;并将当前计划任务的结束时间存储至分布式数据库,所述结束时间包括执行完成一个执行周期的计划任务的结束时间、或者实际执行时长超过最大执行时长时主动结束正在执行的当前计划任务的结束时间;
各台执行服务器以预定第一频率将运行状态信息更新至分布式数据库中;
若某台执行服务器在规定时间段内没有更新运行状态信息,则判定该执行服务器为死机状态,否则,判定该执行服务器为正常运行状态。
所述分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务,具体包括:
各台正常运行状态的执行服务器以预定第二频率读取当前时间;针对每一个计划任务:
若当前时间为当前计划任务的录入时间之后的第一个执行时间,则判定当前计划任务符合执行条件,所述录入时间之后的第一个执行时间根据录入时间、执行时间和执行周期确定;
若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则进一步判断分布式数据库中是否存储有上个执行周期当前计划任务的结束时间;
若分布式数据库中存储有上个执行周期当前计划任务的结束时间,则判定当前计划任务符合执行条件;
若分布式数据库中没有存储上个执行周期当前计划任务的结束时间、且上个执行周期当前计划任务的执行服务器为死机状态,则判定当前计划任务符合执行条件;
所述若检测到符合执行条件的计划任务,则分布式部署的多台执行服务器抢占符合执行条件的计划任务,具体包括:
检测到符合执行条件的计划任务时,若当前时间为当前计划任务的录入时间之后的第一个执行时间,则各台正常运行状态的执行服务器分别尝试使用当前时间写入分布式数据库中,作为当前计划任务第一次执行周期的被抢占时间;若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则各台正常运行状态的执行服务器分别尝试使用当前时间更新分布式数据库中当前计划任务在上次执行周期的被抢占时间;
首先将当前时间写入分布式数据库中的执行服务器数据更新成功,其他执行服务器数据更新失败;
数据更新成功的执行服务器为抢占当前计划任务成功的执行服务器;数据更新失败的执行服务器为抢占当前计划任务失败的执行服务器。
如图3所示,本发明所述的分布式部署计划任务的系统,所述系统包括监视服务器21、为计划任务对应的业务功能提供业务数据的分布式数据库22、分布式部署的多台执行服务器23;
如图4所示,作为监视服务器21的一种可能结构,所述监视服务器21包括:
配置单元211,用于配置计划任务,形成配置数据;
存储单元212,用于将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中。
如图6所示,作为每台执行服务器23的一种可能结构,每台执行服务器23包括:
抢占单元231,用于周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;
执行单元232,用于如果本执行服务器抢占成功,执行所述符合执行条件的计划任务。
所述计划任务的配置数据包括计划任务的执行时间、执行周期、执行程序、计划任务自身包含的参数和最大执行时长。
如图7所示,作为抢占单元231的一种可能结构,所述抢占单元231包括:
判断模块2311,用于周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务;
抢占模块2312,用于若检测到符合执行条件的计划任务,则抢占符合执行条件的计划任务。
如图8所示,作为执行单元232的一种可能结构,所述执行单元232包括:
读取模块2321,用于在本执行服务器抢占成功、其他执行服务器抢占失败所述符合执行条件的计划任务后,读取分布式数据库中当前计划任务的执行程序和计划任务自身包含的参数;
执行模块2322,用于根据当前计划任务的执行程序和计划任务自身包含的参数,执行一个执行周期的当前计划任务。
如图10所示,作为每台执行服务器23的另一种可能结构,所述每台执行服务器23包括:
抢占单元231,用于周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;
执行单元232,用于如果本执行服务器抢占成功,执行所述符合执行条件的计划任务;
结束单元233,用于如果本执行服务器抢占成功,读取分布式数据库中当前计划任务的最大执行时长,在实际执行时长超过对应的最大执行时长时,主动结束正在执行的当前计划任务;否则,在一个执行周期到达时,当前计划任务结束;
结束时间存储单元234,用于将当前计划任务的结束时间存储至分布式数据库,所述结束时间包括执行完成一个执行周期的计划任务的结束时间、或者实际执行时长超过最大执行时长时主动结束正在执行的当前计划任务的结束时间;
状态更新单元235,用于以预定第一频率将本执行服务器的运行状态信息更新至分布式数据库中;
状态判定单元236,用于读取分布式数据库中各台执行服务器的运行状态信息,若某台执行服务器在规定时间段内没有更新运行状态信息,则判定该执行服务器为死机状态,否则,判定该执行服务器为正常运行状态。
在抢占单元231中,所述判断模块2311具体用于:以预定第二频率读取当前时间;针对每一个计划任务:若当前时间为当前计划任务的录入时间之后的第一个执行时间,则判定当前计划任务符合执行条件,所述录入时间之后的第一个执行时间根据录入时间、执行时间和执行周期确定;若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则进一步判断分布式数据库中是否存储有上个执行周期当前计划任务的结束时间;若分布式数据库中存储有上个执行周期当前计划任务的结束时间,则判定当前计划任务符合执行条件;若分布式数据库中没有存储上个执行周期当前计划任务的结束时间、且上个执行周期当前计划任务的执行服务器为死机状态,则判定当前计划任务符合执行条件。
在抢占单元231中,所述抢占模块2312具体用于:在本执行服务器为正常运行状态下,检测到符合执行条件的计划任务时,若当前时间为当前计划任务的录入时间之后的第一个执行时间,则尝试使用当前时间写入分布式数据库中,作为当前计划任务第一次执行周期的被抢占时间;若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则尝试使用当前时间更新分布式数据库中当前计划任务在上次执行周期的被抢占时间;以及,首先将当前时间写入分布式数据库中的执行服务器数据更新成功,其他执行服务器数据更新失败;数据更新成功的执行服务器为抢占当前计划任务成功的执行服务器;数据更新失败的执行服务器为抢占当前计划任务失败的执行服务器。
如图9所示,作为抢占单元231的另一种可能结构,所述抢占单元231包括:
判断模块2311,用于周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务;
抢占模块2312,用于若检测到符合执行条件的计划任务,则抢占符合执行条件的计划任务;
抢占信息存储模块2313,用于将抢占信息存储至分布式数据库,所述抢占信息表示本执行服务器每次抢占符合执行条件的计划任务的结果。
如图5所示,作为监视服务器21的另一种可能结构,所述监视服务器21包括:
配置单元211,用于配置计划任务,形成配置数据;
存储单元212,用于将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中;
查看单元213,用于分布式数据库中存储的数据取出,并进行查看.
所述分布式数据库中存储的数据包括:各计划任务的ID、各计划任务的配置数据、各台执行服务器的运行状态信息、各计划任务的各执行周期的结束时间、各计划任务在当前执行周期的被抢占时间、各执行服务器的抢占信息。
在本发明中,分布式数据库中包括任务表、服务器表和日志表。所述任务表中,存储有:各计划任务的ID、各计划任务的配置数据、各计划任务在当前执行周期的被抢占时间、各计划任务的各执行周期的结束时间等;所述服务器表中存储有:各台执行服务器的运行状态信息等;所述日志表中存储有:各台执行服务器ID、各执行服务器的抢占信息等。其中所有和各计划任务相关的信息都是通过各计划任务的ID与各计划任务相关联,所有关于执行服务器的信息都是通过各台执行服务器ID与各执行服务器相关联。
在各执行服务器抢占当前计划任务时,将当前时间尝试写入至分布式数据库中的任务表中与计划任务ID一一对应,第一台将当前时间写入至任务表中的执行服务器抢占该计划任务的当前执行周期成功。若当前任务的执行周期不是第一个执行周期,则各执行服务器尝试将当前时间写入至布式数据库中的任务表中与计划任务ID一一对应的同时,替换当前计划任务在上个执行周期的被抢占时间;第一台江当前时间替换成功的执行服务器抢占该计划任务的当前执行周期成功。因此,在任务表中,各计划任务在当前执行周期的被抢占时间一直是最新的执行周期的被抢占时间。在计划任务被抢占成功后,执行服务器立即执行当前周期的该计划任务。所以各计划任务在当前执行周期的被抢占时间也就是各计划任务在当前执行周期开始执行的时间。
关于各计划任务被抢占的各执行周期被抢占的历史时间都存储至日志表的各执行服务器的抢占信息中。所述各执行服务器的抢占信息还包括关于各计划任务被抢占的其余所有信息。
以微博的某个计划任务具体举例说明:
业务功能:微博;
计划任务:每天凌晨3:00定时删除24小时内被封杀的用户数据;
配置数据包括:
计划任务的执行时间:凌晨3:00;
执行周期:每天;
最大执行时长:1小时;
执行程序:删除被封杀的用户数据;
计划任务自身包含的参数:24小时。
监视服务器将配置数据存储至为微博提供业务数据的分布式数据库中的任务表中;
当第一次执行该计划任务时,读取分布式数据库中存储的计划任务的执行时间:凌晨3:00;此时假设所有的执行服务器都未死机,为正常运行状态,所以所有执行服务器都可以抢占“凌晨3:00定时删除24小时内被封杀的用户数据”的第一执行周期的计划任务。
假设配置数据存储至分布式数据库中的录入时间为2017年7月20日凌晨1:00,每分钟(第二频率)读取当前时间,当时间到2017年7月20凌晨3:00时,每台执行服务器将当前时间写入至分布式数据库的任务表中,作为该计划任务第一执行周期的被抢占时间进行存储,首先将自己的当前时间(2017年7月20凌晨3:00)写入任务表中的执行服务器更新数据成功,其余执行服务器更新数据失败;更新数据成功的执行服务器为抢占本计划任务成功的执行服务器。设本次抢占成功的为执行服务器A。
执行服务器A读取分布式数据库中存储的执行程序:删除被封杀的用户数据;计划任务自身包含的参数:24小时,在2017年7月20凌晨3:00开始执行删除24小时内被封杀的用户数据。
此时,将执行服务器A和其余执行服务器的抢占结果也存储至分布式数据库中日志表的各执行服务器的抢占信息中。
每分钟(第一频率)将每台执行服务器的运行状态信息更新至分布式数据库的服务器表中。若某台执行服务器在10分钟内(规定时间段内)没有更新运行信息,则判定该执行服务器死机。
若执行服务器A没有死机,则读取分布式数据库中最大执行时长:1小时,判定执行服务器A执行时间是否超过对应最大执行时长,若超过,则主动结束对应正在执行的“2017年7月20凌晨3:00定时删除24小时内被封杀的用户数据”,并将主动结束时的时间写入分布式数据库中。若没超过最大执行时长:1小时,则将该执行周期的计划任务的正常结束时的时间写入分布式数据库中。
最后监视服务器将分布式数据库中存储的配置数据的所有信息、每个计划任务的每次结束时间、每台执行服务器的运行和每台执行服务器的抢占信息等取出,进行查看,用于监视了解整过执行过程。
假设执行服务器A执行“2017年7月20凌晨3:00定时删除24小时内被封杀的用户数据”的执行时长为0.5小时。分布式数据库中存储有A执行“2017年7月20凌晨3:00定时删除24小时内被封杀的用户数据”的执行结束时间为“2017年7月20凌晨3:30”。当第二次执行该计划任务时,读取分布式数据库中存储的计划任务的触发时间:2017年7月20凌晨3:00和执行周期:每天。此时执行服务器A执行“2017年7月20凌晨3:00定时删除24小时内被封杀的用户数据”已经结束,则“2017年7月21凌晨3:00定时删除24小时内被封杀的用户数据”为可执行计划任务。
假设分布式数据库中没有执行服务器A执行“2017年7月20凌晨3:00定时删除24小时内被封杀的用户数据”的执行结束时间,但是发现执行服务器A已死机;则“2017年7月21凌晨3:00定时删除24小时内被封杀的用户数据”也为可执行计划任务。
此时未死机的执行服务器都可以抢占“凌晨3:00定时删除24小时内被封杀的用户数据”的第二执行周期的计划任务。
每分钟(第二频率)读取当前时间,当时间到2017年7月21凌晨3:00时,每台执行服务器将当前时间更新至分布式数据库的任务表中,用于替换第一执行周期该任务的被抢占时间(2017年7月20凌晨3:00)。首先将自己的当前时间(2017年7月21凌晨3:00)更新到分布式数据库的执行服务器抢更新数据成功,其余执行服务器更新数据失败。更新数据成功的执行服务器为占本次执行周期的该计划任务成功的执行服务器。设本次抢占成功的为执行服务器B。
执行服务器B读取分布式数据库中存储的执行程序:删除被封杀的用户数据;计划任务自身包含的参数:24小时,在2017年7月21凌晨3:00开始执行删除24小时内被封杀的用户数据。
此时,将执行服务器B和其余执行服务器的抢占结果也存储至分布式数据库中。
每分钟(第一频率)将每台执行服务器的运行信息更新至分布式数据库中。若某台执行服务器在10分钟内(规定时间段内)没有更新运行信息,则判定该执行服务器死机。
若执行服务器B没有死机,则读取分布式数据库中最大执行时长:1小时,判定执行服务器B执行时间是否超过对应最大执行时长,若超过,则结束对应正在执行的“2017年7月21凌晨3:00定时删除24小时内被封杀的用户数据”,并将结束时的时间写入分布式数据库中。若没超过最大执行时长:1小时,则将结束时的时间写入分布式数据库中。
最后将分布式数据库中存储的配置数据的所有信息、每个计划任务的每次结束时间、每台执行服务器的运行和每台执行服务器的抢占信息等取出,进行查看,用于监视了解整过执行过程。
以此类推,当第n(n>1)次执行该计划任务时,过程和第二次执行该计划任务相同,在此就不再赘述。
在本发明中,分布式部署的多台执行服务器解决了传统单例部署容灾性差的问题;对计划任务配置对应的配置数据,有效的解决了传统交互时间部署配置复杂的问题;在部分执行服务器死机的情况下,分布式部署的多台执行服务器根据配置数据对计划任务进行抢占的模式,也能够保证计划任务的正常执行,而不是无法执行或降级执行;执行计划任务时,是从分布式数据库中读取,由于没有中心服务器,不存在中心服务器死机导致计划任务无法正常执行的情况;即使部分数据库服务死机也不影响整体服务执行。另外,对于分布式数据库而言,其向业务功能提供数据,如果所有数据库服务器全部出现问题,则业务功能也无法正常工作。在业务功能无法正常工作的情况下,执行计划任务没有任何意义。因此本发明提供的方法易执行,并且效率高;本发明提供的系统都有简单、易于实现。
Claims (12)
1.一种分布式部署计划任务的方法,其特征在于,所述方法包括:
监视服务器配置计划任务,形成配置数据;并将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中;
分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;
抢占成功的一台执行服务器执行所述符合执行条件的计划任务。
2.根据权利要求1所述的分布式部署计划任务的方法,其特征在于,所述计划任务的配置数据包括计划任务的执行时间、执行周期、执行程序和计划任务自身包含的参数;
所述分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务,具体包括:
分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务;
若检测到符合执行条件的计划任务,则分布式部署的多台执行服务器抢占符合执行条件的计划任务;
以及,
所述抢占成功的一台执行服务器执行所述符合执行条件的计划任务,具体包括:
一台执行服务器抢占成功、其他执行服务器抢占失败所述符合执行条件的计划任务后,抢占成功的执行服务器读取分布式数据库中当前计划任务的执行程序和计划任务自身包含的参数;
根据当前计划任务的执行程序和计划任务自身包含的参数,执行一个执行周期的当前计划任务。
3.根据权利要求2所述的分布式部署计划任务的方法,其特征在于,所述计划任务的配置数据还包括计划任务的最大执行时长;
所述方法还包括:
抢占成功的执行服务器读取分布式数据库中当前计划任务的最大执行时长,在实际执行时长超过对应的最大执行时长时,主动结束正在执行的当前计划任务;否则,在一个执行周期到达时,当前计划任务结束;并
将当前计划任务的结束时间存储至分布式数据库,所述结束时间包括执行完成一个执行周期的计划任务的结束时间、或者实际执行时长超过最大执行时长时主动结束正在执行的当前计划任务的结束时间。
4.根据权利要求3中任一项所述的分布式部署计划任务的方法,其特征在于,所述方法还包括:
各台执行服务器以预定第一频率将运行状态信息更新至分布式数据库中;
若某台执行服务器在规定时间段内没有更新运行状态信息,则判定该执行服务器为死机状态,否则,判定该执行服务器为正常运行状态。
5.根据权利要求4所述的分布式部署计划任务的方法,其特征在于,所述分布式部署的多台执行服务器周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务,具体包括:
各台正常运行状态的执行服务器以预定第二频率读取当前时间;针对每一个计划任务:
若当前时间为当前计划任务的录入时间之后的第一个执行时间,则判定当前计划任务符合执行条件,所述录入时间之后的第一个执行时间根据录入时间、执行时间和执行周期确定;
若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则进一步判断分布式数据库中是否存储有上个执行周期当前计划任务的结束时间;
若分布式数据库中存储有上个执行周期当前计划任务的结束时间,则判定当前计划任务符合执行条件;
若分布式数据库中没有存储上个执行周期当前计划任务的结束时间、且上个执行周期当前计划任务的执行服务器为死机状态,则判定当前计划任务符合执行条件;
所述若检测到符合执行条件的计划任务,则分布式部署的多台执行服务器抢占符合执行条件的计划任务,具体包括:
检测到符合执行条件的计划任务时,若当前时间为当前计划任务的录入时间之后的第一个执行时间,则各台正常运行状态的执行服务器分别尝试使用当前时间写入分布式数据库中,作为当前计划任务第一次执行周期的被抢占时间;若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则各台正常运行状态的执行服务器分别尝试使用当前时间更新分布式数据库中当前计划任务在上次执行周期的被抢占时间;
首先将当前时间写入分布式数据库中的执行服务器数据更新成功,其他执行服务器数据更新失败;
数据更新成功的执行服务器为抢占当前计划任务成功的执行服务器;数据更新失败的执行服务器为抢占当前计划任务失败的执行服务器。
6.根据权利要求2至5中任一项所述的分布式部署计划任务的方法,其特征在于,所述执行一个执行周期的当前计划任务之后,还包括;
所述分布式部署的多台执行服务器将抢占信息存储至分布式数据库,所述抢占信息表示每台执行服务器每次抢占符合执行条件的计划任务的结果;
所述抢占成功的一台执行服务器执行所述符合执行条件的计划任务之后,还包括:
监视服务器将分布式数据库中存储的数据取出,并进行查看;
所述分布式数据库中存储的数据包括:各计划任务的ID、各计划任务的配置数据、各台执行服务器的运行状态信息、各计划任务的各执行周期的结束时间、各计划任务在当前执行周期的被抢占时间、各执行服务器的抢占信息。
7.一种分布式部署计划任务的系统,其特征在于,所述系统包括监视服务器、为计划任务对应的业务功能提供业务数据的分布式数据库、分布式部署的多台执行服务器;
所述监视服务器包括:
配置单元,用于配置计划任务,形成配置数据;
存储单元,用于将计划任务的配置数据存储至为计划任务对应的业务功能提供业务数据的分布式数据库中;
每台执行服务器包括:
抢占单元,用于周期性读取分布式数据库中各计划任务的配置数据,当检测到符合执行条件的计划任务时,抢占所述符合执行条件的计划任务;
执行单元,用于如果本执行服务器抢占成功,执行所述符合执行条件的计划任务。
8.根据权利要求7所述的分布式部署计划任务的系统,其特征在于,所述计划任务的配置数据包括计划任务的执行时间、执行周期、执行程序和计划任务自身包含的参数;
所述抢占单元包括:
判断模块,用于周期性读取分布式数据库中各计划任务的执行时间和执行周期,并结合各计划任务的配置数据存储至分布式数据库中的录入时间,判断是否存在符合执行条件的计划任务;
抢占模块,用于若检测到符合执行条件的计划任务,则抢占符合执行条件的计划任务;
所述执行单元包括:
读取模块,用于在本执行服务器抢占成功、其他执行服务器抢占失败所述符合执行条件的计划任务后,读取分布式数据库中当前计划任务的执行程序和计划任务自身包含的参数;
执行模块,用于根据当前计划任务的执行程序和计划任务自身包含的参数,执行一个执行周期的当前计划任务。
9.根据权利要求8所述的分布式部署计划任务的系统,其特征在于,所述计划任务的配置数据还包括计划任务的最大执行时长;
所述执行服务器还包括:
结束单元,用于如果本执行服务器抢占成功,读取分布式数据库中当前计划任务的最大执行时长,在实际执行时长超过对应的最大执行时长时,主动结束正在执行的当前计划任务;否则,在一个执行周期到达时,当前计划任务结束;
结束时间存储单元,用于将当前计划任务的结束时间存储至分布式数据库,所述结束时间包括执行完成一个执行周期的计划任务的结束时间、或者实际执行时长超过最大执行时长时主动结束正在执行的当前计划任务的结束时间。
10.根据权利要求9所述的分布式部署计划任务的系统,其特征在于,所述执行服务器还包括:
状态更新单元,用于以预定第一频率将本执行服务器的运行状态信息更新至分布式数据库中;
状态判定单元,用于读取分布式数据库中各台执行服务器的运行状态信息,若某台执行服务器在规定时间段内没有更新运行状态信息,则判定该执行服务器为死机状态,否则,判定该执行服务器为正常运行状态。
11.根据权利要求10所述的分布式部署计划任务的系统,其特征在于,所述判断模块具体用于:以预定第二频率读取当前时间;针对每一个计划任务:若当前时间为当前计划任务的录入时间之后的第一个执行时间,则判定当前计划任务符合执行条件,所述录入时间之后的第一个执行时间根据录入时间、执行时间和执行周期确定;若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则进一步判断分布式数据库中是否存储有上个执行周期当前计划任务的结束时间;若分布式数据库中存储有上个执行周期当前计划任务的结束时间,则判定当前计划任务符合执行条件;若分布式数据库中没有存储上个执行周期当前计划任务的结束时间、且上个执行周期当前计划任务的执行服务器为死机状态,则判定当前计划任务符合执行条件;
所述抢占模块具体用于:在本执行服务器为正常运行状态下,检测到符合执行条件的计划任务时,若当前时间为当前计划任务的录入时间之后的第一个执行时间,则尝试使用当前时间写入分布式数据库中,作为当前计划任务第一次执行周期的被抢占时间;若当前时间为在当前计划任务的第一个执行时间后至少一个执行周期的执行时间,则尝试使用当前时间更新分布式数据库中当前计划任务在上次执行周期的被抢占时间;以及,首先将当前时间写入分布式数据库中的执行服务器数据更新成功,其他执行服务器数据更新失败;数据更新成功的执行服务器为抢占当前计划任务成功的执行服务器;数据更新失败的执行服务器为抢占当前计划任务失败的执行服务器。
12.根据权利要求8至11中任一项所述的分布式部署计划任务的系统,其特征在于,所述抢占单元还包括:
抢占信息存储模块,用于将抢占信息存储至分布式数据库,所述抢占信息表示本执行服务器每次抢占符合执行条件的计划任务的结果;
所述监视服务器还包括:
查看单元,用于分布式数据库中存储的数据取出,并进行查看;
所述分布式数据库中存储的数据包括:各计划任务的ID、各计划任务的配置数据、各台执行服务器的运行状态信息、各计划任务的各执行周期的结束时间、各计划任务在当前执行周期的被抢占时间、各执行服务器的抢占信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710699914.5A CN107566460B (zh) | 2017-08-16 | 2017-08-16 | 分布式部署计划任务的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710699914.5A CN107566460B (zh) | 2017-08-16 | 2017-08-16 | 分布式部署计划任务的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107566460A CN107566460A (zh) | 2018-01-09 |
CN107566460B true CN107566460B (zh) | 2020-06-05 |
Family
ID=60974406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710699914.5A Active CN107566460B (zh) | 2017-08-16 | 2017-08-16 | 分布式部署计划任务的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107566460B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908776A (zh) * | 2018-09-17 | 2020-03-24 | 网宿科技股份有限公司 | 定时任务的执行方法及相关装置、计算机可读存储介质 |
CN113302593B (zh) * | 2019-05-16 | 2025-03-21 | 深圳市欢太科技有限公司 | 任务处理方法、装置、系统、电子设备及存储介质 |
CN110263098A (zh) * | 2019-06-19 | 2019-09-20 | 北京百度网讯科技有限公司 | 应用于分布式作业引擎的分布式作业方法、系统以及装置 |
CN111078670B (zh) * | 2019-12-19 | 2023-06-20 | 上海达梦数据库有限公司 | 数据库执行计划清除方法、装置、设备和存储介质 |
CN111142977B (zh) * | 2019-12-26 | 2023-08-18 | 深圳前海环融联易信息科技服务有限公司 | 一种定时任务的处理方法、装置、计算机设备及存储介质 |
CN111277373B (zh) * | 2020-01-14 | 2022-08-16 | 深圳震有科技股份有限公司 | 一种服务器切换的控制方法、终端及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0644484A2 (en) * | 1993-09-21 | 1995-03-22 | Microsoft Corporation | Pre-emptive multi-tasking with co-operative groups of tasks |
CN101059765A (zh) * | 2006-01-09 | 2007-10-24 | 中山大学 | 一种数字家庭网络多任务并发执行的装置及方法 |
CN102857363A (zh) * | 2012-05-04 | 2013-01-02 | 运软网络科技(上海)有限公司 | 一种虚拟网络的自主管理系统和方法 |
US8555282B1 (en) * | 2007-07-27 | 2013-10-08 | Dp Technologies, Inc. | Optimizing preemptive operating system with motion sensing |
CN103810025A (zh) * | 2012-11-09 | 2014-05-21 | 中国科学院沈阳计算技术研究所有限公司 | 一种适用于数控系统容错调度的方法 |
CN105530298A (zh) * | 2015-12-14 | 2016-04-27 | 微梦创科网络科技(中国)有限公司 | 计划任务单例程序的部署及运行方法、装置和系统 |
CN105677468A (zh) * | 2016-01-06 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 缓存及其设计方法以及利用该缓存的调度方法和调度装置 |
WO2016205417A1 (en) * | 2015-06-15 | 2016-12-22 | Datto, Inc. | Methods, systems and apparatuses for managing prioritization of time-based processes |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040054583A1 (en) * | 2002-05-03 | 2004-03-18 | Nye Andrew B. | System and method for downloading marketing messages to a point of sale printer |
US8645958B2 (en) * | 2011-06-16 | 2014-02-04 | uCIRRUS | Software virtual machine for content delivery |
-
2017
- 2017-08-16 CN CN201710699914.5A patent/CN107566460B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0644484A2 (en) * | 1993-09-21 | 1995-03-22 | Microsoft Corporation | Pre-emptive multi-tasking with co-operative groups of tasks |
CN101059765A (zh) * | 2006-01-09 | 2007-10-24 | 中山大学 | 一种数字家庭网络多任务并发执行的装置及方法 |
US8555282B1 (en) * | 2007-07-27 | 2013-10-08 | Dp Technologies, Inc. | Optimizing preemptive operating system with motion sensing |
CN102857363A (zh) * | 2012-05-04 | 2013-01-02 | 运软网络科技(上海)有限公司 | 一种虚拟网络的自主管理系统和方法 |
CN103810025A (zh) * | 2012-11-09 | 2014-05-21 | 中国科学院沈阳计算技术研究所有限公司 | 一种适用于数控系统容错调度的方法 |
WO2016205417A1 (en) * | 2015-06-15 | 2016-12-22 | Datto, Inc. | Methods, systems and apparatuses for managing prioritization of time-based processes |
CN105530298A (zh) * | 2015-12-14 | 2016-04-27 | 微梦创科网络科技(中国)有限公司 | 计划任务单例程序的部署及运行方法、装置和系统 |
CN105677468A (zh) * | 2016-01-06 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 缓存及其设计方法以及利用该缓存的调度方法和调度装置 |
Non-Patent Citations (2)
Title |
---|
分布式定时任务(一);lyndon_nfc;《简书》;20160919;全文 * |
阿里云开放平台;杭州电子科技大学专项课题组;《杭州市云计算产业发展报告2012》;20121231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107566460A (zh) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107566460B (zh) | 分布式部署计划任务的方法和系统 | |
US9984140B1 (en) | Lease based leader election system | |
CN103370693B (zh) | 重启进程 | |
CN103197969B (zh) | 一种分布式定时任务控制装置及方法 | |
US8943353B2 (en) | Assigning nodes to jobs based on reliability factors | |
CN111736969A (zh) | 分布式作业调度方法及装置 | |
CN106201672B (zh) | 一种定时任务设置系统及其定时任务运行方法 | |
WO2019223174A1 (zh) | 任务自动重跑方法、系统、计算机设备和存储介质 | |
CN110096342A (zh) | 任务处理方法、装置、服务器和存储介质 | |
CN111125444A (zh) | 大数据任务调度管理方法、装置、设备及存储介质 | |
CN108491254A (zh) | 一种数据仓库的调度方法及装置 | |
CN110895487B (zh) | 分布式任务调度系统 | |
CN103370694A (zh) | 重启数据处理系统 | |
US11809276B2 (en) | Container-based stateful application resilience to node failure | |
US9229839B2 (en) | Implementing rate controls to limit timeout-based faults | |
CN112181621A (zh) | 一种任务调度系统、方法、设备及存储介质 | |
CN110895488A (zh) | 任务调度方法及装置 | |
CN107784400B (zh) | 一种业务模型的执行方法和装置 | |
CN110895483A (zh) | 任务恢复方法及装置 | |
CN110895486B (zh) | 分布式任务调度系统 | |
CN110895485A (zh) | 任务调度系统 | |
CN111767125A (zh) | 任务执行方法、装置、电子设备、存储介质 | |
CA3235167A1 (en) | System and method for data pruning via dynamic partition management | |
CN112379989B (zh) | 一种定时任务进程与队列服务进程管理系统及方法 | |
Bartnik et al. | On-the-fly reconfiguration of query plans for stateful stream processing engines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |