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

0 评论

0 收藏

分享

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

现在有很多项目都有批量处理需求,比如:1 i7 z6 B3 c  h* u0 f: H- C  @! A
(1)自动,复杂地处理海量信息,无需用户参与即可有效地进行处理
6 L9 t( }$ J7 n  F(2)定期操作非常大的数据集重复处理复杂的业务规则
7 d4 N  S1 ^" A) T/ |: H& u(3)从内部和外部系统接收信息的集成,需要格式化,验证和以事务方式进行处理,并落到系统中
% ^2 t2 ~. ~( {遇到以上类似场景,就可以考虑使用SpringBatch框架了" j# p- T0 O( t# r' C" N) f: }; o

' k* C; X/ \( f- r% X6 q一、Spring Batch到底是什么! l: U) p8 i. Z5 q
Spring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序,是Spring提供的一个数据操作处理框架,其处理过程如下图
6 G8 ]9 k# y/ I- b. M0 ? 1.png # F& r+ Z( h: j; P  c, O  x8 x1 Q. X8 X
. F& {9 t8 M& z' K! Q7 R! C
二、应用场景(SpringBatch作用
! {7 l, Z( D/ ?8 Z7 H$ x) w9 [1、从数据库,文件或队列中等多数据源读取海量记录( [4 l" _4 d9 I, m4 x" [. m
2、以某种方式处理数据
; K& V$ ]( C, K! G7 A8 W/ B3、以修改后的形式回写数据到指定数据源
% n& f- K9 w" u( w/ L0 ]* \' O' C; z+ }- A* s4 b% E6 S* H
三、Spring Batch架构组成/ e' Y  K: S, K2 w
Spring Batch有三个重要组成部分:应用层、核心层、基础架构层
$ O( c  t2 i7 D5 m* U' C8 k3 E3 W 1.jpeg . E2 F8 Y/ p5 w' R# R. B
* Z$ G; c4 P# {  ~" n0 }6 d
1、Application
' {7 ]- `. i/ n' B' K; p2 b应用层包含所有的批处理作业,通过Spring框架管理自定义的代码。
. E' _9 g& D4 l. |8 y; q8 x* d
( c0 a: s. c. e' |9 L6 c& w2、Batch Core) Y; ~0 U  a. ~$ T7 T0 T3 v! Q
核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。' {  V4 h& _$ f# Z  c: A8 t
3 ]8 u% ^9 j; z' I) p
3、Batch Infrastructure
, ?3 _4 X+ X4 s9 \5 M" d+ N基础构架层提供公共的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块)
6 y2 Q1 k0 }- ]7 ], N  k应用层和核心层建立在基础构架层之上3 a7 ~# m' t5 _5 r

" E$ G" ]  k" D. k& q& c; F四、作业的配置和运行# Y) g) D2 j6 n( `$ q
总体体系结构" t) F, {4 \- M( j
2.jpeg
  u/ ^9 Z9 Y2 C5 L. L7 `# V  x: V1 Z: x, o. @% @. C' @. X
1、JobLauncher
5 M+ |7 Q( v9 l3 M启动任务,作业将在JobLauncher相同的线程中执行. w& d) W! u6 w! `- E
当作业运行时,会创建一个JobInstance,JobInstance代表作业的一次运行逻辑,可通过作业名称和传递给作业的识别性参数来标识。
% O, L% j* H: _, B. y0 I. A" ?JobExecution是真正地运行作业,每次运行JobInstance,都会创建新的JobExecution1 d7 H% j, |5 M0 i: L8 l9 K( C3 n
3.jpeg
3 y0 {8 z1 ]( X: z) O
; l9 O1 a: E0 r9 h" M/ iJobInstance只有一次能成功执行,因为JobInstance通过作业名称和传入的识别性参数来标识。
% F4 ^6 N* `% V6 f6 a0 V) q4 Q3 q9 l) D! j
2、Job
6 `: P4 l% a" ]) v( u. x一个具体的任务,一个Job中可有多个Step
7 a" ~8 Y: u" N! u
8 Y4 |- e+ Y! R5 @9 H# U2 b3、Step% Y! i. E" ]: Z. y  g! S3 ~
一个具体执行步骤,其包括ItemReader、ItemProcessor、ItemWriter
2 z; E- _! v0 U( A6 F+ y5 {+ Y* X, BItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据
$ _) W# W- O% R( x" f8 M2 U 5.png 1 J+ |2 h6 y" H
8 d2 v$ y! y9 r$ _+ B) M% u% D& b
4、JobRepository7 `1 H. E" N- E# N0 V
记录任务运行状态信息- J0 M7 y2 Q: D, w4 S# h% D, x
Spring Batch会默认在数据库里面创建一些batch相关的表,来记录所有job/step运行的状态和结果
5 X$ X7 _( ?$ w' `0 l涉及表:
# Z" O9 e2 o* h/ P- cbatch_job_execution3 f# O/ d" h  _3 r
batch_job_execution_context' U3 @, {( ]! p  o" ^
batch_job_execution_params; M; U7 `2 N* u' B) ]
batch_job_execution_seq( s2 l* B4 O, [" X8 z
batch_job_instance
1 p0 S! a; U& [; [batch_job_seq
3 D! p0 `  \) Rbatch_step_execution$ j1 v- [! a: z/ L6 L. R8 U7 j
batch_step_execution_context
( n7 f0 C2 @% x) k1 X# Qbatch_step_execution_seq; z4 i1 F# ^( B/ i  `# R: }

7 g- P3 a& ]9 K5 t, P. l以上,就是对Spring Batch的一个整体认识,希望SpringBatch中文社区能在SpringBatch学习的道路上帮助。# ~+ M( k9 l% M/ t, m8 z/ p
% Y" x( z; G% D4 Q/ L" G

& s* r- a  t& l$ |% i* o8 v0 o
回复

举报 使用道具

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