springbatch 发表于 2022-5-25 23:00:39

【SpringBatch中文社区】SpringBatch是什么呢?又有哪些作用呢?

现在有很多项目都有批量处理需求,比如:
(1)自动,复杂地处理海量信息,无需用户参与即可有效地进行处理
(2)定期操作非常大的数据集重复处理复杂的业务规则
(3)从内部和外部系统接收信息的集成,需要格式化,验证和以事务方式进行处理,并落到系统中
遇到以上类似场景,就可以考虑使用SpringBatch框架了

一、Spring Batch到底是什么
Spring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序,是Spring提供的一个数据操作处理框架,其处理过程如下图


二、应用场景(SpringBatch作用)
1、从数据库,文件或队列中等多数据源读取海量记录
2、以某种方式处理数据
3、以修改后的形式回写数据到指定数据源

三、Spring Batch架构组成
Spring Batch有三个重要组成部分:应用层、核心层、基础架构层


1、Application
应用层包含所有的批处理作业,通过Spring框架管理自定义的代码。

2、Batch Core
核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。

3、Batch Infrastructure
基础构架层提供公共的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块)
应用层和核心层建立在基础构架层之上

四、作业的配置和运行
总体体系结构


1、JobLauncher
启动任务,作业将在JobLauncher相同的线程中执行
当作业运行时,会创建一个JobInstance,JobInstance代表作业的一次运行逻辑,可通过作业名称和传递给作业的识别性参数来标识。
JobExecution是真正地运行作业,每次运行JobInstance,都会创建新的JobExecution


JobInstance只有一次能成功执行,因为JobInstance通过作业名称和传入的识别性参数来标识。

2、Job
一个具体的任务,一个Job中可有多个Step

3、Step
一个具体执行步骤,其包括ItemReader、ItemProcessor、ItemWriter
ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据


4、JobRepository
记录任务运行状态信息
Spring Batch会默认在数据库里面创建一些batch相关的表,来记录所有job/step运行的状态和结果
涉及表:
batch_job_execution
batch_job_execution_context
batch_job_execution_params
batch_job_execution_seq
batch_job_instance
batch_job_seq
batch_step_execution
batch_step_execution_context
batch_step_execution_seq

以上,就是对Spring Batch的一个整体认识,希望SpringBatch中文社区能在SpringBatch学习的道路上帮助。


页: [1]
查看完整版本: 【SpringBatch中文社区】SpringBatch是什么呢?又有哪些作用呢?