基于wowo jobcenter.

一、问题

1、定时任务多、运行状况不明

2、管理、维护成本高

二、解决方案

1、功能

 任务管理、任务调度、任务报警

2、解决方案

2012年时,暴风影音的马晨开源了一个 CronHub(时间调度系统)项目(github 地址),也可以看一下百度文库上的PPT

1 、大量的crontab管理起来好烦人

任务老是没按时执行,各种原因失败,真让人抓狂。

2、多台服务器环境下,管理crontab更是烦上加烦,登录每台机器查看crontab结果不是折磨一贯偷懒的程序员吗?

3、要是能有个自动化管理,可供的GUI界面管理就好了。所以暴风影音做一个“真正通用”,“真正解决日常需求”的时间调度系统。

大多数定时任务其实调用的是 Web 接口,说是定时任务,其实只是登记了要调用的远端接口、通讯协议、Crontab 时间格式表达式、执行机器组、超时时间、报警接收人等而已。全都是远端 WebService。由 JobCenter 按时通知对端的接口,并接收任务执行者的进度反馈和最终执行结果,这些响应均为 JSON 格式。还可以为同一个定时任务添加多个执行机器,JobCenter 保证通知成功。

wKioL1WDxijidBcoAAJMHWdbNuw687.jpg

优点:

可以指定定时任务的 Worker 集群,并指定执行策略,如随机选取一台机器执行,如第一台执行;

可以指定通知策略:保证执行成功,只通知一次;

可以设置超时警告时间;

并可以进一步设置警告接收人(短信和邮件),如下图所示:

wKiom1WDxUzhG1ryAADYYQO_gYk995.jpg

任务失败会发邮件给警告接收人;

调度方便

集中查看所有定时任务的执行总况,如下图所示:

wKiom1WDxZOwoD3MAADfndPekHU702.jpg

观察方便

按定时任务查看它的上次执行时间、耗时、是否超时、执行结果和通知结果。如下图所示:

wKioL1WDx4yR1zAlAAGwxh2K3GM948.jpg

wKiom1WDxfiDSN2LAAEUBTjpx0k565.jpg

wKiom1WDxhzTfrjiAAHdsAEfM-k610.jpgwKioL1WDx-qTeLXhAAGG1KDrb7s304.jpg

JobCenter 的通知保证机制

  通知保证机制有以下3种:

只通知一次

保证成功

保证成功(任务不在执行中)

  特别对 “保证成功(任务不在执行中)” 作以下说明:

  当一个任务到了这一轮的通知时间,jobcenter 会去检查这个任务之前的执行,是否还在执行中(如正在执行,客户端未返回)。如果有,则本次执行直接失败,不通知。