Spring Batch介绍
概述
Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。Spring Batch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使得已经使用 Spring 框架的开发者或者企业更容易访问和利用企业服务。
Spring Batch 提供了大量可重用的组件,包括了日志、追踪、事务、任务作业统计、任务重启、跳过、重复、资源管理。对于大数据量和高性能的批处理任务,Spring Batch 同样提供了高级功能和特性来支持,比如分区功能、远程功能。总之,通过 Spring Batch 能够支持简单的、复杂的和大数据量的批处理作业。
Spring Batch 是一个批处理应用框架,不是调度框架,但需要和调度框架合作来构建完成的批处理任务。它只关注批处理任务相关的问题,如事务、并发、监控、执行等,并不提供相应的调度功能。如果需要使用调度框架,在商业软件和开源软件中已经有很多优秀的企业级调度框架(如 Quartz、Tivoli、Control-M、Cron 等)可以使用。
场景
• 周期性的提交批处理
• 把一个任务并行处理
• 消息驱动应用分级处理
• 大规模并行批处理
• 手工或调度使任务失败之后重新启动
• 有依赖步骤的顺序执行(使用工作流驱动扩展)
• 处理时跳过部分记录
• 成批事务:为小批量的或有的存储过程/脚本的场景使用
举例:
A系统从数据库中获取数据,经过处理后,导出系统B需要的文件,系统B读取文件,经过业务处理后存放到数据库中。
每天夜间12:00-2:00之间进行。
架构
Spring Batch使用三层架构,三层分别为应用、核心和基础服务。
应用层:包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。应用层是用户写的批处理任务。
核心层:包含Spring Batch启动和控制所需要的核心类,核心层包含执行和控制任务必须的核心类。如JobLauncher、Job和Step的实现。
基础架构层:应用和核心层基于一层公用的基础服务。基础服务包括通用的Reader,Writers,服务处理。(RetryTemplate重试模板,RepeatReader重复模板)可以被应用层核心层使用。
优势
Spring Batch 是 SpringSource 和 Accenture(埃森哲)合作开发的。Accenture 在批处理架构上有着丰富的工业级别的经验,贡献了之前专用的批处理体系框架(这些框架历经数十年研发和使用,为Spring Batch提供了大量的参考经验);SpringSource则有着深刻的技术认知和Spring框架编程模型。
Spring Batch 框架通过提供丰富的即开即用的组件、和高可靠性、高扩展性的能力,使得开发批处理应用的人员专注于业务的处理,
转载于:https://blog.51cto.com/11954054/2386908