每分钟可靠地运行数百个预定功能

时间:2018-08-11 02:01:52

标签: scheduled-tasks scheduler scheduling job-scheduling distributed-system

我正在构建一个需要每分钟运行数百个短期运行任务的应用程序。这些功能除了对HTTP端点进行调用外,没有做任何其他特别的事情。我需要一种可靠的机制来无限期地调度这些调用。不能按计划运行失败。我已经考虑过调度程序的以下选项:

  • AWS Lambda
  • 中层年代记
  • Cron
  • Python Celery

显然,在成本,可维护性(我将不时需要一次更新这些功能的逻辑)和可靠性之间进行权衡。

我的问题是,如果我最担心一致性/可靠性,那么哪个选项最合适?是否有我应该考虑的遗漏选项?

1 个答案:

答案 0 :(得分:1)

正如您已经提到的,有多种技术可以帮助您做到这一点,我想说,诀窍还在于找到要使用的逻辑流程/模型。

例如,如果任务数量不固定,则可以应用发布/订阅模式,为此,可以使用RabbitMQ或AWS SQS之类的东西。

关于如何将任务提交到队列以及如何出队的方法有多种,您可以让多个工作人员读取/等待事件,以便他们可以逐个或逐个读取事件(基于数量)每台服务器的内核数),这一切都取决于您想要的速度和精度。

我想说扩展比较容易,因为如果需要更快的速度(每分钟精确执行所有任务),只需增加更多的工人。

有关更多想法,请查看本文Using AWS Lambda with Amazon DynamoDB,其中涵盖了基于流的模型/事件源。