批處理框架


什么是批處理?

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

為什么使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM