第 11 章:批处理和任务
本章系统梳理了云原生环境下的批处理、任务调度、Spring Batch、Spring Cloud Task 及工作流引擎的核心模式与实践,帮助开发者构建高效、可扩展的数据处理与自动化任务系统。
批处理和任务的云原生挑战
云环境带来弹性和规模优势,使批处理和任务型工作负载能够高效并行化。批处理适合处理大数据集、顺序数据和窗口化场景,支持分块(chunk)处理,提升资源利用率和吞吐量。对于串行或部分并行的任务,云平台同样能提供弹性扩展能力。
Spring Batch 概述
Spring Batch 是 JVM 领域的标准批处理框架,支持日志、事务、作业重启、跳过与重试等能力。核心概念包括 Job、Step、ItemReader、ItemProcessor、ItemWriter。每个 Job 可包含多个 Step,Step 可串行或并发执行,支持条件、循环、分支等控制流。

Spring Batch 作业结构与示例
典型批处理作业包含清理、数据导入、数据分析等步骤。每个 Step 可配置 Tasklet(通用回调)或基于 ItemReader/Processor/Writer 的分块处理。
@Configuration
class BatchConfiguration {
@Bean
Job etl(JobBuilderFactory jbf, StepBuilderFactory sbf, Step1Configuration step1, Step2Configuration step2, Step3Configuration step3) {
Step setup = sbf.get("clean-contact-table").tasklet(step1.tasklet(null)).build();
Step s2 = sbf.get("file-db")
.<Person, Person>chunk(1000)
.faultTolerant()
.skip(InvalidEmailException.class)
.retry(HttpStatusCodeException.class)
.retryLimit(2)
.reader(step2.fileReader(null))
.processor(step2.emailValidatingProcessor(null))
.writer(step2.jdbcWriter(null))
.build();
Step s3 = sbf.get("db-file")
.<Map<Integer, Integer>, Map<Integer, Integer>>chunk(100)
.reader(step3.jdbcReader(null))
.writer(step3.fileWriter(null))
.build();
return jbf.get("etl").incrementer(new RunIdIncrementer())
.start(setup)
.next(s2)
.next(s3)
.build();
}
}
- 支持跳过与重试策略,提升容错性
- 支持参数化与元数据表,便于作业重启与监控
典型批处理步骤与配置
- Tasklet 步骤:如清理表数据
- ItemReader/Processor/Writer 步骤:如从 CSV 文件读取、校验、写入数据库
- 分析步骤:如统计分析后写入输出文件
代码示例可用伪代码或文字描述,避免冗长。
批处理作业调度与并发
- 支持通过 TaskExecutor 并发处理
- 支持通过 @Scheduled、Quartz、分布式锁等方式调度作业
- 需关注作业幂等性与分布式一致性
远程分区与分块
Spring Batch 支持远程分区(remote partitioning)和远程分块(remote chunking):
- 远程分区:Leader 节点分配数据区间,Worker 节点独立读取/处理/写入
- 远程分块:Leader 读取数据,Worker 处理,Leader 汇总写入
通过消息中间件(如 RabbitMQ、Kafka)实现节点间通信,提升弹性与扩展性。
Spring Cloud Task 简介
Spring Cloud Task 提供任务生命周期管理,适合一次性、短暂或长时间运行的进程。支持参数化、状态跟踪、与 Spring Batch 集成。典型用法:
@EnableTask
@SpringBootApplication
public class HelloTask {
@Bean
CommandLineRunner runAndExplore(TaskExplorer taskExplorer) {
return args -> {
// 任务逻辑
// 查询任务执行状态
};
}
}
工作流引擎与业务流程自动化
工作流系统(如 Activiti、Flowable)适合建模复杂业务流程,支持自动与人工任务、状态机、流程变量、补偿机制等。BPMN 2.0 标准广泛应用于流程建模。

- 支持流程定义、实例化、任务分配、状态查询
- 可与 Spring Boot 自动集成,支持 REST API 驱动流程
分布式批处理与工作流的云原生实践
- 通过消息中间件实现批处理作业和工作流的分布式调度
- 支持 Leader/Worker 模式,弹性扩展处理能力
- 支持流程暂停、恢复、补偿,提升业务可靠性
总结
本章系统梳理了云原生环境下的批处理、任务调度、Spring Batch、Spring Cloud Task 及工作流引擎的核心模式与实践。通过合理设计批处理与任务系统,结合消息中间件和工作流引擎,开发者可实现高效、弹性、可观测的数据处理与自动化任务能力,支撑复杂业务场景与大规模数据处理需求。