linux的运维者,逃脱不了定时任务的命题,最常用和快捷简单的是crontab,在少量机器的情况下,crontab效率还是比较高和比较便捷。但当机器越多、应用越多的情况下,继续使用crontab进行定时任务的管理配置,那严重影响工作效率。
机器多、服务多的情况下,就会遇到以下问题:
1.不知道哪个定时任务没配置好,瞎跑;
2.运维人员需要登录服务进行配置和管理;
3.运维人员需要全场参与到定时任务的生命周期;
4.定时任务运行异常告警难以统一对接;
5. 任务A和任务B如果存在互斥关系,crontab就很难进行互斥处理;
6.难于信息管理;运维管理者可能都不知道线上跑了多个定时任务,每个定时任务什么时候运行,属于哪个应用和哪个开发负责。
基于这些问题,我们就决定做一个定时任务管理系统。
当我们做完这个系统的时候,在某次运维大会上,发现暴风也存在这样的系统,有兴趣大家可以猛戳http://chuansong.me/n/1940814
实现目标:
1. 信息化管理;
2.开发同事自助管理,无需运维同事进行介入;
3.系统需要有分布式功能和冗余功能,提供高并发和冗灾能力;
4.具有定时任务的执行数据图表;
5.支持运行失败告警,同时支持多种类告警(微信、邮件、公司IM通信工具);
6.与crontab的时间格式需一致,满足现用户使用习惯。
7.引入审核流程,开发pm需要审核非pm开发创建的定时任务。
8.远程应用本地程序运行,需要支持用户自上传定时任务代码包。
9.进行安全性检测,执行权限、代码包风险性检查、危险行为检查等。
定时任务对象:
1.web接口模式,该模式只需要进行web调用就能进行定时任务的调动;
2.本地运行模式,有些定时任务需要运行到应用本地,以脚本(shell python java等等)形式存在。
效果:

定时任务列表

自助配置页

定时任务类型:调用接口(web api调用);调用脚本(远程脚本的运行)
依赖任务:本任务运行是否依赖其它任务,如果选择,本任务则需要在依赖任务运行完后才能运行,如果超出本次运行开始时间则本次不执行。
告警:可以设置检测到关键字才进行告警。
调用脚本:用户选择该相则同时需要上传代码包。
执行结果列表:

单次执行结果:

整个任务执行数据统计

整体架构

1.用户web把定时任务信息写入数据库中;
2.主控端读取db中定时任务信息,并进行相应封装;
3.主控把对应的任务发送到不同的消息队列中(接口:web api调用;远程本地:应用服务器中的常驻内存进程每分钟进行队列查询 );
4.web:http调用;远程:常驻内存程序每分钟进行队列查询,如果存在本应用定时任务则执行。(队列进行了相关分布式封装)
6.结果写入结果队列(5忘记写了);
7.主控端读取结果队列数据;
8.主控端进行结果写入。
主控端逻辑

队列后端的数据流

队列:选用httpsqs;
nginx:进行分布式任务分派,使得httpsqs冗余和协同工作。
总结:
1.系统上存在1k+个定时任务配置。
2.运行了两年,不怎么需要人力维护,也和之前提到代码更新系统一样处于放养状态。
3.运维同事已经基本不用介入定时任务的生命周期中,开发同事自助。
4.能快速统计定时任务相关信息,例如:某某12调整,只需一点就能查询到12点运行的定时任务有哪些。
5.定时任务信息化、实时告警化,相关任务能实时掌握到定时任务的异常情况。

更多内容请关注:微信订阅号,轻量运维

