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

0 评论

0 收藏

分享

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

现在有很多项目都有批量处理需求,比如:
3 X) \. @5 [# D: T6 I' j(1)自动,复杂地处理海量信息,无需用户参与即可有效地进行处理
& |) I6 N9 B( t  V(2)定期操作非常大的数据集重复处理复杂的业务规则
6 i% R0 Q7 e5 _: c  v(3)从内部和外部系统接收信息的集成,需要格式化,验证和以事务方式进行处理,并落到系统中
5 r, {6 W5 U4 @3 ]0 g  ?3 c遇到以上类似场景,就可以考虑使用SpringBatch框架了
8 w1 ^( W; ?( R& ^- M6 F
7 M6 T  Q) L4 f, ~9 d# `一、Spring Batch到底是什么2 i2 _$ t  R. K2 ~4 o  W( y
Spring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序,是Spring提供的一个数据操作处理框架,其处理过程如下图
3 s# ^1 P9 b* y- R# R$ Q' A 1.png 4 N1 V# _' R$ t' D& \5 J( z
0 n, a  j1 [% d) O
二、应用场景(SpringBatch作用
( Z/ X6 r+ S& Q' W1、从数据库,文件或队列中等多数据源读取海量记录; K: ?0 A8 L1 E! {
2、以某种方式处理数据
' H7 ^% _- ^% j+ a0 W; B3、以修改后的形式回写数据到指定数据源
2 {+ l# T. j: c) s; Z% S1 u9 q1 ^( \3 r' O+ h# c8 B5 {
三、Spring Batch架构组成! P0 h5 e: Q5 W' R' [6 }. }
Spring Batch有三个重要组成部分:应用层、核心层、基础架构层- J) [9 u% d0 [
1.jpeg $ ?6 n6 p8 F3 ]
) \$ W( R! ?/ Z, W
1、Application
, S+ n4 b6 e% I+ x应用层包含所有的批处理作业,通过Spring框架管理自定义的代码。/ X3 S7 e2 W) _  O: I! X

  s/ \# x. M8 G0 h& c2、Batch Core' T- E0 h; q! W, [: d' R9 Y% F
核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。+ C' ]5 A7 R) k( S
$ `5 l0 `. o6 e- f( ]- A9 q
3、Batch Infrastructure
4 R: u2 B; R+ C4 g. H基础构架层提供公共的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块)
0 k" f' w" K9 T, z# j, N5 w应用层和核心层建立在基础构架层之上' Z5 ?" ]4 }- }1 t: s, n
+ J/ N! S& U0 S% L. |3 J0 d% b
四、作业的配置和运行* S0 J8 t2 I1 r! f% x. T
总体体系结构1 V* C0 q3 Z1 V0 l: W
2.jpeg 5 G1 m. u4 E% _5 B1 a2 n
4 S5 }! n$ z8 }6 w% S8 c+ L! a( @
1、JobLauncher3 S4 y( E: z0 r! k( W. w" w1 ?
启动任务,作业将在JobLauncher相同的线程中执行3 E- d; `# }8 ~  z- k
当作业运行时,会创建一个JobInstance,JobInstance代表作业的一次运行逻辑,可通过作业名称和传递给作业的识别性参数来标识。
& Z# M4 V! m7 r1 I6 ]# R) _) S2 mJobExecution是真正地运行作业,每次运行JobInstance,都会创建新的JobExecution
5 \) h, u" E, u) @1 j 3.jpeg
# t6 ]; V. ~% y. `0 B  G
% v2 c9 {6 p' s0 W) n% V8 E( ?JobInstance只有一次能成功执行,因为JobInstance通过作业名称和传入的识别性参数来标识。' t0 J4 c# v+ b; ^! T
, \5 N; o  D+ o; d
2、Job3 f5 a1 @+ x, i' `6 Y
一个具体的任务,一个Job中可有多个Step
/ d3 O: S8 u& ?+ l2 H
4 Q! [# x6 ]* i. e, `3 j2 @/ a7 x3、Step
% i% j8 ~8 y! @一个具体执行步骤,其包括ItemReader、ItemProcessor、ItemWriter) A& z! Y5 G4 _, g! _& z
ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据# \+ w1 M) W; g1 _" G* }1 z, z
5.png
4 M5 T5 l6 v6 ]& p; U4 Y& _$ T
# V/ L; K8 V, x. v: R& e4、JobRepository$ H# h6 b; R  @6 Q# K
记录任务运行状态信息
4 x! v( n6 e% QSpring Batch会默认在数据库里面创建一些batch相关的表,来记录所有job/step运行的状态和结果
, m* i" a4 `6 @8 }/ t7 n3 c9 b7 W涉及表:0 G2 i, ?/ b: I5 y; C
batch_job_execution
; `6 i7 g6 e: w) i& q( Bbatch_job_execution_context
* o! |* {& X8 q7 M2 H; ]8 ubatch_job_execution_params
: }! Y4 N9 O& N8 D- I6 r: Tbatch_job_execution_seq
  s9 r% v) \4 ], Y, n- ?3 Bbatch_job_instance# v+ T1 V- [7 B% W' G
batch_job_seq9 J8 l5 R; B9 o" p
batch_step_execution1 E! V4 j7 o+ W1 X1 i9 ^# F& f6 [
batch_step_execution_context
- I- A5 o  [/ H& V3 J6 `) Kbatch_step_execution_seq( z; F8 d% j* _8 \9 E$ S
# q7 M2 J9 w  c# x2 L
以上,就是对Spring Batch的一个整体认识,希望SpringBatch中文社区能在SpringBatch学习的道路上帮助。! I9 l* U) ]" q, V5 \1 Q. O

6 L: r* t. S: f/ f; R5 O
; |1 ]- e" i: ~+ r; l) d
回复

举报 使用道具

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