Spring Batch 介绍
企业领域中的许多应用都需要进行批量处理,以便在关键任务环境中执行业务操作。这些业务操作包括:
-
对大量信息进行自动化、复杂的处理,无需用户交互即可最有效地完成。这些操作通常包括基于时间的事件(例如月末计算、通知或通信)。
-
将复杂的业务规则定期应用于非常大的数据集进行重复处理(例如,保险福利确定或费率调整)。
-
集成来自内部和外部系统的信息,这通常需要格式化、验证并以事务方式处理到记录系统中。企业每天使用批处理处理数十亿笔事务。
Spring Batch 是一个轻量级、全面的批处理框架,旨在支持开发对企业系统日常运行至关重要的健壮批处理应用。Spring Batch 基于 Spring Framework 的特点(生产力、基于 POJO 的开发方法和易用性),同时使开发者在需要时能轻松访问和使用更高级的企业服务。Spring Batch 不是一个调度框架。在商业和开源领域都有许多优秀的企业调度器(例如 Quartz, Tivoli, Control-M 等)。Spring Batch 旨在与调度器协同工作,而不是取代调度器。
Spring Batch 提供了在处理大量记录时必不可少的许多可重用功能,包括日志和追踪、事务管理、Job 处理统计、Job 重启、跳过和资源管理。它还提供了更高级的技术服务和特性,通过优化和分区技术实现极高吞吐量和高性能的批处理 Job。你可以在简单的用例(例如将文件读入数据库或运行存储过程)和复杂、高吞吐量的用例(例如在数据库之间移动大量数据、转换数据等)中使用 Spring Batch。高吞吐量的批处理 Job 可以以高度可伸缩的方式使用该框架来处理大量信息。
背景
虽然开源软件项目和相关社区更关注基于 Web 和微服务的架构框架,但对于适应基于 Java 的批处理需求的、可重用架构框架的关注度明显不足,尽管企业 IT 环境中持续需要处理此类任务。缺乏标准、可重用的批处理架构导致在客户端企业 IT 部门内部开发了许多一次性、内部使用的解决方案。
SpringSource(现为 VMware)与埃森哲(Accenture)合作改变了这一状况。埃森哲在实施批处理架构方面的实践行业和技术经验、SpringSource 深厚的技术经验以及 Spring 久经考验的编程模型共同形成了一个自然且强大的合作伙伴关系,旨在创建高质量、符合市场需求的软件,填补企业 Java 领域的重要空白。两家公司与许多正在通过开发基于 Spring 的批处理架构解决方案来解决类似问题的客户进行了合作。这些输入提供了有用的额外细节和现实约束,有助于确保该解决方案能够应用于客户面临的实际问题。
埃森哲贡献了其此前专有的批处理架构框架给 Spring Batch 项目,同时还贡献了 committer 资源来推动支持、增强和现有功能集。埃森哲的贡献基于其在构建批处理架构方面数十年的经验,涵盖了前几代平台:大型机上的 COBOL、Unix 上的 C++ 以及现在的 Java 平台。
埃森哲与 SpringSource 的合作努力旨在推动软件处理方法、框架和工具的标准化,以便企业用户在创建批处理应用时能够持续使用。希望为其企业 IT 环境提供标准、成熟解决方案的公司和政府机构都可以从 Spring Batch 中受益。
使用场景
典型的批处理程序通常会
-
从数据库、文件或队列读取大量记录。
-
以某种方式处理数据。
-
以修改后的形式写回数据。
Spring Batch 自动化了这种基本的批处理迭代,提供了将类似事务作为一组进行处理的能力,通常在无需用户交互的离线环境中进行。批处理 Job 是大多数 IT 项目的一部分,而 Spring Batch 是唯一提供健壮、企业级解决方案的开源框架。