簡介
Spring Batch是一個批處理的框架,作為一個 Spring 組件,提供了通過使用 Spring 的 依賴注入(dependency injection) 來處理批處理的條件。
業務場景
· 周期性的提交批處理
· 把一個任務並行處理
· 訊息驅動套用分級處理
· 大規模並行批處理
· 手工或調度使任務失敗之後重新啟動
· 有依賴步驟的順序執行(使用工作流驅動擴展)
· 處理時跳過部分記錄
· 成批事務:為小批量的或有的存儲過程/腳本的場景使用
技術目標
· 開發者使用Spring編程模型,編寫具體的業務邏輯。SpringBatch框架提供基礎服務。
· 清楚的區分基礎服務、執行環境和套用的關係
· 提供基本的執行服務接口。所有的項目都可以去實現這些接口
· 提供基本的執行服務的預設實現。可以直接拿來使用。
· 可以在框架各層上方便的配置、定製已經擴展
· 核心服務可以在基礎服務不受任何影響的情況下輕鬆的替換或擴展。
· 提供一個基本的部署模型。框架的Jar包完全獨立於套用
架構圖
Spring Batch使用三層架構,三層分別為套用、核心和基礎服務。套用層是用戶寫的批處理任務。核心層包含執行和控制任務必須的核心類。如JobLauncher、Job和Step的實現。套用和核心層基於一層公用的基礎服務。基礎服務包括通用的Reader,Writers,RetryTemplate。
優勢
Spring Batch 是 SpringSource 和 Accenture(埃森哲)合作開發的。Accenture 在批處理架構上有著豐富的工業級別的經驗,貢獻了之前專用的批處理體系框架(這些框架歷經數十年研發和使用,為Spring Batch提供了大量的參考經驗);SpringSource則有著深刻的技術認知和Spring框架編程模型。
Spring Batch 框架通過提供豐富的即開即用的組件、和高可靠性、高擴展性的能力,使得開發批處理套用的人員專注於業務的處理,提升批處理套用的開發效率,通過 Spring Batch 可以快速的構建出輕量級的健壯的並行處理套用。