1. 程式人生 > >Spring Batch批處理框架初探

Spring Batch批處理框架初探

關於spring batch

spring batch就是一個輕量級的批處理框架,他的輕量級是相對於MapReduce、Spark之類的叢集批處理架構來說的。雖然spring batch支援機器叢集,但是多用的是單機的多執行緒並行處理。

大家都知道MapReduce適合超大型資料量的批量處理,對於幾分鐘,幾十秒鐘的處理就不要放到Mapreduce上了,這隻會讓處理時間更長,因為MapReduce的任務分配和啟動過程就要消耗1-2分鐘。

另外對於一些不是特別複雜的批處理,如果手頭沒有Hadoop這樣的叢集可用,而且一臺電腦多執行緒處理就足夠應付時,spring batch會是一個很好的選則。(當然,如果寫一個簡單的批處理指令碼夠用,那麼,首選批處理指令碼。)

但是,由於官方的教程不太適合初學者不快速的上手,這篇教程是大概兩個禮拜時間集中看spring batch相關內容的總結。這裡整理的順序將會盡量從適合學習和入門。

spring batch能做什麼?

spring batch用來做批處理,批處理最早基本用來指指令碼,比如批處理指令碼,就是把一系列的操作寫到一個bat或者sh檔案裡面,一次呼叫,腳本里面的一系列操作就按照順序逐條指令執行了。

也就是說,批處理首先是能夠包含一系列的處理指令,並且可以指定順序,然後這些指令按照指定的順序執行。然而現如今是一個分散式的時代,和一個水平擴充套件遠大於單機效能的時代,大多優秀的產品都在支援並行或者叢集,spring batch在這兩方面支援的怎麼樣呢?

spring batch具備工作流引擎的相似功能,可以在xml配置檔案中配置一系列相互關聯的步驟。你需要配置一個任務(Job),在任務裡面定義多個Step,Step和Step之間通過next標籤指明前後關係。

同時,他支援同一個任務的多執行緒、多程序、多伺服器處理。接下來把相關資料分類整理如下:

基本使用

在這個最簡單的示例中,你會看到組成Job的Step可以是自定義的一個tasklet,也可以是使用spring batch提供的標準的ItemReader、ItemProcesser、ItemWriter組成的一個tasklet。

spring batch預設支援文字檔案、XML檔案、資料庫的讀和寫,提供了內建的ItemReader和ItemWriter。

結合quartz或者spring schedule定時觸發

多檔案讀入

spring batch並行處理

這一篇是中文的,寫的其實不如官網清楚,下面是官網的地址:

事件監聽

spring batch admin管理job執行

文章寫的不是特別詳細,但是已經給出了足夠的線索,也就是需要把JobRepository定義成資料庫儲存形式。