效率篇-定时任务管理系统,替代crontab相关推荐

  1. gocron - 定时任务管理系统

    from:https://github.com/ouqiang/gocron gocron - 定时任务管理系统 项目简介 使用Go语言开发的定时任务集中调度和管理系统, 用于替代Linux-cron ...

  2. 运维36讲第07课:基于 Django_crontab、Xadmin 做一套定时任务管理系统

    本课时介绍一个定时任务系统 Jcrontab,它用 Python3研发,并用到 Django_crontab 和 Xadmin 等模块. 我们知道在 Linux 环境下,crontab 是一个周期性的 ...

  3. VSCode中值得推荐的常用的33个高效前端插件「效率篇」(二)

    VSCode 是我们前端开发的一个强大的IDE,所以选择趁手好用的插件是提高开发效率,然后剩下的时间用来摸鱼是很有必要滴.​​​​​​​ 效率篇(33) Path Intellisense Path ...

  4. 基于quartz实现定时任务管理系统

    基于quartz实现定时任务管理系统 背景 说起定时任务框架,首先想到的是Quartz.这是定时任务的老牌框架了,它的优缺点都很明显.借助PowerJob 的readme文档的内容简单带过一下这部分. ...

  5. 小白成长之路-linux定时任务cron和crontab

    Linux定时任务 一.为啥要学习定时任务 在我们现实生活中处处可以用到定时任务. 如: 亲爱的,2020年4月1号会上映一部动画片电影我们去看看啊. 明天上午老师要看论文了 我作业还没写,明天早上上 ...

  6. 吴军硅谷来信-工作效率篇+职业发展

    吴军的硅谷来信工作效率篇 不做伪工作者 问题 每天要做的事太多,总是忙不过来, 而且还因此而产生焦虑 互联网是一个迭代的过程,新问题不断的涌现,不存在清空列队的可能性 观点 不应该追求完成了百分之几/ ...

  7. 我在用的mac软件(3)-效率篇

    距离上篇博客竟然一晃就2个月过去了--最近确实太忙了,但一忙其实就容易乱,反而积累就少. 今天继续介绍下我在用的mac软件.标题为效率篇,其实没有严格的限定,就是杂乱的介绍我在用的感觉能提升效率的工具 ...

  8. 11 【实操篇-定时任务 软件安装 克隆虚拟机】

    19.crontab 系统定时任务 在实际工作中,系统的定时任务一般是需要重复执行的,这就需要使用 crontab 命令来执行循环定时任务. 每个用户都可以实现自己的 crontab 定时任务,只需使 ...

  9. asp python 定时任务_Ubuntu使用crontab定时执行python脚本

    转载其他博主的博客,记录过程,及使用中的一些问题 有时会遇到需要在linux的主机上定时的执行某个python脚本来处理事情的需求,这时可以考虑使用crontab来实现. 关于crontab的介绍,参 ...

  10. Golang:gocron定时任务管理系统的安装与使用

    简介 gocron是一个使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab 文档 https://github.com/ouqiang/gocron 目录 1.下 ...

最新文章

  1. Docker 用法总结之:管理工具 shipyard 的具体使用指南
  2. JAVA IO - RandomAccessFile Seek学习
  3. C/C++ 位操作 总结
  4. tensorflow-计算图
  5. Kuroni and Impossible Calculation CodeForces - 1305C(鸽巢原理)
  6. java importgeopoint_Java GeoPoint.project方法代碼示例
  7. Latex中关于参考文献的一些经验
  8. mongodb C++ Driver安装
  9. linux切换英文界面,linux英文界面下使用中文输入法
  10. 190524每日一句
  11. VCC、VDD、VSS、GND分别代表什么呢?
  12. SQLyog数据库导出
  13. Java学习分享---【面向对象基础】抽象
  14. 《GAMES203:三维重建和理解》1 三维视觉(3D Vision)介绍
  15. Win10系统无法使用VGAPlayer软件播放asf格式和VGA文件
  16. C语言用数组模拟实现栈(LIFO)
  17. 三菱FX系列PLC备份电池电压低报警的处理方法
  18. Qt Design Studio安装教程
  19. 旋转矩阵、欧拉角、四元数理论及其转换关系
  20. Centos初学者需要会的几种命令(2)

热门文章

  1. ubuntu18.04安装opencv记录
  2. WPS新建文字分享微信.docx形式_这 3 个实用的文档「分享」技巧,很多人都不会用...
  3. Pascal voc 数据集xml格式解析
  4. 《数据库系统工程师》备考指南
  5. 计算机英语200心得体会,学英语的心得体会作文200字作文:学习英语的感受的英语作文(100~120词)...
  6. Linux基础学习笔记(持续更新)
  7. PDF Expert for Mac最新2020注册码激活版下载
  8. Javase 第五次作业智商题
  9. 用Python抓取漫画并制作mobi格式电子书
  10. 数据结构总结与知识网图