Spring Batch 是一個輕量級的、完善的批處理框架,旨在幫助企業建立健壯、高效的批處理應用。Spring Batch是Spring的一個子項目,使用Java語言并基于Spring框架為基礎開發,使得已經使用 Spring 框架的開發者或者企業更容易訪問和利用企業服務。Spring Batch 提供了大量可重用的組件,包括了日志、追蹤、事務、任務作業統計、任務重啟、跳過、重復、資源管理。對于大數據量和高性能的批處理任務,Spring Batch 同樣提供了高級功能和特性來支持,比如分區功能、遠程功能。總之,通過 Spring Batch 能夠支持簡單的、復雜的和大數據量的批處理作業。Spring Batch 是一個批處理應用框架,不是調度框架,但需要和調度框架合作來構建完成的批處理任務。它只關注批處理任務相關的問題,如事務、并發、監控、執行等,并不提供相應的調度功能。如果需要使用調度框架,在商業軟件和開源軟件中已經有很多優秀的企業級調度框架(如 Quartz、Tivoli、Control-M、Cron 等)可以使用。
簡介
Spring Batch是一個批處理的框架,作為一個 Spring 組件,提供了通過使用 Spring 的依賴注入(dependency injection) 來處理批處理的條件。Spring Batch 1.0.0于2008年3月向公眾發布,而Spring Batch 2.0.0則在2009年4月發布,顯示了該框架的持續發展和改進。
業務場景
周期性的提交批處理
把一個任務并行處理
消息驅動應用分級處理
大規模并行批處理
手工或調度使任務失敗之后重新啟動
有依賴步驟的順序執行(使用工作流驅動擴展)
處理時跳過部分記錄
成批事務:為小批量的或有的存儲過程/腳本的場景使用
技術目標
開發者使用Spring編程模型,編寫具體的業務邏輯。SpringBatch框架提供基礎服務。
清楚的區分基礎服務、執行環境和應用的關系
提供基本的執行服務接口。所有的項目都可以去實現這些接口
提供基本的執行服務的缺省實現。可以直接拿來使用。
可以在框架各層上方便的配置、定制以及擴展
核心服務可以在基礎服務不受任何影響的情況下輕松的替換或擴展。
提供一個基本的部署模型。框架的Jar包完全獨立于應用
架構圖
Spring Batch使用三層架構,三層分別為應用、核心和基礎服務。應用層是用戶寫的批處理任務。核心層包含執行和控制任務必須的核心類。如JobLauncher、Job和Step的實現。應用和核心層基于一層公用的基礎服務。基礎服務包括通用的Reader,Writers,RetryTemplate。
優勢
Spring Batch 是 SpringSource 和 埃森哲(埃森哲)合作開發的。Accenture 在批處理架構上有著豐富的工業級別的經驗,貢獻了之前專用的批處理體系框架(這些框架歷經數十年研發和使用,為Spring Batch提供了大量的參考經驗);SpringSource則有著深刻的技術認知和Spring框架編程模型。Spring Batch 框架通過提供豐富的即開即用的組件、和高可靠性、高擴展性的能力,使得開發批處理應用的人員專注于業務的處理,提升批處理應用的開發效率,通過 Spring Batch 可以快速的構建出輕量級的健壯的并行處理應用。此外,關于Spring Batch已經出版了幾本書,為開發者提供了更多的學習資源和參考資料。
參考資料 >