如今微服務(wù)架構(gòu)討論的如火如荼。但在企業(yè)架構(gòu)里除了大量的OLTP交易外,還存在海量的批處理交易。在諸如銀行的金融機(jī)構(gòu)中,每天有3-4萬筆的批處理作業(yè)需要處理。針對OLTP,業(yè)界有大量的開源框架、優(yōu)秀的架構(gòu)設(shè)計給予支撐;但批處理領(lǐng)域的框架確鳳毛麟角。是時候和我們一起來了解下批處理的世界哪些優(yōu)秀的框架和設(shè)計了,今天我將以Spring Batch為例,和大家一起探秘批處理的世界。
初識批處理典型場景
探秘領(lǐng)域模型及關(guān)鍵架構(gòu)
實現(xiàn)作業(yè)健壯性與擴(kuò)展性
批處理框架的不足與增強(qiáng)
批處理典型業(yè)務(wù)場景
對賬是典型的批處理業(yè)務(wù)處理場景,各個金融機(jī)構(gòu)的往來業(yè)務(wù)和跨主機(jī)系統(tǒng)的業(yè)務(wù)都會涉及到對賬的過程,如大小額支付、銀聯(lián)交易、人行往來、現(xiàn)金管理、POS業(yè)務(wù)、ATM業(yè)務(wù)、證券公司資金賬戶、證券公司與證券結(jié)算公司。

下面是某行網(wǎng)銀的部分日終跑批實例場景需求。

涉及到的需求點包括:
批量的每個單元都需要錯誤處理和回退;
每個單元在不同平臺中運(yùn)行;
需要有分支選擇;
每個單元需要監(jiān)控和獲取單元處理日志;
提供多種觸發(fā)規(guī)則,按日期,日歷,周期觸發(fā);
除此之外典型的批處理適用于如下的業(yè)務(wù)場景:
定期提交批處理任務(wù)(日終處理)
并行批處理:并行處理任務(wù)
企業(yè)消息驅(qū)動處理
大規(guī)模的并行處理
手動或定時重啟
按順序處理依賴的任務(wù)(可擴(kuò)展為工作流驅(qū)動的批處理)
部分處理:忽略記錄(例如在回滾時)
完整的批處理事務(wù)
與OLTP類型交易不同,批處理作業(yè)兩個典型特征是批量執(zhí)行與自動執(zhí)行(需要無人值守):前者能夠處理大批量數(shù)據(jù)的導(dǎo)入、導(dǎo)出和業(yè)務(wù)邏輯計算;后者無需人工干預(yù),能夠自動化執(zhí)行批量任務(wù)。

在關(guān)注其基本功能之外,還需要關(guān)注如下的幾點:
健壯性:不會因為無效數(shù)據(jù)或錯誤數(shù)據(jù)導(dǎo)致程序崩潰;
可靠性:通過跟蹤、監(jiān)控、日志及相關(guān)的處理策略(重試、跳過、重啟)實現(xiàn)批作業(yè)的可靠執(zhí)行;
擴(kuò)展性:通過并發(fā)或者并行技術(shù)實現(xiàn)應(yīng)用的縱向和橫向擴(kuò)展,滿足海量數(shù)據(jù)處理的性能需求;
苦于業(yè)界真的缺少比較好的批處理框架,Spring Batch是業(yè)界目前為數(shù)不多的優(yōu)秀批處理框架(Java語言開發(fā)),SpringSource和Accenture(埃森哲)共同貢獻(xiàn)了智慧。

Accenture在批處理架構(gòu)上有著豐富的工業(yè)級別的經(jīng)驗,貢獻(xiàn)了之前專用的批處理體系框架(這些框架歷經(jīng)數(shù)十年研發(fā)和使用,為Spring Batch提供了大量的參考經(jīng)驗)。
SpringSource則有著深刻的技術(shù)認(rèn)知和Spring框架編程模型,同時借鑒了JCL(Job Control Language)和COBOL的語言特性。2013年JSR-352將批處理納入規(guī)范體系,并被包含在了JEE7之中。這意味著,所有的JEE7應(yīng)用服務(wù)器都會有批處理的能力,目前第一個實現(xiàn)此規(guī)范的應(yīng)用服務(wù)器是Glassfish 4。當(dāng)然也可以在Java SE中使用。

但最為關(guān)鍵的一點是:JSR-352規(guī)范大量借鑒了Spring Batch框架的設(shè)計思路,從上圖中的核心模型和概念中可以看出究竟,核心的概念模型完全一致。完整的JSR-252規(guī)范可以從 https://jcp.org/aboutJava/communityprocess/final/jsr352/index.html 下載。
通過Spring Batch框架可以構(gòu)建出輕量級的健壯的并行處理應(yīng)用,支持事務(wù)、并發(fā)、流程、監(jiān)控、縱向和橫向擴(kuò)展,提供統(tǒng)一的接口管理和任務(wù)管理。

框架提供了諸如以下的核心能力,讓大家更關(guān)注在業(yè)務(wù)處理上。更是提供了如下的豐富能力: