天天看點

Spring Batch及批處理(第一篇)

文本聲明: 本文的創作來源有兩點, 其一是哔哩哔哩網站上的視訊; 其二, 根據劉相編輯的書《Spring Batch批處理架構》。基于上面兩個資料加上自己的一些想法進行編寫的, 若有侵權, 請聯系。

Spring Batch及批處理(第一篇)

    • 1 什麼是批處理
    • 2 批處理典型的應用場景
    • 3 什麼是Spring Batch
    • 4 Spring Batch 的特性

SpringBatch 是一個大資料量的并行處理架構。通常用于資料的離線遷移,和資料處理,⽀持事務、并發、流程、監控、縱向和橫向擴充,提供統⼀的接⼝管理和任務管理;SpringBatch是SpringSource和埃森哲為了統一業界并行處理标準為廣大開發者提供友善開發的一套架構。

1 什麼是批處理

什麼是批處理,我們可以從一下幾方面來進行了解:

  • 有限資料(Finite data):批處理是對有限資料的處理,相對應的就是無限資料(non-infinite),即資料可以處理到完成。
  • 無互動(No interaction):什麼叫做無互動?例如在軟體開發中,一個 web request 或 發送一個 message,都是系統之間或是Client與系統之間的互動。而 Batch processing 批處理程式運作在伺服器上,不需要互動。
  • 無中斷(No interruption):一個批處理從開始到結束,它沒有外界中斷。也不排除批處理的過程中,發生錯誤或異常,但 Spring Batch 提供了相應的批處理容錯機制。

2 批處理典型的應用場景

  • ETL:Extract-Transform-Load,資料的抽取,轉換和加載;
  • Report:報表;
  • Data Science:資料科學中提到的預測模型 predicative model;
  • BigData:大資料中的 Hadoop/Spark 處理架構
  • 非互動性的應用都可以考慮使用批處理去實作,而 Spring Batch 就是其中一種比較成熟的解決方案。

3 什麼是Spring Batch

Spring Batch 是 Java 中領先的批處理架構,它是來自埃森哲的一個開源項目,與 Spring 合作,同時 Spring Batch 也是 JSR-352 (Java Specification Requests,Java 規範請求)的一個标準來源。

4 Spring Batch 的特性

  • 工作流狀态機(Job flow state machine):其中的 Job 是由互相獨立的 step 來構成的,step 可以在不同的狀态之間進行轉換。
  • 事務處理(Transaction processing)
  • 聲明式 IO(Declarative IO):提供了非常易用的輸入輸出支援,進而使程式員隻關注與業務邏輯
  • 容錯處理(Error handling):批處理一般都是離線運作(Offline processing),在夜間啟動。這個批處理架構提供了一些容錯機制,例如:skip,并記錄一些錯誤的日志。
  • 可擴充機制(Scalability ability):分布式處理以及例如第三方架構Hadoop架構的內建。

    Spring Batch 建立在 Spring 架構之上的,是以可以使用 Spring 架構的一些特性,例如:IoC、Testing、Spring Boot…