Spring batch批处理框架

spring batch框架的简介

批处理任务是大多数IT项目的一个重要组成部分,批处理在业务系统中负责处理海量的数据,无须人工干预就能够自动高效的进行复杂的数据分析和处理。批处理会定期读入批量数据,经过相应的业务处理进行归档的业务操作,批处理的特征是自动执行,处理的数据量大,定时执行。将整个批处理的流程按逻辑划分可以分为读数据,处理数据和写数据。

spring batch对批处理本身的特性进行了抽象,将批处理作业抽象为job和job step,将批处理的处理过程分解为数据读,数据处理和数据写。

将异常处理机制分为跳过,重启和重试。将作业的分区分为多线程,并行远程和分区。

spring batch不是一个调度框架,但需要调度框架来配合完成批处理任务,它只关注批处理相关的任务问题,但没有提供相应的调度功能,如果需要使用调度功能,需要使用调度框架,这里介绍一个比较常用的调度框架quartz,可以配合spring batch完成批处理的任务调度。

spring batch的架构分为三层:基础架构层,核心层和应用层。应用层包含所有的批处理作业,核心层主要提供JobLauncher、Job和step,基础架构层主要提供通用的读(ItemReader)、写(ItemWriter)和服务处理(如:RetryTemplate重试模板;RepeatTemplate:重复模板),Spring

batch的三层架构体系使得Spring batch框架可以在不同的层级进行扩展,避免不同层级之间的相互影响。

job的介绍

批处理的作业是由一组step组成,同时job本身也是配置文件的顶级元素。每个作业都有自己的名字,可以定义step的执行顺序,以及定义作业是否可以重启。job执行的时候会生成一个job instance(作业实例)和一个job execution(作业执行器)。job instance包含执行job期间产生的数据以及job执行的状态信息;1个job可以对应多个job instance,1个job instance可以对应多个job execution。

job的配置的主要属性有id(作业的唯一标识)、job-repository(定义作业仓库)、incrementer(作业参数递增器)、restartable(作业是否重启)、parent(指定该作业的父作业)、abstract(定义作业是否抽象)。

step的介绍

step表示作业中一个完整的步骤,一个job可以由一个或者多个step组成,step主要负责批处理运行过程中的主要业务逻辑的实现。每次step执行的时候会生成一个或者多个job execution,每次任务执行失败的时候,等到下次重新执行该任务的时候就会为该任务的step重新生成一个step execution。

step可以配置tasklet、partition、job、flow。

step一般主要配置itemReader、itemProcess和itemWriter来完成批处理的业务逻辑处理。

job repository的介绍

job repository主要用来存储job运行期间的元数据(这些元数据包括job instance、job execution、job parameters、step execution、execution context等数据)。

spring batch框架进行元数据管理的时候共有9张表,其中有3张表(后缀是SEQ)用来分配主键的,这9张表分别是

BATCH_JOB_INSTANCE:作业实例表

BATCH_JOB_EXECUTION:作业执行器表

BATCH_JOB_EXECUTION_PARAMS:作业参数表

BATCH_STEP_EXECUTION:作业步执行器表

BATCH_JOB_EXECUTION_CONTEXT:作业执行上下文表

BATCH_STEP_EXECUTION_CONTEXT:作业步执行上下文表

BATCH_JOB_EXECUTION_SEQ:作业执行器序列表

BATCH_STEP_EXECUTION_SEQ:作业步序列表

BATCH_JOB_SEQ:作业序列表

itemReader的介绍

itemReader是Step中对资源的读处理,Spring batch框架提供了大量的直接可用的读组件可以快速的完成批处理应用的开发和构建,同时框架也提供了较好的复用和扩展组件,开发者可以自定义实现。

ListItemReader:读取List数据,只能读一次。

ItemReaderAdapter:ItemReader适配器,可以复用现有的读操作。

FlatFileItemReader:读Flat类型文件。

StaxEventItemReader:读XML类型文件。

JdbcCursorItemReader:基于JDBC游标方式读数据库。

HibernateCursorItemReader:基于hibernate游标方式读取数据库。

StoredProcedureItemReader:基于存储过程读取数据库。

IbatisPagingItemReader:基于Ibatis分页读取数据库。

JpaPagingItemReader:基于jpa方式分页读取数据库。

JdbcPagingItemReader:基于jdbc方式分页读取数据库。

HibernatePagingItemReader:基于Hibernate方式分页读取数据库。

