Noapes' blog

Stay hungry, Stay foolish

任务队列


Origin Url: Task Queues

任务队列概述

任务队列是管理后台工作任务的,这些任务必须是在http请求相应周期外执行的。

为什么任务队列是必要的?

因为任务并不是http请求发起的,同时也因为他们是需要长时间执行的工作,往往会显著的影响http相应效率, 所以任务是异步处理的。

举个例子,一个web应用会每隔十分钟去轮询GitHub API来收集关注排名前100的仓库。 任务队列将处理调用代码来请求GitHub API, 处理请求结果,将处理好的结果保存一个持久化数据以供后续使用。

另外一个例子是,在一个http请求相应http周期里,一次数据库查询可能会会花费很长时间。该查询可以以一个固定的时间间隔运行在后台,然后将结果存储在数据库。 当一个请求需要这些结果时,可以很方便的获得预先计算的结果,而不是再执行一个耗时较长的查询。这个预先计算的场景是任务队列启用缓存的一种形式。

以下是任务队列其他类型的作业

  • 将大数据插入打散成小数据插入,而不是一次性大量插入
  • 定期执行,比如15分钟,聚合数据
  • 计划执行周期行任务,比如批处理

任务对类项开源项目