Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。Spring Batch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使得已经使用 Spring 框架的开发者或者企业更容易访问和利用企业服务。Spring Batch 提供了大量可重用的组件,包括了日志、追踪、事务、任务作业统计、任务重启、跳过、重复、资源管理。对于大数据量和高性能的批处理任务,Spring Batch 同样提供了高级功能和特性来支持,比如分区功能、远程功能。总之,通过 Spring Batch 能够支持简单的、复杂的和大数据量的批处理作业。Spring Batch 是一个批处理应用框架,不是调度框架,但需要和调度框架合作来构建完成的批处理任务。它只关注批处理任务相关的问题,如事务、并发、监控、执行等,并不提供相应的调度功能。如果需要使用调度框架,在商业软件和开源软件中已经有很多优秀的企业级调度框架(如 Quartz、Tivoli、Control-M、Cron 等)可以使用。

简介

Spring Batch是一个批处理的框架,作为一个 Spring 组件,提供了通过使用 Spring 的依赖注入(dependency injection) 来处理批处理的条件。Spring Batch 1.0.0于2008年3月向公众发布,而Spring Batch 2.0.0则在2009年4月发布,显示了该框架的持续发展和改进。

业务场景

周期性的提交批处理

把一个任务并行处理

消息驱动应用分级处理

大规模并行批处理

手工或调度使任务失败之后重新启动

有依赖步骤的顺序执行(使用工作流驱动扩展)

处理时跳过部分记录

成批事务:为小批量的或有的存储过程/脚本的场景使用

技术目标

开发者使用Spring编程模型,编写具体的业务逻辑。SpringBatch框架提供基础服务。

清楚的区分基础服务、执行环境和应用的关系

提供基本的执行服务接口。所有的项目都可以去实现这些接口

提供基本的执行服务的缺省实现。可以直接拿来使用。

可以在框架各层上方便的配置、定制以及扩展

核心服务可以在基础服务不受任何影响的情况下轻松的替换或扩展。

提供一个基本的部署模型。框架的Jar包完全独立于应用

架构图

Spring Batch使用三层架构,三层分别为应用、核心和基础服务。应用层是用户写的批处理任务。核心层包含执行和控制任务必须的核心类。如JobLauncher、Job和Step的实现。应用和核心层基于一层公用的基础服务。基础服务包括通用的Reader,Writers,RetryTemplate。

优势

Spring Batch 是 SpringSource 和 埃森哲(埃森哲)合作开发的。Accenture 在批处理架构上有着丰富的工业级别的经验,贡献了之前专用的批处理体系框架(这些框架历经数十年研发和使用,为Spring Batch提供了大量的参考经验);SpringSource则有着深刻的技术认知和Spring框架编程模型。Spring Batch 框架通过提供丰富的即开即用的组件、和高可靠性、高扩展性的能力,使得开发批处理应用的人员专注于业务的处理,提升批处理应用的开发效率,通过 Spring Batch 可以快速的构建出轻量级的健壮的并行处理应用。此外,关于Spring Batch已经出版了几本书,为开发者提供了更多的学习资源和参考资料。

参考资料