专栏首页一日一工具运维自动化基础建设|分布式任务调度平台

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

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

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

分布式调度平台

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

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

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

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

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

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

其他自研二开

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

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

TIPS

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

使用flock

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

* * * * * flock -xn /tmp/zhuima.lock -c 'uptime'

按日输出任务日志

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

* * * * * uptime >> "/tmp/zhuima_job_uptime.log" 2>&1

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

* * * * * 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

本文分享自微信公众号 - 追马Linux(zhuima_k8s),作者:追马是我

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 针对网站可用性检测工具uptime改造并支持Docker

    针对中小型公司,如果没有自己的运维开发或者不想花钱购买域名、关键URL监控工具,此工具可以满足百分之八十的url监控场景需求

    追马
  • 一日一工具| ssh_scan

    ssh_sacn 是ruby语言编写的服务器ssh配置信息扫描工具,初一看这个软件的介绍,当时想着肯定是用python写的,不曾想竟然用的是ruby

    追马
  • 从零打造自己的CI/CD系统|php项目部署v3版本

    •命令行传递参数过多,稍不注意就可能会出错,而且只能是ops才能操作,不能交付给开发自助发布•本地执行和远程执行在同一个roles里,整体不是很完美•服务么有重...

    追马
  • 互联网+时代,企业转型的“两个身份”难题

    对于传统企业来说,突破原有垂直商业模式的发展逻辑,通过互联网工具打造行业平台,是一块诱人的蛋糕。因此,许多企业在平台商业模式上做着积极的探索。

    博文视点Broadview
  • Quartz之CronTrigger

    上篇博文简单的介绍了Quartz的基本使用,现在介绍一下最常用的触发器:CronTrigger。

    栋先生
  • 孟德尔随机化之遗传学概述

    许多生物的遗传信息(或基因组)由长长的一串遗传密码组成,这些遗传密码以DNA(脱氧核糖核酸)的形式存在,DNA是编码生命的分子,被包装成染色体。人类有23对染色...

    生信与临床
  • win10安装Linux子系统

    开启开发者模式 系统设置 -> 更新和安全 -> 针对开发人员 -> 选择开发人员模式 ? image.png 启动 Windows 10 的 Linux 子系...

    听城
  • 全球第二大浏览器升级!内存/CPU占用暴降

    11月20日早间,伴随着Chrome 87正式版上线,微软也发布了Edge 87稳定版。

    良月柒
  • Gartner 预测:2017年全球CRM软件市场份额将达到365亿美元

    T客汇官网:tikehui.com 编译:杨丽 ? CRM软件购买商往往认为选择行业领袖是最佳选择。CRM供应商则通过市场份额占有数字来争夺市场领导地位,从而获...

    人称T客
  • 并发知识6

    javase8 为散列映射提供批操作,即使有其他线程在处理映射,这些操作也能安全的执行。 批操作会遍历映射, 处理遍历过程中找到的元素

    用户2436820

扫码关注云+社区

领取腾讯云代金券