认识一下Spring Batch批处理框架

Spring Batch 是一个轻量级且全面的批处理框架,适用于自动化、大规模数据处理。它提供了如Job、Step、Item Reader、Item Writer、Item Processor等核心概念,支持事务管理、错误处理和高容量批处理。通过JobRepository和JobLauncher管理作业执行,使用ItemReader和ItemWriter处理数据的读写,ItemProcessor处理业务逻辑。批处理原则包括简化逻辑、减少资源使用和保证数据完整性。在遇到内存不足问题时,可以调整reader读取策略或增加服务内存。
摘要由CSDN通过智能技术生成
Spring Batch 是 Spring 提供的一个数据处理框架。企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作。

这些业务运营包括:

  • 无需用户交互即可最有效地处理大量信息的自动化,复杂处理。这些操作通常包括基于时间的事件(例如月末计算,通知或通信)。
  • 在非常大的数据集中重复处理复杂业务规则的定期应用(例如,保险利益确定或费率调整)。
  • 集成从内部和外部系统接收的信息,这些信息通常需要以事务方式格式化,验证和处理到记录系统中。批处理用于每天为企业处理数十亿的交易。


Spring Batch 是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序。


Spring Batch 构建了人们期望的 Spring Framework 特性(生产力,基于 POJO 的开发方法和一般易用性),同时使开发人员可以在必要时轻松访问和利用更高级的企业服务。Spring Batch 不是一个 schuedling 的框架。


Spring Batch 提供了可重用的功能,这些功能对于处理大量的数据至关重要,包括记录/跟踪,事务管理,作业处理统计,作业重启,跳过和资源管理。


它还提供更高级的技术服务和功能,通过优化和分区技术实现极高容量和高性能的批处理作业。


Spring Batch 可用于两种简单的用例(例如将文件读入数据库或运行存储过程)以及复杂的大量用例(例如在数据库之间移动大量数据,转换它等等) 上)。大批量批处理作业可以高度可扩展的方式利用该框架来处理大量信息。


Spring Batch 架构


一个典型的批处理应用程序大致如下:

  • 从数据库,文件或队列中读取大量记录。
  • 以某种方式处理数据。
  • 以修改之后的形式写回数据。


其对应的示意图如下: d704dfd8c35840e6dad47f13d1b1ba38.jpeg Spring Batch 的一个总体的架构如下: 0d192a557a5f1eb88bc0adef1cbf8b53.jpeg

在 Spring Batch 中一个 job 可以定义很多的步骤 step,在每一个 step 里面可以定义其专属的 ItemReader 用于读取数据。


ItemProcesseor 用于处理数据,ItemWriter 用于写数据,而每一个定义的 job 则都在 JobRepository 里面,我们可以通过 JobLauncher 来启动某一个 job。


Spring Batch 核心概念


下面是一些概念是 Spring Batch 框架中的核心概念。


| 什么是 Job

Job 和 Step 是 Spring Batch 执行批处理任务最为核心的两个概念。


其中 Job 是一个封装整个批处理过程的一个概念。Job 在 Spring Batch 的体系当中只是一个最顶层的一个抽象概念,体现在代码当中则它只是一个最上层的接口。


其代码如下: /**
 * Batch domain object representing a job. Job is an explicit abstraction
 * representing the configuration of a job specified by a developer. It should
 * be noted that restart policy is applied to the job as a whole and not to a
 * step.
 */

public  interface  Job {

  String getName();


  boolean isRestartable();


  void execute(JobExecution execution);


  JobParametersIncrementer getJobParametersIncrementer();


  JobParametersValidator getJobParametersValidator();

}


在 Job 这个接口当中定义了五个方法,它的实现类主要有两种类型的 job,一个是 simplejob,另一个是 flowjob。


在 Spring Batch 当中,job 是最顶层的抽象,除 job 之外我们还有 JobInstance 以及 JobExecution 这两个更加底层的抽象。


一个 job 是我们运行的基本单位,它内部由 step 组成。job 本质上可以看成 step 的一个容器。


一个 job 可以按照指定的逻辑顺序组合 step,并提供了我们给所有 step 设置相同属性的方法,例如一些事件监听,跳过策略。


Spring Batch 以 SimpleJob 类的形式提供了 Job 接口的默认简单实现,它在 Job 之上创建了一些标准功能。


一个使用 java config 的例子代码如下:

@ Bean
public Job footballJob() {
     return  this .jobBuilderFactory.get(" footballJob")
                      .start( playerLoad())
                      .next( gameLoad())
                      .next( playerSummarization())
                      .end()
                   &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值