后台任务处理与调度
后台任务 是由系统在后台完成的工作,例如定期生成报表、到期检查未付款订单,或在用户上传视频后进行转码。用户可以先收到提交结果,之后再查看处理进度;有些任务由系统自动产生,不需要用户发起请求。
后台任务处理与调度,就是管理这些工作的 产生、等待、执行和结果。它既要决定什么时候处理,也要在失败或服务重启后,知道哪些工作需要继续。
调度与处理分别做什么
- 调度:决定任务什么时候可以开始。例如每天凌晨执行,或等到订单创建 30 分钟后再检查。
- 处理:执行具体业务动作。例如计算报表、判断订单是否仍未付款、调用视频转码服务。
任务通常还会 保存状态,用来查询进度、安排重试和恢复中断的工作。调度器、执行器和任务存储可以属于同一个应用,规模扩大后也可以拆开部署。
通常怎样触发
| 类型 | 含义 | 简单例子 |
|---|---|---|
| 周期任务 | 按固定周期重复执行 | 每天凌晨生成销售日报 |
| 延迟任务 | 等待一段时间或指定时刻后执行 | 下单 30 分钟后检查是否需要关闭 |
| 事件驱动任务 | 业务发生变化后触发 | 视频上传完成后开始转码 |
异步 描述的是 执行方式:请求不必一直等待后台工作完成。它可以与上面几种触发方式配合,并不只指某一种任务。
一次任务大致怎样完成
系统先保存要做的工作,等待执行条件满足,再由工作进程(Worker)领取、检查当前业务状态、执行并记录结果。失败后,根据原因决定重试或转人工处置。
例如,订单检查任务到期,只表示该检查可以开始;如果用户已经付款,就应跳过关闭。任务入队也只表示进入等待处理的环节,不能当成业务已经完成。
这些任务可以用 任务定义、调度计划、执行实例、执行尝试 的模型描述,其中调度计划用于按时间规则生成实例。关系图、状态图和协作时序见任务模型与执行流程。简单系统可以从任务表和后台进程开始,再按时效、任务量和恢复要求选择队列或调度平台。
专题内容
| 内容 | 说明 |
|---|---|
| 任务模型与执行流程 | 通用模型、图示、状态与组件分工 |
| 周期任务与定时轮询 | 定期执行、到期扫描与错过执行后的补跑 |
| 延迟任务与到期处理 | 等待到期、改期与旧任务处理 |
| 事件驱动与异步任务 | 业务变化如何可靠接续后台工作 |
| 幂等、重试与故障恢复 | 重复执行、超时与部分成功 |
| 数据库任务队列 | 任务领取、完成确认与超时回收 |
| 监控、积压与故障排查 | 判断任务是否及时完成,定位积压与失败 |
| 实际业务分析 | 订单、会员、预约等十类场景,从需求到实现 |
业务案例中进一步讨论批量对象、并发处理、通知与恢复,并结合国内厂商公开实践分析取舍。