1. 程式人生 > 實用技巧 >Spring-Batch批處理框架

Spring-Batch批處理框架

>>> hot3.png

官方地址:http://spring.io/guides/gs/batch-processing/

Spring Batch是一個輕量級的,完全面向Spring的批處理框架,可以應用於企業級大量的資料處理系統。Spring Batch以POJO和大家熟知的Spring框架為基礎,使開發者更容易的訪問和利用企業級服務。Spring Batch可以提供大量的,可重複的資料處理功能,包括日誌記錄/跟蹤,事務管理,作業處理統計工作重新啟動、跳過,和資源管理等重要功能。

業務方案:

  1. 批處理定期提交。
  2. 並行批處理:並行處理工作。
  3. 企業訊息驅動處理
  4. 大規模的並行處理
  5. 手動或是有計劃的重啟
  6. 區域性處理:跳過記錄(如:回滾)

技術目標:

  1. 利用Spring程式設計模型:使程式設計師專注於業務處理,讓Spring框架管理流程。
  2. 明確分離批處理的執行環境和應用。
  3. 提供核心的,共通的介面。
  4. 提供開箱即用(out of the box)的簡單的預設的核心執行介面。
  5. 提供Spring框架中配置、自定義、和擴充套件服務。
  6. 所有存在的核心服務可以很容的被替換和擴充套件,不影響基礎層。
  7. 提供一個簡單的部署模式,利用Maven構建獨立的Jar檔案。

Spring Batch的結構:

Spring Batch入門教程及其框架搭建

這 種分層結構有三個重要的組成部分:應用層、核心層、基礎架構層。應用層包含所有的批處理作業,通過Spring框架管理程式設計師自定義的程式碼。核心層包含了 Batch啟動和控制所需要的核心類,如:JobLauncher、Job和step等。應用層和核心層建立在基礎構架層之上,基礎構架層提供共通的讀 (ItemReader)、寫(ItemWriter)、和服務(如RetryTemplate:重試模組。可以被應用層和核心層使用)。

Spring Batch 框架流程簡單介紹

Spring Batch流程介紹:

Spring Batch入門教程及其框架搭建

上圖描繪了Spring Batch的執行過程。說明如下:

每個Batch都會包含一個Job。Job就像一個容器,這個容器裡裝了若干Step,Batch中實際幹活的也就是這些Step,至於Step幹什麼 活,無外乎讀取資料,處理資料,然後將這些資料儲存起來(ItemReader用來讀取資料,ItemProcessor用來處理數 據,ItemWriter用來寫資料) 。JobLauncher用來啟動Job,JobRepository是上述處理提供的一種持久化機制,它為JobLauncher,Job,和Step 例項提供CRUD操作。

外部控制器呼叫JobLauncher啟動一個Job,Job呼叫自己的Step去實現對資料的操作,Step處理完成後,再將處理結果一步步返回給上一層,這就是Batch處理實現的一個簡單流程。

Step執行過程:

Spring Batch入門教程及其框架搭建

從DB或是檔案中取出資料的時候,read()操作每次只讀取一條記錄,之後將讀取的這條資料傳遞給processor(item)處理,框架將重複做這 兩步操作,直到讀取記錄的件數達到batch配置資訊中”commin-interval”設定值的時候,就會呼叫一次write操作。然後再重複上圖的 處理,直到處理完所有的資料。當這個Step的工作完成以後,或是跳到其他Step,或是結束處理。

這就是一個SpringBatch的基本工作流程。

將通過“Hello World”例項,與大家共同探討SpringBatch的具體應用和實現。

工程結構如下圖:

Spring Batch入門教程及其框架搭建

執行結果如下:

Spring Batch入門教程及其框架搭建

原文:Spring Batch 簡介

Spring Batch_官網DEMO實現

轉載於:https://my.oschina.net/boonya/blog/735265