请选择 进入手机版 | 继续访问电脑版

0 评论

0 收藏

分享

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

现在有很多项目都有批量处理需求,比如:
* E) K8 `' B' Y* Z% h(1)自动,复杂地处理海量信息,无需用户参与即可有效地进行处理
. y. a/ n  e4 n8 D(2)定期操作非常大的数据集重复处理复杂的业务规则
7 x& q. N( A- t(3)从内部和外部系统接收信息的集成,需要格式化,验证和以事务方式进行处理,并落到系统中: B! Q/ K$ l( A0 p7 M' |6 j- q
遇到以上类似场景,就可以考虑使用SpringBatch框架了2 u. ]: V  }. i$ c: a

* I3 p  P6 i$ _1 x一、Spring Batch到底是什么
( R2 K, L' e( c  {) N% S0 VSpring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序,是Spring提供的一个数据操作处理框架,其处理过程如下图
; b8 |; I6 u, f: _$ K. J9 c6 \& J/ X 1.png
8 n( s2 r  `9 O7 ]9 \: \- u: |. J; f7 Q* T/ U
二、应用场景(SpringBatch作用2 m$ n$ f5 W  h+ y
1、从数据库,文件或队列中等多数据源读取海量记录0 W) g! J  {, _5 u
2、以某种方式处理数据
/ i. O) c0 c# J3、以修改后的形式回写数据到指定数据源4 e4 @1 ~& A8 ?' U

* B  s. k2 g' O6 c: n三、Spring Batch架构组成6 A7 f) W( j+ S, Q5 o/ }6 X
Spring Batch有三个重要组成部分:应用层、核心层、基础架构层
' i2 i2 c! i* a& N- Q 1.jpeg " L( |1 {8 X7 @, |  r2 R

. l) M4 Y# x8 [7 I& n1、Application
  \, ^  o9 B( w! k% _; c应用层包含所有的批处理作业,通过Spring框架管理自定义的代码。
8 s% u/ H, n1 v6 W3 G) r1 t% V' K0 E1 k4 h$ W; A
2、Batch Core+ F( @+ Y7 j8 e1 N8 T+ ^# {* e' F
核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。
$ w' G* Q6 ^, a. W9 {4 N3 _9 U5 H" p  Z: t, g- y2 ]: x" ~$ @
3、Batch Infrastructure
4 q% Q$ n. w, l+ _- K! T: N基础构架层提供公共的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块)+ U9 b; z3 U: z$ h7 F  b
应用层和核心层建立在基础构架层之上
* C- ~( r# P: z- s
& l' C+ _1 u2 R8 \  P" D) `& _; @四、作业的配置和运行6 ^( u$ o# ?/ b. b1 a5 |* y
总体体系结构
9 F' K: z4 Z" |: f; E3 g5 `2 B 2.jpeg 0 O3 U. ?$ L9 T
+ p( t- y5 X0 b9 J
1、JobLauncher4 Z( M1 a( L) T% U
启动任务,作业将在JobLauncher相同的线程中执行) M8 D9 Y" E$ }+ A1 m: C
当作业运行时,会创建一个JobInstance,JobInstance代表作业的一次运行逻辑,可通过作业名称和传递给作业的识别性参数来标识。
2 C( G2 o: \) [6 @3 r3 aJobExecution是真正地运行作业,每次运行JobInstance,都会创建新的JobExecution# n" r" i! R: T6 H- B( |
3.jpeg
* b: J. f, ^9 R% C. O2 [+ e# G, B% e' D" v: _$ ~4 f
JobInstance只有一次能成功执行,因为JobInstance通过作业名称和传入的识别性参数来标识。
  C& e: }0 ~6 Q0 C' d
# Q1 Y1 m% `3 V, \& [+ ]) G2、Job4 K- m+ F# D8 z4 R! n" K0 r
一个具体的任务,一个Job中可有多个Step
" R' j5 O; Z2 p$ B6 e
, B- c) F; b0 [0 \) Y" @7 @3、Step. c8 q: [& G" \: {0 X+ p4 ~6 l& N; j
一个具体执行步骤,其包括ItemReader、ItemProcessor、ItemWriter" A# N" \9 m7 e  ~
ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据" A5 Y9 d, _4 G. Q, d
5.png
7 b" N0 Y& }4 o& y
+ F* o; e5 |& l4、JobRepository( `4 L: z$ ~2 g, X. ?4 C* k
记录任务运行状态信息
/ E3 s7 ~( |8 z4 v0 eSpring Batch会默认在数据库里面创建一些batch相关的表,来记录所有job/step运行的状态和结果
( \& G# N8 P$ f. d6 i. x$ d& t* M9 m涉及表:+ [% C% T- l9 d4 O
batch_job_execution
% f6 ~- `$ O6 T0 m% Ibatch_job_execution_context- R9 l  l) D( }  t% P2 M
batch_job_execution_params
/ I% q& a0 e2 F' u! Y$ Wbatch_job_execution_seq# {/ s) j" \: m& o( T$ U) k6 |
batch_job_instance: _2 A7 m4 J3 Y' ^- l0 L' [
batch_job_seq
( W5 b. X" q% P3 d6 b% @: abatch_step_execution1 [1 N# t1 q5 T7 c
batch_step_execution_context8 l' r# n  Y0 p
batch_step_execution_seq
/ T' q5 ]6 }9 d; q# W* w4 [8 i- Z1 F1 l0 d0 `5 {& q
以上,就是对Spring Batch的一个整体认识,希望SpringBatch中文社区能在SpringBatch学习的道路上帮助。
# p/ F/ y% z0 I$ i& _7 U
& J1 m' C- _( j9 O; Q/ C) r8 s" W+ ]9 e4 H( h
回复

举报 使用道具

相关帖子
全部回复
暂无回帖,快来参与回复吧
主题 18
回复 1
粉丝 0
快速回复 返回顶部 返回列表