javascript
SpringBatch批处理框架入门(一)
目錄
SpringBatch簡介
批處理場景
批處理需求
?SpringBatch使用場景
SpringBatch架構介紹
SpringBatch分層架構如下
SpringBatch 總體架構
SpringBatch基于Mysql初始化表
SpringBatch簡介
????????Spring Batch是一個輕量級,全面的批處理框架,旨在開發對企業系統日常運營至關重要的強大批處理應用程序。Spring Batch建立在人們期望的Spring框架特性(生產力,基于POJO的開發方法和普遍的易用性)的基礎上,同時使開發人員可以在必要時輕松訪問和利用更高級的企業服務。 劃重點:Spring Batch不是一個調度框架,而是批處理框架。
批處理場景
????????在大型企業中,由于業務復雜、數據量大、數據格式不同、數據交互格式繁雜,并非所有的操作都能通過交互界面進行處理。而有一些操作需要定期讀取大批量的數據,然后進行一系列的后續處理。這樣的過程就是“批處理”。
批處理應用通常有以下特點:
- 數據量大,從數萬到數百萬甚至上億不等;
- 整個過程全部自動化,并預留一定接口進行自定義配置;
- 這樣的應用通常是周期性運行,比如按日、周、月運行;
- 對數據處理的準確性要求高,并且需要容錯機制、回滾機制、完善的日志監控等
批處理需求
批處理作業兩個典型特征是批量執行與自動執行(需要無人值守):前者能夠處理大批量數據的導入、導出和業務邏輯計算;后者無需人工干預,能夠自動化執行批量任務。
在關注其基本功能之外,還需要關注如下的幾點:
- 健壯性:不會因為無效數據或錯誤數據導致程序崩潰;
- 可靠性:通過跟蹤、監控、日志及相關的處理策略(重試、跳過、重啟)實現批作業的可靠執行;
- 擴展性:通過并發或者并行技術實現應用的縱向和橫向擴展,滿足海量數據處理的性能需求; 目前批處理框架SpringBatch正好可以滿足以上需求。
?SpringBatch使用場景
- 從數據庫,文件或隊列中讀取大量記錄。
- 以某種方式處理數據。
- 以修改后的形式寫回數據
其數據流轉示意圖如下:
?Spring Batch提供了可重用的功能,這些功能對于處理大量記錄至關重要,包括日志記錄/跟蹤,事務管理,作業處理統計信息,作業重啟,跳過和資源管理。
SpringBatch架構介紹
SpringBatch分層架構如下
????????
這種分層的體系結構突出了三個主要的高級組件:應用程序,核心和基礎結構。
- 該應用程序包含開發人員使用Spring Batch編寫的所有批處理作業和自定義代碼。
- 批處理核心包含啟動和控制批處理作業所需的核心運行時類。它包括實現 JobLauncher,Job和Step。
- ?基礎結構包含公用的讀取器和寫入器以及服務(例如RetryTemplate),應用程序開發人員(例如ItemReader和的讀取器和寫入器ItemWriter)和核心框架本身(重試,這是它自己的庫)都使用它們。
SpringBatch 總體架構
spring batch總體架構如下:
?在spring batch中一個job可以定義多個的步驟step,在每一個step里面可以定義其專屬的ItemReader用于讀取數據,ItemProcesseor用于處理數據,ItemWriter用于寫數據,而每一個定義的job則都在JobRepository里面,我們可以通過JobLauncher來啟動某一個job。
SpringBatch基于Mysql初始化表
當我們在使用SpringBatch時候,需要在數據庫中初始化9張表,以保證我們SpringBatch可以正常使用。初始化表sql語句是在我們的spring-batch-core包
下面的schema-mysql.sql文件。具體表名如下:
- batch_job_execution
- batch_job_execution_context
- batch_job_execution_params
- batch_job_execution_seq
- batch_job_instance
- batch_job_seq
- batch_step_execution
- batch_step_execution_context
- batch_step_execution_seq
以上對SpringBatch是做什么以及應用場景做了簡單介紹,下一章我們將對SpringBatch核心類做進一步介紹。如果大家喜歡我的文章可以一鍵三連,如果大家有什么不懂得可以進微信群來探討。
總結
以上是生活随笔為你收集整理的SpringBatch批处理框架入门(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBatch适配器详解
- 下一篇: SpringBatch批处理框架入门(二