您好,登錄后才能下訂單哦!
spring batch框架的簡介
批處理任務是大多數IT項目的一個重要組成部分,批處理在業務系統中負責處理海量的數據,無須人工干預就能夠自動高效的進行復雜的數據分析和處理。批處理會定期讀入批量數據,經過相應的業務處理進行歸檔的業務操作,批處理的特征是自動執行,處理的數據量大,定時執行。將整個批處理的流程按邏輯劃分可以分為讀數據,處理數據和寫數據。
spring batch對批處理本身的特性進行了抽象,將批處理作業抽象為job和job step,將批處理的處理過程分解為數據讀,數據處理和數據寫。
將異常處理機制分為跳過,重啟和重試。將作業的分區分為多線程,并行遠程和分區。
spring batch不是一個調度框架,但需要調度框架來配合完成批處理任務,它只關注批處理相關的任務問題,但沒有提供相應的調度功能,如果需要使用調度功能,需要使用調度框架,這里介紹一個比較常用的調度框架quartz,可以配合spring batch完成批處理的任務調度。
spring batch的架構分為三層:基礎架構層,核心層和應用層。應用層包含所有的批處理作業,核心層主要提供JobLauncher、Job和step,基礎架構層主要提供通用的讀(ItemReader)、寫(ItemWriter)和服務處理(如:RetryTemplate重試模板;RepeatTemplate:重復模板),Spring
batch的三層架構體系使得Spring batch框架可以在不同的層級進行擴展,避免不同層級之間的相互影響。
job的介紹
批處理的作業是由一組step組成,同時job本身也是配置文件的頂級元素。每個作業都有自己的名字,可以定義step的執行順序,以及定義作業是否可以重啟。job執行的時候會生成一個job instance(作業實例)和一個job execution(作業執行器)。job instance包含執行job期間產生的數據以及job執行的狀態信息;1個job可以對應多個job instance,1個job instance可以對應多個job execution。
job的配置的主要屬性有id(作業的唯一標識)、job-repository(定義作業倉庫)、incrementer(作業參數遞增器)、restartable(作業是否重啟)、parent(指定該作業的父作業)、abstract(定義作業是否抽象)。
step的介紹
step表示作業中一個完整的步驟,一個job可以由一個或者多個step組成,step主要負責批處理運行過程中的主要業務邏輯的實現。每次step執行的時候會生成一個或者多個job execution,每次任務執行失敗的時候,等到下次重新執行該任務的時候就會為該任務的step重新生成一個step execution。
step可以配置tasklet、partition、job、flow。
step一般主要配置itemReader、itemProcess和itemWriter來完成批處理的業務邏輯處理。
job repository的介紹
job repository主要用來存儲job運行期間的元數據(這些元數據包括job instance、job execution、job parameters、step execution、execution context等數據)。
spring batch框架進行元數據管理的時候共有9張表,其中有3張表(后綴是SEQ)用來分配主鍵的,這9張表分別是
BATCH_JOB_INSTANCE:作業實例表
BATCH_JOB_EXECUTION:作業執行器表
BATCH_JOB_EXECUTION_PARAMS:作業參數表
BATCH_STEP_EXECUTION:作業步執行器表
BATCH_JOB_EXECUTION_CONTEXT:作業執行上下文表
BATCH_STEP_EXECUTION_CONTEXT:作業步執行上下文表
BATCH_JOB_EXECUTION_SEQ:作業執行器序列表
BATCH_STEP_EXECUTION_SEQ:作業步序列表
BATCH_JOB_SEQ:作業序列表
itemReader的介紹
itemReader是Step中對資源的讀處理,Spring batch框架提供了大量的直接可用的讀組件可以快速的完成批處理應用的開發和構建,同時框架也提供了較好的復用和擴展組件,開發者可以自定義實現。
ListItemReader:讀取List數據,只能讀一次。
ItemReaderAdapter:ItemReader適配器,可以復用現有的讀操作。
FlatFileItemReader:讀Flat類型文件。
StaxEventItemReader:讀XML類型文件。
JdbcCursorItemReader:基于JDBC游標方式讀數據庫。
HibernateCursorItemReader:基于hibernate游標方式讀取數據庫。
StoredProcedureItemReader:基于存儲過程讀取數據庫。
IbatisPagingItemReader:基于Ibatis分頁讀取數據庫。
JpaPagingItemReader:基于jpa方式分頁讀取數據庫。
JdbcPagingItemReader:基于jdbc方式分頁讀取數據庫。
HibernatePagingItemReader:基于Hibernate方式分頁讀取數據庫。
JmsItemReader:讀取jms隊列。
IteratorItemReader:迭代方式的讀組件。
MultiResourceItemReader:多文件讀取組件。
MongoItemReader:基于分布式存儲MongoDB讀組件。
Neo4jItemReader:面向網格數據庫Neo4j讀組件。
ResourcesItemReader:基于批量資源的讀組件。
AmqpItemReader:讀取AMQP隊列組件。
RepositoryItemReader:基于Spring Data的讀組件。
itemProcess的介紹
itemProcess階段表示對讀取數據進行處理,開發者可以在這里面實現自己的業務操作。
CompositeItemProcessor:組合處理器,可以封裝多個業務處理服務。
ItemProcessorAdapter:適配器,可以復用現有的業務處理服務。
PassThroughItemProcessor:不做業務處理,直接返回讀取數據。
ValidatingItemProcessor:數據校驗處理器,支持對數據的校驗,如果校驗不通過可以進行過濾或者跳過skip的方式來處理記錄。
itemWriter的介紹
itemWriter是step中對資源的寫處理,Spring batch框架提供了大量的直接可用的寫組件可以快速的完成批處理應用的開發和構建,同時框架也提供了較好的復用和擴展組件,開發者可以自定義實現。
FlatFileItemWriter:寫flat類型文件。
MultiResourceItemWriter:多文件寫組件。
StaxEventItemWriter:寫XML類型文件。
AmqpItemWriter:寫AMQP類型消息。
ClassifierCompositeItemWriter:根據Classifier路由不同的Item到特定的ItemWriter處理。
HibernateItemWriter:基于Hibernate方式寫數據庫。
IbatisBatchItemWriter:基于Ibatis方式寫數據庫。
ItemWriterAdapter:適配器,可以復用現有的寫服務。
JdbcBatchItemWriter:基于JDBC方式寫數據庫。
JmsItemWriter:寫JMS隊列。
JpaItemWriter:基于jpa方式寫數據庫。
GemfireItemWriter:基于分布式數據庫Gemfire的寫組件。
SpELMappingGemfireItemWriter:基于spring表達式語言寫分布式數據庫Gemfire的組件。
MimeMessageItemWriter:發送郵件的寫組件。
MongoItemWriter:基于分布式文件存儲數據庫MongoDB寫組件。
Neo4jItemWriter:面向網絡數據庫Neo4j的讀組件。
PropertyExtractingDelegatingItemWriter:屬性抽取代理寫組件。
RepositoryItemWriter:基于Spring Data的寫組件。
SimpleMailMessageItemWriter:發送郵件的寫組件。
CompositeItemWriter:條目寫的組合模式,支持組裝多個ItemWriter。
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。