一个著名的任务调度系统是怎么设计的?

这篇博客讲述了实习生张大胖如何通过解决电商系统内存溢出问题,接触并设计一个任务调度系统的过程。从Linux的crontab到自研的"大胖定时任务调度系统",再到应对高可用需求的"Quartz",张大胖经历了从简单定时到复杂任务调度的挑战,最终开发出一款广泛应用的开源任务调度框架。
摘要由CSDN通过智能技术生成

实习生张大胖

 

这是个代码写得很烂的电商系统,只要运行一段时间,服务器就会出现Out Of Memory。

 

别人都忙得四脚朝天,于是实习生张大胖被抓了壮丁去研究为什么会出现OOM。

 

刚入行的张大胖技术水平一般,“装模作样”地看代码,研究日志,请教老员工,一个星期过去了,还是一无所获。

 

周一例行的项目会议上, 大家似乎要看张大胖的笑话了,没想到他却提了一个歪招:“这个OOM问题非常复杂,一时半会儿也解决不了,要不我们定时重启服务器怎么样?”

 

一脸严肃的项目经理老梁点点头:“以目前的情况看,也只能如此了。但是不能让服务中断,这样吧,公司有两台服务器,一台在凌晨1点重启, 另外一台在凌晨2点重启。”

 

得到了领导的首肯,张大胖赶紧行动,周末他其实已经做了准备,研究了Linux上的crontab,它的格式是这样样子:

 

 

每天凌晨一点重启系统,可以这么写:

0 1 * * *  restart.sh

 

(注:这里只是个简单的例子, 实际上crontab及其灵活)

 

这个OOM的问题被张大胖灵机一动给解决了,或者说,被临时隐藏了。

 

crontab达人的烦恼

 

大家知道张大胖擅长crontab, 都把一些定时的任务扔给他去做: 什么定时统计报表,定时同步数据,定时删除表中的无效订单...... 等等。

 

张大胖整天面对的就是crontab和脚本,都快要吐了。

 

不仅如此,同事们还经常提出一些“变态”的需求:

“大胖,那个定时任务运行得怎么样了?”

“大胖,我想把那个定时任务给停掉。”

“大胖,那个定时任务今晚别运行啊!”

“......”

 

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值