Skip to content

后台任务处理与调度 ​

后台任务 是由系统在后台完成的工作,例如定期生成报表、到期检查未付款订单,或在用户上传视频后进行转码。用户可以先收到提交结果,之后再查看处理进度;有些任务由系统自动产生,不需要用户发起请求。

后台任务处理与调度,就是管理这些工作的 产生、等待、执行和结果。它既要决定什么时候处理,也要在失败或服务重启后,知道哪些工作需要继续。

调度与处理分别做什么 ​

  • 调度:决定任务什么时候可以开始。例如每天凌晨执行,或等到订单创建 30 分钟后再检查。
  • 处理:执行具体业务动作。例如计算报表、判断订单是否仍未付款、调用视频转码服务。

任务通常还会 保存状态,用来查询进度、安排重试和恢复中断的工作。调度器、执行器和任务存储可以属于同一个应用,规模扩大后也可以拆开部署。

通常怎样触发 ​

类型含义简单例子
周期任务按固定周期重复执行每天凌晨生成销售日报
延迟任务等待一段时间或指定时刻后执行下单 30 分钟后检查是否需要关闭
事件驱动任务业务发生变化后触发视频上传完成后开始转码

异步 描述的是 执行方式:请求不必一直等待后台工作完成。它可以与上面几种触发方式配合,并不只指某一种任务。

一次任务大致怎样完成 ​

系统先保存要做的工作,等待执行条件满足,再由工作进程(Worker)领取、检查当前业务状态、执行并记录结果。失败后,根据原因决定重试或转人工处置。

例如,订单检查任务到期,只表示该检查可以开始;如果用户已经付款,就应跳过关闭。任务入队也只表示进入等待处理的环节,不能当成业务已经完成。

这些任务可以用 任务定义、调度计划、执行实例、执行尝试 的模型描述,其中调度计划用于按时间规则生成实例。关系图、状态图和协作时序见任务模型与执行流程。简单系统可以从任务表和后台进程开始,再按时效、任务量和恢复要求选择队列或调度平台。

专题内容 ​

内容说明
任务模型与执行流程通用模型、图示、状态与组件分工
周期任务与定时轮询定期执行、到期扫描与错过执行后的补跑
延迟任务与到期处理等待到期、改期与旧任务处理
事件驱动与异步任务业务变化如何可靠接续后台工作
幂等、重试与故障恢复重复执行、超时与部分成功
数据库任务队列任务领取、完成确认与超时回收
监控、积压与故障排查判断任务是否及时完成,定位积压与失败
实际业务分析订单、会员、预约等十类场景,从需求到实现

业务案例中进一步讨论批量对象、并发处理、通知与恢复,并结合国内厂商公开实践分析取舍。