加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

Web应用程序 – Web应用程序架构 – 需要作业/任务队列吗?

发布时间:2020-12-14 16:42:58 所属栏目:资源 来源:网络整理
导读:我目前正在设计一个Web应用程序,允许用户安排将针对HTTP API(代表他们)执行的任务.任务可以重复进行,可用于调度的最小时间分辨率为一分钟.由于任务的性质,我认为以异步方式执行它们是有意义的.但是,这部分的架构应该如何? 我想过使用任务队列来创建Web应用
我目前正在设计一个Web应用程序,允许用户安排将针对HTTP API(代表他们)执行的任务.任务可以重复进行,可用于调度的最小时间分辨率为一分钟.由于任务的性质,我认为以异步方式执行它们是有意义的.但是,这部分的架构应该如何?

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

>我如何处理重复性任务?
>如何轻松保存任务结果?
>是否可以轻松地使队列“持久”?
>工人应该直接与数据库交互吗?
>我应该手动排队重复执行的任务吗?

我还能考虑什么?既然我认为我不是唯一考虑过这种Web应用程序架构的人,那么有没有“最佳实践”?是一个任务队列的方式去?

解决方法

是的,这是一个众所周知的模式,用于处理Web应用程序后端的长期任务.根据您的语言和应用程序框架,有许多队列实现 – 例如 Resque或 Beanstalkd或 ActiveMQ或者如果您的性能要求不高,您可以使用数据库表作为一种队列.

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

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

你问的是经常性的工作 – 我认为答案取决于他们何时需要重复工作.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读