Java|什么是 Spring Batch? Java 中的批处理概述

Java|什么是 Spring Batch? Java 中的批处理概述

文章图片


Spring Batch 框架提供了一种简单、健壮且可靠的方式来编写批处理应用程序 。 批处理应用程序表征大量数据的处理 , 例如文件索引、金融交易、统计计算等 。 此类应用程序需要批量执行数据并适合常见的批处理模式 。 本文提供了 Spring Batch 框架及其在 Java 中的实现的高级概述 。

概述
批处理与在处理时需要用户和其他干预的应用程序完全相反 。 事实上 , 它是一种无缝的数据处理 , 没有任何类型的交互或中断 。 从历史上看 , 批处理是对单指令处理的改进 。 简而言之 , 在批处理系统中 , 大量类似的数据被编译并提供给处理 , 几乎没有中断或干预 。 与可能遭受不可预测的资源利用率峰值的非批处理应用程序不同 , 批处理由于其可预测性而非常可预测且易于管理 。 乍一看 , 批处理系统似乎非常简单 , 并且不会对开发造成任何挑战 。 但是 , 事实恰恰相反 。 它有自己的一系列挑战 , 除非得到妥善处理 , 否则可能是一个真正的问题 。
在典型的批处理应用程序中 , 一个系统将一堆事务作为文件导出 , 而另一个系统从文件中导入这些数据并将它们持久化到数据库中 , 如图 1 所示 。

在企业环境中 , 会发生大量复杂的计算;它每天都使用尖端算法为庞大的文档库编制索引 。 批处理应用程序注意时间 , 并且很容易适应在实时环境中工作的要求 。 尽管还有其他方法 , 例如基于消息的解决方案 , 但它们并不相互排斥 。 他们有自己独特的挑战和用途 。 批处理应用程序的独特用途也不同;即使在当今复杂的企业环境中 , 它们也是其他解决方案无法比拟的 。
批量挑战
简而言之 , 批处理应用程序面临的挑战是可维护性、可扩展性、可用性和安全性 。
可维护性:如果批处理作业失败 , 必须知道失败的点和时间 , 以便快速调试 。 这利用了可维护性 。
可扩展性:批处理必须是可扩展的 。 批处理作业批量在一段时间内可能从十个扩展到数千个的程度 。 应用程序必须能够在处理过程中没有明显滞后的情况下扩展操作的大小 。
可用性:有趣的是 , 批处理作业并非始终完成 , 而是在某个时间安排 。 通常 , 企业批处理作业会堆积起来 , 以便在硬件、数据和其他资源可用的给定时间点进行处理 。 例如 , 在银行系统中 , 交易最终被安排在资源更多可用时记录 。
安全性:最后 , 在利用数据安全性的意义上 , 批处理必须是安全的 。 这涉及数据验证、敏感数据加密、安全访问外部系统等 。
Spring Batch 框架
编写批处理应用程序不是很简单; 除了简单地编译批量作业之外 , 还有许多问题必须在一开始就解决 。 这就是创建 Spring Batch 框架的原因 。 目标是提供一个开源的、面向批处理的框架 , 以解决在开发尖端批处理应用程序中出现的问题 。 Spring Batch 是 2007 年与 Accenture 和 Spring Source 合作完成的一个项目 。
从非常高的层次来看 , Spring Batch 可以被视为三层配置:应用程序、核心和基础架构 。 这些如图 2 所示 。

三个层次如下:
应用程序:应用程序层编译开发人员编写的所有批处理作业和代码 , 例如业务逻辑、服务代码以及作业结构的配置 。 请注意 , 在实践中 , 应用程序不是一个独特的实体 , 而是核心和基础架构层的包装 , 因为在大多数情况下 , 开发包括自定义基础架构代码 , 例如读取器和写入器 , 以及核心类 。