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