gpt4 book ai didi

web-applications - Web应用程序体系结构-需要作业/任务队列吗?

转载 作者:行者123 更新时间:2023-12-04 03:54:30 25 4
gpt4 key购买 nike

我目前正在设计一个Web应用程序,该应用程序将允许用户计划将针对HTTP API(代表它们)执行的任务。这些任务可以重复执行,并且可用于计划的最短时间分辨率为一分钟。由于任务的性质,我认为异步执行它们是有意义的。但是,这部分的架构应该是什么样的?

我考虑过使用任务队列通过Web应用程序创建任务,并让它们由工作人员执行。在这种情况下,我有几个问题:

  • 如何处理重复任务?
  • 如何轻松保存任务结果?
  • 是否容易使队列“持久”?
  • 工作人员应该直接与数据库进行交互吗?
  • 我应该手动将重复任务排队吗?

  • 我还能考虑什么?既然我不是唯一想到这种Web应用程序体系结构的人,那么有没有“最佳实践”?任务队列是要走的路吗?

    最佳答案

    是的,这是一种众所周知的模式,用于在Web应用程序的后端处理长期存在的任务。根据您的语言和应用程序框架,有许多队列实现-例如ResqueBeanstalkdActiveMQ,或者如果您对性能的要求不高,则可以将数据库表用作一种队列。

    基本思想是您的Web应用程序将作业放入具有足够内容的队列中,以使作业能够继续进行。后台的一组工作进程(理想情况下独立于Web应用程序运行)从队列中读取作业并执行它们。可以将结果写回到答复队列中,也可以写到数据库中。这取决于您希望如何将结果显示给用户。对于Web应用程序,将结果写入数据库可能更有意义。

    根据您的队列处理程序,它们可以使作业持久化。例如。 ActiveMQ支持持久消息传递,以便在发生故障时恢复队列中的消息。

    您问有关重复性工作的问题-我认为答案取决于何时需要重复发生。

    直线消息队列将在 worker 可用时立即处理/释放消息。因此,调度是棘手的或不可能的。为了支持计划的作业(包括在给定时间或经过一段时间后重复出现的作业),您可能应该考虑将数据库表用作具有“开始时间”属性的简单队列。

    我最近描述了类似的模式here

    关于web-applications - Web应用程序体系结构-需要作业/任务队列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5840777/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com