我们假设有些固定的一个月一次的cron job,一些一周一次的cron job,一些几个小时一次的cron job,假设每一个起始的日期不一样。我们是怎样设计比较好?
是每个service 一直占着资源跑,还是放在类似kafka的里面,定期扫job跑?
有可能是task escalation,定期提醒一下下一步操作
直接用 Linux 自带的 Cron Job 就可以了。写一个 Cron job config 就可以了。原理可以看这个。
那么用户提交了一个request,要求五天后执行,第二个request要求30天后执行。等等, 这样的话我们是用kafka去做decouple,然后async worker就去写cronjob。是这个意思吗?然后这个cronjob就加到cron.config的list里面去。那么是这个async worker里执行,还是放在其他机器执行?这个async worker执行了这个任务后就继续去接其他活,然后就让config 一直累积直到达到上限吗? 然后这种failure recovery就通过log来recover?
你这里提的需求更近了一步,你要求的是可以让用户自己去灵活配置 CronJob 的运行(即使是不会写代码的人也能用)。我听上去,另外还有要求是要 Scale Up,需要多台机器配合处理。这样就复杂一点了。
你要的不只是 CronJob 了,而是 workflow management system / task scheduler, 比如 Apache Airflow。
你可以看一下下面的帖子。