基于wowo jobcenter.
一、问题
1、定时任务多、运行状况不明
2、管理、维护成本高
二、解决方案
1、功能
任务管理、任务调度、任务报警
2、解决方案
2012年时,暴风影音的马晨开源了一个 CronHub(时间调度系统)项目(github 地址),也可以看一下百度文库上的PPT。
1 、大量的crontab管理起来好烦人
任务老是没按时执行,各种原因失败,真让人抓狂。
2、多台服务器环境下,管理crontab更是烦上加烦,登录每台机器查看crontab结果不是折磨一贯偷懒的程序员吗?
3、要是能有个自动化管理,可供的GUI界面管理就好了。所以暴风影音做一个“真正通用”,“真正解决日常需求”的时间调度系统。
大多数定时任务其实调用的是 Web 接口,说是定时任务,其实只是登记了要调用的远端接口、通讯协议、Crontab 时间格式表达式、执行机器组、超时时间、报警接收人等而已。全都是远端 WebService。由 JobCenter 按时通知对端的接口,并接收任务执行者的进度反馈和最终执行结果,这些响应均为 JSON 格式。还可以为同一个定时任务添加多个执行机器,JobCenter 保证通知成功。
优点:
可以指定定时任务的 Worker 集群,并指定执行策略,如随机选取一台机器执行,如第一台执行;
可以指定通知策略:保证执行成功,只通知一次;
可以设置超时警告时间;
并可以进一步设置警告接收人(短信和邮件),如下图所示:
任务失败会发邮件给警告接收人;
调度方便
集中查看所有定时任务的执行总况,如下图所示:
观察方便
按定时任务查看它的上次执行时间、耗时、是否超时、执行结果和通知结果。如下图所示:
JobCenter 的通知保证机制:
通知保证机制有以下3种:
只通知一次
保证成功
保证成功(任务不在执行中)
特别对 “保证成功(任务不在执行中)” 作以下说明:
当一个任务到了这一轮的通知时间,jobcenter 会去检查这个任务之前的执行,是否还在执行中(如正在执行,客户端未返回)。如果有,则本次执行直接失败,不通知。
转载于:https://blog.51cto.com/dlyss/1663585