JmsItemReader:读取jms队列。

IteratorItemReader:迭代方式的读组件。

MultiResourceItemReader:多文件读取组件。

MongoItemReader:基于分布式存储MongoDB读组件。

Neo4jItemReader:面向网格数据库Neo4j读组件。

ResourcesItemReader:基于批量资源的读组件。

AmqpItemReader:读取AMQP队列组件。

RepositoryItemReader:基于Spring Data的读组件。

itemProcess的介绍

itemProcess阶段表示对读取数据进行处理,开发者可以在这里面实现自己的业务操作。

CompositeItemProcessor:组合处理器,可以封装多个业务处理服务。

ItemProcessorAdapter:适配器,可以复用现有的业务处理服务。

PassThroughItemProcessor:不做业务处理,直接返回读取数据。

ValidatingItemProcessor:数据校验处理器,支持对数据的校验,如果校验不通过可以进行过滤或者跳过skip的方式来处理记录。

itemWriter的介绍

itemWriter是step中对资源的写处理,Spring batch框架提供了大量的直接可用的写组件可以快速的完成批处理应用的开发和构建,同时框架也提供了较好的复用和扩展组件,开发者可以自定义实现。

FlatFileItemWriter:写flat类型文件。

MultiResourceItemWriter:多文件写组件。

StaxEventItemWriter:写XML类型文件。

AmqpItemWriter:写AMQP类型消息。

ClassifierCompositeItemWriter:根据Classifier路由不同的Item到特定的ItemWriter处理。

HibernateItemWriter:基于Hibernate方式写数据库。

IbatisBatchItemWriter:基于Ibatis方式写数据库。

ItemWriterAdapter:适配器,可以复用现有的写服务。

JdbcBatchItemWriter:基于JDBC方式写数据库。

JmsItemWriter:写JMS队列。

JpaItemWriter:基于jpa方式写数据库。

GemfireItemWriter:基于分布式数据库Gemfire的写组件。

SpELMappingGemfireItemWriter:基于spring表达式语言写分布式数据库Gemfire的组件。

MimeMessageItemWriter:发送邮件的写组件。

MongoItemWriter:基于分布式文件存储数据库MongoDB写组件。

Neo4jItemWriter:面向网络数据库Neo4j的读组件。

PropertyExtractingDelegatingItemWriter:属性抽取代理写组件。

RepositoryItemWriter:基于Spring Data的写组件。

SimpleMailMessageItemWriter:发送邮件的写组件。

