我正在构建一个依赖于预定作业的 Heroku 应用程序。我们之前使用的是 Heroku 调度器,但时钟进程似乎更加灵活和健壮。所以现在我们使用时钟进程在特定时间/间隔将后台作业排入队列。
Heroku 的文档提到,与所有测功机一样,时钟测功机每天至少重新启动一次——这会导致时钟进程跳过预定作业的风险:“由于测功机每天至少重新启动一次,因此需要一些逻辑在时钟进程启动时存在,以确保在测功机重新启动期间不会跳过作业间隔。” (见https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes)
有哪些推荐的方法可以确保不跳过预定的作业,并重新排队错过的任何作业?
一种可能的方法是在作业运行/排队时创建数据库记录,并在时钟作业中定期检查预期记录的存在。最大的缺点是,如果时钟测功机存在系统性问题,导致它在很长一段时间内停机,那么我不能每 X 小时进行一次轮询以确保计划的作业成功运行,因为该轮询发生在时钟测功机内。
您是如何处理时钟测功机弹性问题的?
谢谢!