0 评论

0 收藏

分享

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

现在有很多项目都有批量处理需求,比如:3 o8 p) v: Q( L! n0 C& e7 Q
(1)自动,复杂地处理海量信息,无需用户参与即可有效地进行处理# M8 A" k+ @. f% e) J- b/ s
(2)定期操作非常大的数据集重复处理复杂的业务规则
; M" z( M: H1 i$ e' N$ q3 L8 C( d(3)从内部和外部系统接收信息的集成,需要格式化,验证和以事务方式进行处理,并落到系统中+ K5 z( q- D0 _9 I, I. `& r1 `6 q
遇到以上类似场景,就可以考虑使用SpringBatch框架了
( ]% T4 M9 g$ O
, o9 z, h/ G/ r: b一、Spring Batch到底是什么; _: r; X7 p' t) A8 i
Spring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序,是Spring提供的一个数据操作处理框架,其处理过程如下图" T) J7 N! P: k+ e
1.png 0 ~$ `# v: B! S5 I( B; `

' R# M! {3 T  D" h# a5 z: s二、应用场景(SpringBatch作用+ W) T8 e0 q/ x% j& ]3 Z/ B6 U9 f
1、从数据库,文件或队列中等多数据源读取海量记录
/ I, I5 T% I( c7 ]" i' {; A2、以某种方式处理数据. y. i/ T7 x1 d$ @! S
3、以修改后的形式回写数据到指定数据源& V6 G2 |3 A. o
: ]) m- F% \$ Z3 V
三、Spring Batch架构组成$ U, e' D. ?- R+ |- n& D
Spring Batch有三个重要组成部分:应用层、核心层、基础架构层( S! s9 g' N7 Y% n
1.jpeg
! M: S. Q2 E' }/ b, G- d
8 n, c4 C3 v  S3 e1、Application
& B  n# |" o5 [8 ~0 t: \  \应用层包含所有的批处理作业,通过Spring框架管理自定义的代码。: d5 N2 m' U) @. _; Z
, x* x0 F& E. s: Q
2、Batch Core
, i4 w% I0 [3 \2 u+ x& }( ^" M6 `核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。
/ k8 ]6 z- l6 p8 P/ r  {
% N+ R: q0 _% s' R3、Batch Infrastructure
4 l5 z1 K+ \) {' y基础构架层提供公共的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块)
; g" W4 `& ~8 B# g7 T, H应用层和核心层建立在基础构架层之上
8 C$ E1 Z# m: c7 V, @( W3 ?6 K; E0 a6 e7 K' v
四、作业的配置和运行* L2 F7 T( \) p1 t+ ]1 t+ ?4 L
总体体系结构  A- h, z0 y) b
2.jpeg 0 f, o/ T. s0 }: M4 d- g
$ N7 |! s$ b/ Q! P1 C4 F
1、JobLauncher
/ b! m  H6 |8 P& G8 n启动任务,作业将在JobLauncher相同的线程中执行
/ j% t7 t, z3 E2 i, S当作业运行时,会创建一个JobInstance,JobInstance代表作业的一次运行逻辑,可通过作业名称和传递给作业的识别性参数来标识。- X7 I# [# l; i& u1 C4 e
JobExecution是真正地运行作业,每次运行JobInstance,都会创建新的JobExecution( |8 z/ V; L  W; A$ S( s
3.jpeg 9 A  ~3 K) e. Q) C) q% K* Q$ J

/ P0 A% G, e; m4 I6 W% y" E7 E& rJobInstance只有一次能成功执行,因为JobInstance通过作业名称和传入的识别性参数来标识。
2 {5 [& o  h1 Q- |, R- I' p9 a% {8 H8 l' d# T" t
2、Job
( o; t+ K; `1 y9 P$ Z/ @# |  i! ^一个具体的任务,一个Job中可有多个Step+ Y' n5 n* _8 ~# S& Q9 b* \

$ b! d/ R+ X8 s' k1 _3 l& T3、Step
: A/ u- H" }4 D/ H8 c; a1 ^一个具体执行步骤,其包括ItemReader、ItemProcessor、ItemWriter+ _: v- P" |, G# R
ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据
- a6 ?9 R) p, R6 `4 p 5.png
+ U1 q- {+ _3 Z+ O
5 b) k; q; ~; e  c6 {4、JobRepository
) \) e& y  @' |* P: Y6 m5 B记录任务运行状态信息
- d! Q$ Y1 N" f8 s- RSpring Batch会默认在数据库里面创建一些batch相关的表,来记录所有job/step运行的状态和结果
" o* Y/ ~2 ?, n; F  U涉及表:
3 F0 f' Y/ I5 C/ vbatch_job_execution2 a2 j# f' e5 {- I7 A! l5 x
batch_job_execution_context8 I+ I: r# S, _9 p& `
batch_job_execution_params
4 g& O4 X% E2 x0 @; r* v* D( Rbatch_job_execution_seq
& W3 W( q& w* dbatch_job_instance) k" `1 [5 t4 \- q& O: w# `
batch_job_seq
8 {" Y# P% {9 }9 X. h7 Ibatch_step_execution
  @5 W+ R  C7 `batch_step_execution_context
- w' Q5 ]' }9 Y3 I4 Ebatch_step_execution_seq+ ^$ J" z1 n$ D/ u
% m. f+ S+ B9 h
以上,就是对Spring Batch的一个整体认识,希望SpringBatch中文社区能在SpringBatch学习的道路上帮助。" M4 K, @" U  O2 Y( v

( k$ G' A/ Y4 R2 S3 x, ~3 G& m
7 c: M3 b  U" k
回复

举报 使用道具

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