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

0 评论

0 收藏

分享

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

现在有很多项目都有批量处理需求,比如:
9 S/ a4 P* e" g, P/ K: T1 i3 H(1)自动,复杂地处理海量信息,无需用户参与即可有效地进行处理+ T- K5 \& L: \% N% ^3 k
(2)定期操作非常大的数据集重复处理复杂的业务规则: F4 V  X# C2 `9 o$ ]# Y7 T. u" i7 A
(3)从内部和外部系统接收信息的集成,需要格式化,验证和以事务方式进行处理,并落到系统中
( n6 G; @. h/ v1 u; L. Z  y遇到以上类似场景,就可以考虑使用SpringBatch框架了
  r+ u* O$ {/ X6 C+ z- [* c' c8 l7 l- _  O1 ?) l0 {! \% p
一、Spring Batch到底是什么
: P5 y" @3 p% y! ^- LSpring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序,是Spring提供的一个数据操作处理框架,其处理过程如下图+ [* H) t: {, F% c- R, J
1.png , [5 l2 C/ V( x$ R) a" h1 f  @
$ l# @0 S! _+ i, g# L/ H
二、应用场景(SpringBatch作用
7 V/ ?4 h9 ]( i; C( G* C' P1、从数据库,文件或队列中等多数据源读取海量记录2 w+ L) R( C3 A; \- f
2、以某种方式处理数据8 x5 p5 K8 n) y4 K9 U) \
3、以修改后的形式回写数据到指定数据源
3 _, ?/ T( y( f" l( O6 R# L7 D3 T5 C# _1 _. {
三、Spring Batch架构组成- x% E( x' q  q. R" R& G
Spring Batch有三个重要组成部分:应用层、核心层、基础架构层( Q% V" A* x$ ?' g) \* ]
1.jpeg
6 L# w2 h. n" \# k7 D# I7 J# I& O$ N9 p8 v  D3 a$ J
1、Application9 N, Y7 w7 O  Y: |! L$ W2 r
应用层包含所有的批处理作业,通过Spring框架管理自定义的代码。
* d* o( O# {0 o+ P
) r8 a9 {5 |9 v4 R2、Batch Core% n- c& f" ?' a! q3 V
核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。
. ~/ c0 K* ^% S4 `5 y8 q8 P" t: s3 ~' G, e
3、Batch Infrastructure7 b3 b: ]6 u7 f
基础构架层提供公共的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块)% i* E5 l! |# s+ J- S
应用层和核心层建立在基础构架层之上
0 w/ E# ~/ K9 D8 O5 e- }# h% f
四、作业的配置和运行$ H3 n  w$ D. }8 `7 R" D
总体体系结构3 r  T( B. B1 M0 p/ _% j- u
2.jpeg
; ^( W: b5 s3 ]8 Q; K& C4 }0 l  e
$ p  a1 J' H0 [( X+ i5 G3 F7 |5 P% J/ x1、JobLauncher
' B8 [# l% V' ?0 Y: E0 J- Q) Z启动任务,作业将在JobLauncher相同的线程中执行8 V4 g# }0 o4 g
当作业运行时,会创建一个JobInstance,JobInstance代表作业的一次运行逻辑,可通过作业名称和传递给作业的识别性参数来标识。
& S* J9 i# c  _JobExecution是真正地运行作业,每次运行JobInstance,都会创建新的JobExecution
5 D4 c% y0 Q( ~# j  P+ U. [* v 3.jpeg
+ h( ]8 F$ a% s# V
( H: ]& }* ~8 D5 ^  yJobInstance只有一次能成功执行,因为JobInstance通过作业名称和传入的识别性参数来标识。
( n$ Q* ^, \: P. z. S: a0 b2 h3 `2 |8 z7 e4 r6 y/ c/ m
2、Job$ w2 ^% j1 J) S1 e' ~
一个具体的任务,一个Job中可有多个Step5 I% L+ v2 ^8 Y1 |/ A6 P

6 P+ E2 m" G, {9 f4 h3、Step
- L- c- U) L2 D) ^一个具体执行步骤,其包括ItemReader、ItemProcessor、ItemWriter
4 e  F& Y! }  W  W  E7 ?1 @. G1 iItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据
! E* o% c+ [5 N" L: {5 h! C: x 5.png
/ ^- I) T5 U5 i* }3 ?6 }& f: @, p6 C) x3 D) n1 v  {
4、JobRepository2 K9 m5 M9 c1 o2 p' w$ O1 j
记录任务运行状态信息5 B# q8 g- ^( M5 s; m5 B3 r
Spring Batch会默认在数据库里面创建一些batch相关的表,来记录所有job/step运行的状态和结果
2 T/ o( h/ s; E1 a" W& n; ^1 I. Z涉及表:& l3 I2 Z0 j' _9 w' n/ L6 @
batch_job_execution
) b( g4 t* J% L1 s3 cbatch_job_execution_context
) A- c! w# f7 Jbatch_job_execution_params/ d: Z1 `( T" d. F- L) b; n
batch_job_execution_seq8 M; s- u0 @+ T0 W1 m4 ]9 W
batch_job_instance
" o% I' [. u" nbatch_job_seq& \" w! Q, O5 _! }$ l* z3 f) Z; }$ |
batch_step_execution
  U, X+ `) q3 S# Y+ D1 V7 gbatch_step_execution_context% R4 u! {; F& m% P8 v  s
batch_step_execution_seq8 t7 a9 A- v, c; n

/ {' J: ?" @% U! E; w* l: @以上,就是对Spring Batch的一个整体认识,希望SpringBatch中文社区能在SpringBatch学习的道路上帮助。- s+ O) \! S, {
3 J$ v6 R" W. i

8 K4 X# E. o, i3 k# a2 e' C
回复

举报 使用道具

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