我正在构建一个需要每分钟运行数百个短期运行任务的应用程序。这些功能除了对HTTP端点进行调用外,没有做任何其他特别的事情。我需要一种可靠的机制来无限期地调度这些调用。不能按计划运行失败。我已经考虑过调度程序的以下选项:
显然,在成本,可维护性(我将不时需要一次更新这些功能的逻辑)和可靠性之间进行权衡。
我的问题是,如果我最担心一致性/可靠性,那么哪个选项最合适?是否有我应该考虑的遗漏选项?
答案 0 :(得分:1)
正如您已经提到的,有多种技术可以帮助您做到这一点,我想说,诀窍还在于找到要使用的逻辑流程/模型。
例如,如果任务数量不固定,则可以应用发布/订阅模式,为此,可以使用RabbitMQ或AWS SQS之类的东西。
关于如何将任务提交到队列以及如何出队的方法有多种,您可以让多个工作人员读取/等待事件,以便他们可以逐个或逐个读取事件(基于数量)每台服务器的内核数),这一切都取决于您想要的速度和精度。
我想说扩展比较容易,因为如果需要更快的速度(每分钟精确执行所有任务),只需增加更多的工人。
有关更多想法,请查看本文Using AWS Lambda with Amazon DynamoDB,其中涵盖了基于流的模型/事件源。