分布式定时任务

来源:互联网 发布:java接口测试代码 编辑:程序博客网 时间:2024/05/16 07:23

一:业务场景

  1. 定时爬虫,每隔半小时或一小时爬取数据.
  2. 每日凌晨写入数据仓库.
  3. 定时检查系统环境.
    平时工作中,经常会有一些需要固定时间的操作,一般我们会写定时脚本放在服务器上跑。

二:解决方案

1.timer定时
可以利用语言自带函数来实现延时任务。或是加入队列中。
2.linux 的crontab。
利用Linux的系统定时任务来跑一些固定时间的脚本。
3.分布式定时任务框架,如TBSchedule。

一些简单的脚本,通过crontab就可以操作,但缺点也是显而易见的,非分布式,容易发生单点故障,也缺乏报警机制,但是使用quartz这些略显笨重。

昨天听了微博话题架构师的分享,他推荐了elastic-job这个分布式定时任务框架,非常灵活,支持弹性扩容和容灾,并且提供了非常友好的集中管理方式。同时,他分享了自己开发的PHPSchedule系统,基于crontab实现,十分轻量级,只是还未开源使用。
他还提供了一种利用crontab实现很简单的避免系统宕机影响定时任务的方法,将脚本部署在两台服务器,

交替运行法:
• 单小时A服务器
• 双小时B服务器
这样在出现故障时候,脚本会自动降级为两小时一次,不会直接死掉。

有了这个思路,有空可以撸一个管理crontab的工具,加上(自动重试、故障报警、分布式执行、良好的管理界面)就可以了。

原创粉丝点击