批處理框架

skyme發表於2017-09-15

什麼是批處理?

在現代企業應用當中,面對複雜的業務以及海量的資料,除了通過龐雜的人機互動介面進行各種處理外,還有一類工作,不需要人工干預,只需要定期讀入大批量資料,然後完成相應業務處理並進行歸檔。這類工作即為“批處理”

為什麼使用Spring Batch

Spring Batch 作為 Spring 的子專案,是一款基於 Spring 的企業批處理框架。通過它可以構建出健壯的企業批處理應用。Spring Batch 不僅提供了統一的讀寫介面、豐富的任務處理方式、靈活的事務管理及併發處理,同時還支援日誌、監控、任務重啟與跳過等特性,大大簡化了批處理應用開發,將開發人員從複雜的任務配置管理過程中解放出來,使他們可以更多地去關注核心的業務處理過程。

另外我們還需要知道,Spring Batch 是一款批處理應用框架,不是排程框架。它只關注批處理任務相關的問題,如事務併發監控執行等,並不提供相應的排程功能。因此,如果我們希望批處理任務定期執行,可結合 Quartz 等成熟的排程框架實現。

Spring Batch的整體架構

分三層:應用層,核心層,基礎設施層。應用層包括所有的batch任務和使用者開發的程式碼。核心層包括在執行期執行一個任務所需要的類,例如:JobLauncher,Job和Step的實現。應用和核心層都在基礎設施層之上,基礎設施層包括通用的讀寫器(readers and writers)以及如RetryTemplate等服務。

Spring Batch 結構

Spring Batch 流程

Step執行過程

應用場景

  • 定期提交批處理任務
  • 併發批處理:並行執行任務
  • 分階段,企業訊息驅動處理
  • 高併發批處理任務
  • 失敗後手動或定時重啟
  • 按順序處理任務依賴(使用工作流驅動的批處理外掛)
  • 區域性處理:跳過記錄(例如在回滾時)
  • 完整的批處理事務:因為可能有小資料量的批處理或存在儲存過程/指令碼

後續計劃:

對現有資料量使用多執行緒的方式處理,根據業務量擴充套件,可以配置成多程式加多執行緒方式處理。對於海量資料,使用叢集,短期內應該不會達到。

備註

官網:https://projects.spring.io/spring-batch/

相關介紹:http://blog.jobbole.com/109857/

https://www.ibm.com/developerworks/cn/java/j-lo-springbatch1/

 

我的部落格即將搬運同步至騰訊雲+社群,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan