王曉義
摘 要本文提供了一種批量處理系統(tǒng)的設(shè)計(jì),可以從大數(shù)據(jù)量的數(shù)據(jù)中高效篩選出需要生成文件的數(shù)據(jù)并在日終處理時(shí)高效生成文件并發(fā)送其他系統(tǒng)。
【關(guān)鍵詞】批量處理系統(tǒng) 日志調(diào)度 時(shí)間片 數(shù)據(jù)預(yù)處理
批量處理子系統(tǒng)是POS收單系統(tǒng)設(shè)置于批量數(shù)據(jù)庫(kù)上的一個(gè)子系統(tǒng),專門用于聯(lián)機(jī)交易后的文件處理。文件處理包括文件生成、文件收發(fā)和文件裝載。
批量處理子系統(tǒng)是POS收單系統(tǒng)的核心子系統(tǒng),創(chuàng)建一個(gè)高效、容錯(cuò)、穩(wěn)定的批量處理子系統(tǒng)將有效地保證系統(tǒng)的正確運(yùn)行。
1 設(shè)計(jì)方法與決策
根據(jù)批處理子系統(tǒng)的業(yè)務(wù)需求和技術(shù)要求,系統(tǒng)的設(shè)計(jì)遵循了以下原則:
1.1 流程化設(shè)計(jì)
在設(shè)計(jì)上,將共同點(diǎn)抽象出來(lái),形成批量處理子系統(tǒng)的共用服務(wù),通過(guò)不同的服務(wù)調(diào)用流程來(lái)實(shí)現(xiàn)。設(shè)置統(tǒng)一的流程調(diào)度服務(wù),批量處理子系統(tǒng)中,所有業(yè)務(wù)流程的實(shí)現(xiàn)均由流程調(diào)度控制服務(wù)調(diào)度不同的服務(wù)來(lái)實(shí)現(xiàn)。批量處理事件的引發(fā),將通過(guò)界面觸發(fā)運(yùn)行的方式實(shí)現(xiàn)。
1.2 服務(wù)進(jìn)程并發(fā)技術(shù)
采用多服務(wù)進(jìn)程并發(fā)技術(shù),提高數(shù)據(jù)的處理能力。
批量處理使用的日志表索引根據(jù)數(shù)據(jù)訪問(wèn)的使用習(xí)慣來(lái)劃分邏輯分區(qū),在物理上進(jìn)行物理群集,以保持較大的存儲(chǔ)塊和較快的索引速度。
在批量處理過(guò)程中啟動(dòng)多個(gè)處理進(jìn)程,一個(gè)處理進(jìn)程一次只處理一個(gè)邏輯分區(qū),每個(gè)處理進(jìn)程每次處理的記錄個(gè)數(shù)根據(jù)邏輯分區(qū)來(lái)確定。處理進(jìn)程劃分為多個(gè)可最大限度地利用CPU資源,邏輯分區(qū)的劃分可最大限度提高IO性能。處理進(jìn)程的數(shù)量需通過(guò)實(shí)驗(yàn)來(lái)確定最佳組合。
文件生成和裝載進(jìn)程的并發(fā)處理是為保證系統(tǒng)產(chǎn)生和接收的大量文件能得到及時(shí)的處理。
1.3 時(shí)間片處理技術(shù)
針對(duì)數(shù)據(jù)量大和數(shù)據(jù)更新覆蓋面廣的特點(diǎn),對(duì)聯(lián)機(jī)日志采用分時(shí)間片處理的技術(shù),按照預(yù)先設(shè)定的時(shí)間片開(kāi)始批量處理過(guò)程,這樣在全天都可以進(jìn)行批量處理,保證了批量處理的效率。
1.4 數(shù)據(jù)清理技術(shù)
為保證在數(shù)據(jù)清理時(shí)不會(huì)產(chǎn)生碎片,批量庫(kù)的日志表采用多張表循環(huán)使用,一張存放一個(gè)清算日的交易,在清理時(shí)用“truncate表”來(lái)清理表的內(nèi)容,避免產(chǎn)生碎片。
1.5 文件數(shù)據(jù)預(yù)生成技術(shù)
在批量處理過(guò)程中,要判斷該記錄是否需要產(chǎn)生文件,如果需要,要將該記錄預(yù)先插入到文件明細(xì)表中。文件的生成是以POS終端批結(jié)引發(fā)的,文件明細(xì)表中的數(shù)據(jù)是文件生成的原始數(shù)據(jù),但只有在相應(yīng)終端批結(jié)后才會(huì)產(chǎn)生對(duì)應(yīng)的文件。這樣在終端批結(jié)時(shí),要搜索的數(shù)據(jù)不再是日志表,而是數(shù)據(jù)量小得多的文件明細(xì)表,這樣就極大地縮短了文件生成的時(shí)間。
文件明細(xì)表的設(shè)計(jì)如下:
(1)為數(shù)據(jù)清理的方便,采用兩套文件明細(xì)表,每次在生成文件明細(xì)信息時(shí),要查詢生成到哪張表。
(2)在數(shù)據(jù)表切換時(shí),要計(jì)算是否要切換文件明細(xì)表。按照事先設(shè)置的切換周期參數(shù)和上次切換的時(shí)間計(jì)算是否需要切換,如果需要,則執(zhí)行文件明細(xì)信息表切換。文件明細(xì)表的切換周期要大于30天。
(3)執(zhí)行文件明細(xì)表切換時(shí),對(duì)還未生成文件的記錄要在清理前轉(zhuǎn)移到新的要切換的文件明細(xì)表中。
1.6 五高設(shè)計(jì)
1.6.1 高性能實(shí)現(xiàn)方案
針對(duì)數(shù)據(jù)量大和數(shù)據(jù)更新覆蓋面廣的特點(diǎn),在批量處理子系統(tǒng)設(shè)計(jì)中,采用時(shí)間片處理技術(shù),充分利用處理器資源和時(shí)間。另外,對(duì)數(shù)據(jù)進(jìn)行有效分塊,采用多進(jìn)程并行處理,以提高系統(tǒng)CPU和內(nèi)存資源利用率。
1.6.2 高可用性實(shí)現(xiàn)方案
在高可用性方面,采用多機(jī)部署的方案,充分利用中間件提供的動(dòng)態(tài)服務(wù)配置、多機(jī)之間各服務(wù)的相互備份特性,保證在一個(gè)服務(wù)或一臺(tái)服務(wù)器出現(xiàn)異常的情況下,子系統(tǒng)仍然可以正常提供所有服務(wù),保證整個(gè)系統(tǒng)的強(qiáng)壯性。
1.6.3 高可靠性實(shí)現(xiàn)方案
在單臺(tái)服務(wù)器上,由中間件實(shí)現(xiàn)對(duì)所有服務(wù)的監(jiān)控和管理,其中某一個(gè)服務(wù)不能響應(yīng)請(qǐng)求時(shí),中間件將自動(dòng)重新啟動(dòng)該服務(wù)。多機(jī)部署的方案保證了多機(jī)之間各服務(wù)的相互備份特性,保證在一個(gè)服務(wù)或一臺(tái)服務(wù)器出現(xiàn)異常的情況下,子系統(tǒng)仍然可以正常提供所有服務(wù),保證整個(gè)系統(tǒng)的高可靠性。
1.6.4 高可擴(kuò)展性實(shí)現(xiàn)方案
通過(guò)流程調(diào)度服務(wù)實(shí)現(xiàn)對(duì)每個(gè)處理步驟和服務(wù)可變調(diào)度,以適應(yīng)新業(yè)務(wù)需求,系統(tǒng)具有較高的可擴(kuò)展性。多機(jī)部署的方案本身就體現(xiàn)了系統(tǒng)的高擴(kuò)展性。當(dāng)業(yè)務(wù)發(fā)展到一定階段,硬件配置已不能滿足要求,可以將批量處理子系統(tǒng)部署在多臺(tái)服務(wù)器上,利用中間件平臺(tái)的分布處理功能,將部分服務(wù)分流到其他服務(wù)器上。
1.6.5 高可管理性實(shí)現(xiàn)方案
所有服務(wù)部署在中間件平臺(tái)上,按中間件的規(guī)范統(tǒng)一設(shè)計(jì),由中間件統(tǒng)一管理。對(duì)于每個(gè)服務(wù),通過(guò)中間件管理平臺(tái)可以簡(jiǎn)單地增加或減少進(jìn)程數(shù),在系統(tǒng)運(yùn)行過(guò)程中,通過(guò)對(duì)系統(tǒng)記錄數(shù)據(jù)的分析統(tǒng)計(jì),結(jié)合經(jīng)驗(yàn)值,對(duì)系統(tǒng)進(jìn)行漸趨更合理的資源配置,體現(xiàn)了高可管理性。
2 子系統(tǒng)總體框架設(shè)計(jì)
基于目前的需求分析,批量處理子系統(tǒng)的應(yīng)用框架如圖1所示。
由流程調(diào)度控制服務(wù)、流程調(diào)度檢查服務(wù)、日志處理調(diào)度服務(wù)對(duì)上述日志處理、文件處理和輔助處理三類中的服務(wù)進(jìn)行調(diào)度,調(diào)度過(guò)程充分考慮數(shù)據(jù)預(yù)處理、并行處理,以提高處理效率。
3 總結(jié)
本文以模塊化的方法提供了一種批量系統(tǒng)的設(shè)計(jì),特別是時(shí)間片技術(shù)和數(shù)據(jù)預(yù)處理技術(shù),對(duì)金融系統(tǒng)的批量處理系統(tǒng)的設(shè)計(jì)有一定的借鑒意義。
參考文獻(xiàn)
[1]溫昱.軟件架構(gòu)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.
作者單位
中國(guó)銀聯(lián)股份有限公司技術(shù)開(kāi)發(fā)中心 上海市 201201