Spring Batch 簡介

企業領域中的許多應用程式需要進行批次處理,以便在任務關鍵型環境中執行業務操作。這些業務操作包括:

  • 對大量資訊進行自動化、複雜的處理,這些資訊最有效地無需使用者互動即可處理。這些操作通常包括基於時間的事件(例如月末計算、通知或通訊)。

  • 對超大資料集重複應用複雜的業務規則(例如,保險福利確定或費率調整)。

  • 整合從內部和外部系統接收到的資訊,這通常需要以事務方式格式化、驗證並處理到記錄系統中。批處理每天為企業處理數十億筆事務。

Spring Batch 是一個輕量級、全面的批處理框架,旨在開發強大的批處理應用程式,這些應用程式對於企業系統的日常執行至關重要。Spring Batch 建立在人們所期望的 Spring Framework 特性之上(生產力、基於 POJO 的開發方法和普遍易用性),同時使開發人員在需要時能夠輕鬆訪問和使用更高階的企業服務。Spring Batch 不是一個排程框架。在商業和開源領域都有許多優秀的企業排程器(例如 Quartz、Tivoli、Control-M 等)。Spring Batch 旨在與排程器協同工作,而不是取代排程器。

Spring Batch 提供可重用功能,這些功能對於處理大量記錄至關重要,包括日誌和跟蹤、事務管理、作業處理統計、作業重啟、跳過和資源管理。它還提供更高階的技術服務和功能,透過最佳化和分割槽技術實現極高吞吐量和高效能的批處理作業。您可以在簡單的用例(例如將檔案讀入資料庫或執行儲存過程)和複雜的、高吞吐量的用例(例如在資料庫之間移動大量資料、轉換資料等)中使用 Spring Batch。高吞吐量的批處理作業可以以高度可擴充套件的方式使用該框架來處理大量資訊。

背景

儘管開源軟體專案和相關社群已將更多注意力集中在基於 Web 和基於微服務的架構框架上,但在容納基於 Java 的批處理需求的方面,可重用架構框架卻明顯缺乏關注,儘管企業 IT 環境中仍需要處理此類任務。缺乏標準、可重用的批處理架構導致在客戶企業 IT 職能部門內部開發了許多一次性、內部解決方案。

SpringSource(現為 VMware)和埃森哲(Accenture)合作改變了這一局面。埃森哲在實施批處理架構方面的實踐行業和技術經驗,SpringSource 深厚的技術經驗,以及 Spring 成熟的程式設計模型,共同形成了自然而強大的合作伙伴關係,旨在建立高質量、市場相關的軟體,以填補企業 Java 中的重要空白。兩家公司與一些客戶合作,這些客戶透過開發基於 Spring 的批處理架構解決方案來解決類似問題。這些輸入提供了一些有用的額外細節和現實世界的約束,有助於確保該解決方案可以應用於客戶提出的實際問題。

埃森哲將其之前專有的批處理架構框架貢獻給 Spring Batch 專案,同時貢獻了提交者資源以推動支援、增強和現有功能集。埃森哲的貢獻基於數十年來使用最近幾代平臺構建批處理架構的經驗:大型機上的 COBOL、Unix 上的 C++,以及現在的 Java。

埃森哲和 SpringSource 之間的合作旨在促進軟體處理方法、框架和工具的標準化,企業使用者可以在建立批處理應用程式時始終如一地使用這些方法、框架和工具。希望為其企業 IT 環境提供標準、經過驗證解決方案的公司和政府機構可以從 Spring Batch 中受益。

使用場景

典型的批處理程式通常會:

  • 從資料庫、檔案或佇列中讀取大量記錄。

  • 以某種方式處理資料。

  • 以修改後的形式寫回資料。

Spring Batch 自動化了這種基本的批處理迭代,提供了以一組形式處理類似事務的能力,通常在離線環境中進行,無需任何使用者互動。批處理作業是大多數 IT 專案的一部分,而 Spring Batch 是唯一提供健壯、企業級解決方案的開源框架。

業務場景

Spring Batch 支援以下業務場景:

  • 定期提交批處理。

  • 併發批處理:作業的並行處理。

  • 分階段、訊息驅動的企業處理。

  • 大規模並行批處理。

  • 失敗後手動或計劃重啟。

  • 依賴步驟的順序處理(以及工作流驅動批處理的擴充套件)。

  • 部分處理:跳過記錄(例如,在回滾時)。

  • 整批事務,適用於小批次或現有儲存過程或指令碼的情況。

技術目標

Spring Batch 具有以下技術目標:

  • 讓批處理開發人員使用 Spring 程式設計模型:專注於業務邏輯,讓框架負責基礎設施。

  • 在基礎設施、批處理執行環境和批處理應用程式之間提供清晰的關注點分離。

  • 提供通用的核心執行服務作為所有專案都可以實現的介面。

  • 提供核心執行介面的簡單預設實現,可“開箱即用”。

  • 透過在所有層中使用 Spring 框架,輕鬆配置、自定義和擴充套件服務。

  • 所有現有核心服務都應易於替換或擴充套件,而不會對基礎設施層產生任何影響。

  • 提供簡單的部署模型,架構 JAR 與應用程式完全分離,使用 Maven 構建。

© . This site is unofficial and not affiliated with VMware.