一文輕鬆搞定批處理框架 Spring Batch

tianxiaoxu發表於2018-07-06

【本文轉自部落格園  作者:張鋒  原文連結:https://www.cnblogs.com/skyme/p/7524764.html】
什麼是批處理?

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

為什麼使用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 結構

一文輕鬆搞定批處理框架 Spring Batch

Spring Batch 流程

一文輕鬆搞定批處理框架 Spring Batch

Step執行過程

應用場景

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

後續計劃:

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

備註

官網:

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

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31137683/viewspace-2157480/,如需轉載,請註明出處,否則將追究法律責任。

相關文章