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

0 评论

0 收藏

分享

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

现在有很多项目都有批量处理需求,比如:
! [+ F( `+ H+ L( C9 W/ G(1)自动,复杂地处理海量信息,无需用户参与即可有效地进行处理
: A, v) T: v8 x! U# W(2)定期操作非常大的数据集重复处理复杂的业务规则$ [7 q& }# J5 Z; u4 p
(3)从内部和外部系统接收信息的集成,需要格式化,验证和以事务方式进行处理,并落到系统中
. r* Y3 l, C$ x. x" F6 a遇到以上类似场景,就可以考虑使用SpringBatch框架了- G4 M! r2 ]3 m; D, L. ~3 Y

) Q7 C% b8 ]$ f& M" ]8 B! t一、Spring Batch到底是什么
" u0 ]1 w% ]$ D, v0 n/ z& D# USpring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序,是Spring提供的一个数据操作处理框架,其处理过程如下图
! }6 d( ?- K, ]# q( W8 K2 p  Q 1.png 5 F1 [4 c6 R/ j& d# ?# |
5 q$ J! x9 s! f$ Y) b$ V
二、应用场景(SpringBatch作用
( k0 O! M) X" e4 P5 k; \1、从数据库,文件或队列中等多数据源读取海量记录
0 Y' f3 h* V3 s  L2、以某种方式处理数据% ]' F9 t! _4 \# y. B
3、以修改后的形式回写数据到指定数据源
+ }$ b6 O6 Z7 v. d& m) U: W
: X) H* o. S2 Y1 D! T, m8 W三、Spring Batch架构组成
& i1 `$ |5 a( USpring Batch有三个重要组成部分:应用层、核心层、基础架构层9 G+ b7 v- s  t
1.jpeg # m) z+ e3 ~" p1 m7 a

) I( H. }4 n4 n1 Q- R3 W1、Application4 x! c( B, x$ J) B; t. D- t
应用层包含所有的批处理作业,通过Spring框架管理自定义的代码。
8 U9 s" T0 }' ^. }" a/ E2 O. _/ A% Q0 p: |% T. M3 @( {/ L
2、Batch Core& C7 o. z4 n3 l, z
核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。
4 i7 Y) O' R! S! ?9 A; |  A6 D8 G- t/ ?; y$ p& B
3、Batch Infrastructure
' ~; c, s/ ?/ q; f9 G基础构架层提供公共的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块)4 }" x: u$ g4 H4 Y6 c( b4 B' @
应用层和核心层建立在基础构架层之上! E& p2 i! z5 L6 q" U
$ }0 n8 p+ D6 x- Y
四、作业的配置和运行8 Z' C9 @8 ~. W$ d# o1 ]
总体体系结构( U5 l( j6 @9 `
2.jpeg - l% }1 [+ R4 m1 h

$ O6 R9 g1 t7 K+ C* X  d1、JobLauncher0 G6 ^) a) q$ ]; R, W3 z& O
启动任务,作业将在JobLauncher相同的线程中执行
) G2 G) c' V, T& @当作业运行时,会创建一个JobInstance,JobInstance代表作业的一次运行逻辑,可通过作业名称和传递给作业的识别性参数来标识。; U3 m* m% n2 T' v' ?$ p! r4 j3 ]
JobExecution是真正地运行作业,每次运行JobInstance,都会创建新的JobExecution
; ]# N- V3 m0 y2 [/ e 3.jpeg
3 L6 `3 i7 ], Y* r. b+ T" W* e
9 V/ ?7 v) _3 u) d$ W4 AJobInstance只有一次能成功执行,因为JobInstance通过作业名称和传入的识别性参数来标识。
/ \7 `% d! Z+ L2 @
( ]: n, ]& w3 j0 p2、Job9 b4 \- X7 }& |/ Z; ~
一个具体的任务,一个Job中可有多个Step8 V, Q8 k: ?/ w; N# {( o

; z0 W$ ~$ I7 n/ D9 N% P* j3、Step
8 X" J5 G5 R% M) X8 O7 W一个具体执行步骤,其包括ItemReader、ItemProcessor、ItemWriter
- O* T6 g0 _* M( k% I! ?$ vItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据
& Z0 x$ b; V3 h- K, R 5.png " r! d  b0 B8 D8 Q

* {7 o5 U/ K: Z, |2 f2 D4 G4、JobRepository8 D+ w  s7 V6 r9 N: e+ D
记录任务运行状态信息: Z0 G  f1 I) T7 w2 o1 [! i
Spring Batch会默认在数据库里面创建一些batch相关的表,来记录所有job/step运行的状态和结果2 z4 [4 {' `$ n* A  ]
涉及表:
3 }$ D4 p+ S) ]batch_job_execution& y5 y2 D9 Y0 u0 f# H8 l
batch_job_execution_context
) Q, Y9 p% }6 }9 kbatch_job_execution_params
$ p5 e, R* U/ ]1 S& S, n7 ybatch_job_execution_seq0 ?7 i1 }* V& Y- l$ O$ U3 H
batch_job_instance
' F  s6 Z) T4 Zbatch_job_seq! b: ?6 u' D3 o5 x# Q: v6 Y
batch_step_execution
( `  e  H" E# _, K! Pbatch_step_execution_context
( Y0 Z) v  o( y( Ibatch_step_execution_seq
- {/ x1 Z* p2 W9 S" v" K& C6 a6 x3 w. X& b+ J& }# `) m! u
以上,就是对Spring Batch的一个整体认识,希望SpringBatch中文社区能在SpringBatch学习的道路上帮助。
5 e) I" Q$ K' f2 H+ Z0 }& V$ Z9 h. c. B( v( m% E) R

7 V2 c) D4 N& N. r+ u5 o! g
回复

举报 使用道具

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