首页 公告 项目 RSS

说一说我的定时任务管理

May 10, 2022 本文有 753 个字 需要花费 2 分钟阅读

简介

当家中有一个小服务器的时候,那就必然需要执行一些定时任务

操作

  1. cronjob

最开始我的定时任务应该和大家一样就是用cronjob,但是cronjob并不能很直观的展示每次定时任务执行的情况,而且实现定时任务执行失败之后告警也有点小复杂,

  1. 定时任务管理工具

所以,我就用上了定时任务管理工具

刚开始使用的是xxl-job,这个也是使用最多的,简单,方便,缺点是java写的,内存占用对于小服务器来说其实有点多,毕竟我们只想实现定时任务的效果,相同的产品还有powerjob

  1. awx

之后使用的是awx,基于ansible,所有的配置都可以使用git去做管理,定时备份个mysql,或者执行脚本都没啥问题,缺点是你要知道怎么使用ansible,而且为了定时任务,去单独搭建一个这个东西并不是我想要的

  1. kubernetes cronjob

再然后我使用的是kubernetes的cronjob去执行定时任务,没错,越来越高级了,但是每一次执行定时任务的时候都要启动一个pods,当你的定时任务脚本要修改的时候你修改的地方也是比较多的。更关键的是我的k8s搭建在了树莓派上,所以为了尽可能延长我的u盘使用时间,我决定还是不使用这个了

  1. drone ci

最后的最后,我发现,使用ci工具去定时运行定时任务是最好的,首先,你可以多启动介个runner去并发跑你的定时任务,其次你的所有定时任务相关的脚本都是使用git去托管的,你可以方便的回滚

还有每一次定时任务运行都是有日志的,可以方便的查看,失败之后也可以完美的告警,同时,你可以很方便的修改验证你的定时任务脚本。更关键的是我的所有代码的编译,博客的发布都是使用drone ci的,对于我来说也不用去额外增加新的资源。

除了你要知道ci的相关知识,门槛有那么一点点高以外。其他的我觉得没啥特别大的缺点。

欢迎关注我的博客www.bboy.app

Have Fun