Spring Batch 简介

企业领域中的许多应用程序需要进行批量处理,以便在任务关键型环境中执行业务操作。这些业务操作包括:

  • 对大量信息进行自动化、复杂的处理,这些信息最有效地无需用户交互即可处理。这些操作通常包括基于时间的事件(例如月末计算、通知或通信)。

  • 对超大数据集重复应用复杂的业务规则(例如,保险福利确定或费率调整)。

  • 集成从内部和外部系统接收到的信息,这通常需要以事务方式格式化、验证并处理到记录系统中。批处理每天为企业处理数十亿笔事务。

Spring Batch 是一个轻量级、全面的批处理框架,旨在开发强大的批处理应用程序,这些应用程序对于企业系统的日常运行至关重要。Spring Batch 建立在人们所期望的 Spring Framework 特性之上(生产力、基于 POJO 的开发方法和普遍易用性),同时使开发人员在需要时能够轻松访问和使用更高级的企业服务。Spring Batch 不是一个调度框架。在商业和开源领域都有许多优秀的企业调度器(例如 Quartz、Tivoli、Control-M 等)。Spring Batch 旨在与调度器协同工作,而不是取代调度器。

Spring Batch 提供可重用功能,这些功能对于处理大量记录至关重要,包括日志和跟踪、事务管理、作业处理统计、作业重启、跳过和资源管理。它还提供更高级的技术服务和功能,通过优化和分区技术实现极高吞吐量和高性能的批处理作业。您可以在简单的用例(例如将文件读入数据库或运行存储过程)和复杂的、高吞吐量的用例(例如在数据库之间移动大量数据、转换数据等)中使用 Spring Batch。高吞吐量的批处理作业可以以高度可扩展的方式使用该框架来处理大量信息。

背景

尽管开源软件项目和相关社区已将更多注意力集中在基于 Web 和基于微服务的架构框架上,但在容纳基于 Java 的批处理需求的方面,可重用架构框架却明显缺乏关注,尽管企业 IT 环境中仍需要处理此类任务。缺乏标准、可重用的批处理架构导致在客户企业 IT 职能部门内部开发了许多一次性、内部解决方案。

SpringSource(现为 VMware)和埃森哲(Accenture)合作改变了这一局面。埃森哲在实施批处理架构方面的实践行业和技术经验,SpringSource 深厚的技术经验,以及 Spring 成熟的编程模型,共同形成了自然而强大的合作伙伴关系,旨在创建高质量、市场相关的软件,以填补企业 Java 中的重要空白。两家公司与一些客户合作,这些客户通过开发基于 Spring 的批处理架构解决方案来解决类似问题。这些输入提供了一些有用的额外细节和现实世界的约束,有助于确保该解决方案可以应用于客户提出的实际问题。

埃森哲将其之前专有的批处理架构框架贡献给 Spring Batch 项目,同时贡献了提交者资源以推动支持、增强和现有功能集。埃森哲的贡献基于数十年来使用最近几代平台构建批处理架构的经验:大型机上的 COBOL、Unix 上的 C++,以及现在的 Java。

埃森哲和 SpringSource 之间的合作旨在促进软件处理方法、框架和工具的标准化,企业用户可以在创建批处理应用程序时始终如一地使用这些方法、框架和工具。希望为其企业 IT 环境提供标准、经过验证解决方案的公司和政府机构可以从 Spring Batch 中受益。

使用场景

典型的批处理程序通常会:

  • 从数据库、文件或队列中读取大量记录。

  • 以某种方式处理数据。

  • 以修改后的形式写回数据。

Spring Batch 自动化了这种基本的批处理迭代,提供了以一组形式处理类似事务的能力,通常在离线环境中进行,无需任何用户交互。批处理作业是大多数 IT 项目的一部分,而 Spring Batch 是唯一提供健壮、企业级解决方案的开源框架。

业务场景

Spring Batch 支持以下业务场景:

  • 定期提交批处理。

  • 并发批处理:作业的并行处理。

  • 分阶段、消息驱动的企业处理。

  • 大规模并行批处理。

  • 失败后手动或计划重启。

  • 依赖步骤的顺序处理(以及工作流驱动批处理的扩展)。

  • 部分处理:跳过记录(例如,在回滚时)。

  • 整批事务,适用于小批量或现有存储过程或脚本的情况。

技术目标

Spring Batch 具有以下技术目标:

  • 让批处理开发人员使用 Spring 编程模型:专注于业务逻辑,让框架负责基础设施。

  • 在基础设施、批处理执行环境和批处理应用程序之间提供清晰的关注点分离。

  • 提供通用的核心执行服务作为所有项目都可以实现的接口。

  • 提供核心执行接口的简单默认实现,可“开箱即用”。

  • 通过在所有层中使用 Spring 框架,轻松配置、自定义和扩展服务。

  • 所有现有核心服务都应易于替换或扩展,而不会对基础设施层产生任何影响。

  • 提供简单的部署模型,架构 JAR 与应用程序完全分离,使用 Maven 构建。

© . This site is unofficial and not affiliated with VMware.