CompositeItemWriter:条目写的组合模式,支持组装多个ItemWriter。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • Spring Batch入门教程篇

    SpringBatch介绍: SpringBatch 是一个大数据量的并行处理框架.通常用于数据的离线迁移,和数据处理,⽀持事务.并发.流程.监控.纵向和横向扩展,提供统⼀的接⼝管理和任务管理;SpringBatch是SpringSource和埃森哲为了统一业界并行处理标准为广大开发者提供方便开发的一套框架. 官方地址:github.com/spring-projects/spring-batch SpringBatch 本身提供了重试,异常处理,跳过,重启.任务处理统计,资源管理等特性,这些特

  • Spring Batch读取txt文件并写入数据库的方法教程

    项目需求 近日需要实现用户推荐相关的功能,也就是说向用户推荐他可能喜欢的东西. 我们的数据分析工程师会将用户以及用户可能喜欢的东西整理成文档给我,我只需要将数据从文档中读取出来,然后对数据进行进一步的清洗(例如去掉特殊符号,长度如果太长则截取).然后将处理后的数据存入数据库(Mysql). 所以分为三步: 读取文档获得数据 对获得的数据进行处理 更新数据库(新增或更新) 考虑到这个数据量以后会越来越大,这里没有使用 poi 来读取数据,而直接使用了 SpringBatch. 实现步骤 本文假设读

  • spring batch 读取多个文件数据导入数据库示例

    项目的目录结构 需要读取文件的的数据格式 applicatonContext.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p=

  • Spring Batch批处理框架使用解析

    这篇文章主要介绍了Spring Batch批处理框架使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用Spring Batch做为批处理框架,可以完成常规的数据量不是特别大的离线计算. 现在写一个简单的入门版示例. 这里默认大家已经掌握了Spring Batch的基本知识,示例只是为了快速上手实践 目标1:程序随机生成字符串,经过Spring Batch后,统一在字符串后加入"----PROCESSED",并输出 目标2:程

  • Spring Batch批处理框架操作指南

    目录 简介 Spring Batch 架构 Spring Batch 核心概念 什么是 Job 什么是 JobInstance 什么是 JobParameters 什么是 JobExecution 什么是 Step 什么是 StepExecution 什么是 ExecutionContext 什么是 JobRepository 什么是 JobLauncher 什么是 Item Reader 什么是 Item Writer 什么是 Item Processor chunk 处理流程 skip 策略

  • Spring batch批处理框架

    spring batch框架的简介 批处理任务是大多数IT项目的一个重要组成部分,批处理在业务系统中负责处理海量的数据,无须人工干预就能够自动高效的进行复杂的数据分析和处理.批处理会定期读入批量数据,经过相应的业务处理进行归档的业务操作,批处理的特征是自动执行,处理的数据量大,定时执行.将整个批处理的流程按逻辑划分可以分为读数据,处理数据和写数据. spring batch对批处理本身的特性进行了抽象,将批处理作业抽象为job和job step,将批处理的处理过程分解为数据读,数据处理和数据写.

  • 详解批处理框架之Spring Batch

    目录 一.Spring Batch的概念知识 1.1.分层架构 1.2.关键概念 1.2.1.JobRepository 1.2.2.任务启动器JobLauncher 1.2.3.任务Job 1.2.4.步骤Step 1.2.5.输入--处理--输出 二.代码实例 2.1.基本框架 2.2.输入--处理--输出 2.2.1.读取ItemReader 2.2.2.处理ItemProcessor 2.2.3.输出ItremWriter 2.3.Step 2.4.Job 2.5.运行 三.监听List

  • Spring Batch轻量级批处理框架实战

    目录 1 实战前的理论基础 1.1 Spring Batch是什么 1.2 Spring Batch能做什么 1.3 基础架构 1.4 核心概念和抽象 2 各个组件介绍 2.1 Job 2.2 Step 2.3 ExecutionContext 2.4 JobRepository 2.5 JobLauncher 2.6 Item Reader 2.7 Item Writer 2.8 Item Processor 3 Spring Batch实战 3.1 依赖和项目结构以及配置文件 3.2 代码和

  • Java中批处理框架spring batch详细介绍

    spring batch简介 spring batch是spring提供的一个数据处理框架.企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作. 这些业务运营包括: 无需用户交互即可最有效地处理大量信息的自动化,复杂处理. 这些操作通常包括基于时间的事件(例如月末计算,通知或通信). 在非常大的数据集中重复处理复杂业务规则的定期应用(例如,保险利益确定或费率调整). 集成从内部和外部系统接收的信息,这些信息通常需要以事务方式格式化,验证和处理到记录系统中. 批处理用于每天为企业处

  • 解决Spring Batch框架job任务只跑一次的问题

    目录 Spring Batch job任务只跑一次 出现原因 解决方法 job的启动,停止,放弃 1.启动一个job 2.停止一个job 3.放弃一个job 4.失败一个job 5.结束一个job Spring Batch job任务只跑一次 在一次实际使用spring batch的过程中,在定时任务中,第一次执行Job没有出现问题,然后再次执行时不会执行job任务: 出现原因 针对这种异常需要明确Job Instance的概念,Job Instance 是由Job的名称和执行该job的参数组成

  • 详解spring batch的使用和定时器Quart的使用

    spring Batch是一个基于Spring的企业级批处理框架,它通过配合定时器Quartz来轻易实现大批量的数据读取或插入,并且全程自动化,无需人员管理. 在使用spring batch之前,得对spring batch的流程有一个基本了解 每个batch它都包含了一个job,而一个job中却有可能包含多个step,整个batch中干活的是step,batch主要是用来对数据的操作,所以step就有三个操作数据的东西,一个是ItemReader用来读取数据的,一个是ItemProcessor

  • 详解Spring batch 入门学习教程(附源码)

    Spring batch 是一个开源的批处理框架.执行一系列的任务. 在 spring batch 中 一个job 是由许多 step 组成的.而每一个 step  又是由 READ-PROCESS-WRITE task或者 单个 task 组成. 1. "READ-PROCESS-WRITE" 处理,根据字面意思理解就可以: READ 就是从资源文件里面读取数据,比如从xml文件,csv文件,数据库中读取数据. PROCESS 就是处理读取的数据 WRITE 就是将处理过的数据写入到

随机推荐