前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >运维自动化基础建设|分布式任务调度平台

运维自动化基础建设|分布式任务调度平台

作者头像
追马
发布2020-07-03 10:00:09
8570
发布2020-07-03 10:00:09
举报
文章被收录于专栏:一日一工具

运维自动化基础建设|分布式任务调度平台

不晓得你是否经历过手动配置crontab的经历,不知道你是否有过主机挂掉,crontab也丢失的情况,不知道你是否经历过crontab未执行成功却没有收到任何告警信息的情况,接下来我们来聊聊分布式调度平台。

分布式调度平台

为什么强调是分布式调度平台,系统原生的crontab配置是单机的,如果机器挂掉,那机器上的任务自然而然的就不会再运行,如果是重要业务,那影响还是蛮大的。使用原生的crontab, 也有可能你也经历过如下的几个问题:

•主机挂掉,任务没有跑成功,也就是没有高可用•任务没有跑成功,但是没有收到任何告警通知•间隔时间较短,而且任务比较耗时的情况下,上一个任务没结束,下一个任务就会启动,导致系统资源消耗严重•不清楚当前总共有多少任务再跑,成功率,失败率等等统统不清楚。•秒级别任务的定义(其实也能实现,就是有点黑魔法)•历史遗留的没有注释的任务,不清楚是其用途•因为机器上跑了很多任务导致机器性能下降,进一步导致业务性能受损

上述几个问题随便那个拎出来都是一个线上故障,那么我们该如何避免这种问题呢,我个人认为主要分几点吧:

•选型的时候不要局限于当前场景,保不齐过一阵子公司架构改变,难不成要从头再来•积极参与并把自己真实踩过的坑的经验提出来供大家参考•不要闭门造车,在业务量级很小的情况下的时候,虽然开源软件并不一定能满足需求•不能因为跑任务而影响业务(这个我相信),拆分 VS 资源控制?

当前主流的可供选型的方案

QuartzXXL-JOB•相对来说当前使用比较广泛,很多公司都是基于这个的基础上二开的•Elastic-JobSIA-TASKCloudtaskRundeck•我个人比较喜欢的一个平台,功能不局限于任务调度,还能结合Jenkins, Ansible实现自动化运维,感兴趣的小伙伴可以看看

其他自研二开

我们该如何选型(不局限于以下所罗列)

•完善的健康检测和告警机制•有问题应该及时通知到谁•node有问题的情况下应该如何实现自动切换•完善的基于角色的权限控制体系•任务的添加维护不能局限于OPS, 需要具备完善的自助添加任务的功能•足够简单•支持多种配置方式•资源耗用可监控,可控制

TIPS

如果真的是需要使用系统原生的crontab,依我个人经验,我有两个小建议

使用flock

flock的原理是采用文件锁实现任务锁定,解决冲突。使用样例:

代码语言:javascript
复制
* * * * * flock -xn /tmp/zhuima.lock -c 'uptime'

按日输出任务日志

多数情况下你会看到很多crontab为了跟踪历史信息会打日志,但是写的命令都是采用>>追加的方式往文件里输入,如果日志过大的情况下,很难去跟踪历史的信息,例如下面这种:

代码语言:javascript
复制
* * * * * uptime >> "/tmp/zhuima_job_uptime.log" 2>&1

那么如果我想要实现crontab的日志也按天输出,那该如何实现,其实这个并不复杂,使用反单引号轻松即可实现, 如下图所示

代码语言:javascript
复制
* * * * * flock -xn /tmp/zhuima.lock -c "uptime >> "/tmp/zhuima_$(date +"\%Y-\%m-\%d").log"" 2>&1

参考文档

探寻繁杂定时任务的解决方案:分布式任务调度系统[1]

一个轻量级的分布式定时任务调度平台-Cloudtask[2]

这些优秀的国产分布式任务调度系统,你用过几个? [3]

总结

一个平台性的系统,从产品功能到技术架构都存在着方方面面的挑战,需要层层抽象和逐步优化才能完成一个成熟产品落地。在大数据时代,面对海量的数据和用户规模,任何一种架构设计,都面临着网络响应、 容错、幂等、数据可靠性/一致性等诸多问题。

上述描述摘自文档链接[4]

引用链接

[1] 探寻繁杂定时任务的解决方案:分布式任务调度系统: https://juejin.im/post/5ea5a1d36fb9a03c642327d8 [2] 一个轻量级的分布式定时任务调度平台-Cloudtask: https://segmentfault.com/a/1190000013979750 [3] 这些优秀的国产分布式任务调度系统,你用过几个?: https://zhuanlan.zhihu.com/p/26493355 [4] 上述描述摘自文档链接: https://juejin.im/post/5ea5a1d36fb9a03c642327d8

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 链上追马 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运维自动化基础建设|分布式任务调度平台
    • 分布式调度平台
      • 当前主流的可供选型的方案
        • 我们该如何选型(不局限于以下所罗列)
          • TIPS
            • 使用flock
            • 按日输出任务日志
          • 参考文档
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档