彭秋生
摘要:隨著業(yè)務(wù)量增長和數(shù)據(jù)量的增加,銀行中間業(yè)務(wù)系統(tǒng)日終任務(wù)的運行速度越來越慢,最壞情況下耗時達(dá)數(shù)十個小時,嚴(yán)重威脅到第二天正常業(yè)務(wù)的開展。本文對銀行中間業(yè)務(wù)系統(tǒng)日終任務(wù)運行機制進入了深入分析,提出了日終任務(wù)并行處理方案,將日終任務(wù)運行時間從30多個小時降低至3個小時,速度整整提升了10倍。本文提出的任務(wù)并行處理平臺,具有良好的通用性,為后續(xù)其他任務(wù)的并行處理提供了基礎(chǔ)平臺。
關(guān)鍵詞:中間業(yè)務(wù);日終;任務(wù);并行;串行
Abstract: With the increase of transactions and data, the running time of the day-end tasks in the bank's intermediate business system is getting longer. It takes dozens of hours at worst, which seriously threatens the normal business the next day. The old running way of the end-of-day tasks? is discussed,and a new parallel operating mechanism for day-end tasks was proposed. The? running time of day-end tasks is cut down from more than 30 hours to 3 hours in the new mode, and the speed has been increased by 10 times. The task parallel processing platform is proposed at the same time, and it has good versatility and provides a basic platform for subsequent parallel processing of other tasks.
Key words: intermediate business; end-of-day; tasks; parallel; serial
近年來,銀行中間業(yè)務(wù)持續(xù)增長,已經(jīng)成為商業(yè)銀行主要收入來源之一[1]。交易量增長,數(shù)據(jù)量暴增,系統(tǒng)日終任務(wù)處理速度越來越慢,遇到季末結(jié)息、年終決算等關(guān)鍵時點,日終耗時達(dá)幾十個小時,影響下一天正常業(yè)務(wù)的開展,嚴(yán)重威脅系統(tǒng)安全和業(yè)務(wù)穩(wěn)定,加快日終運行速度迫在眉睫。最直接的辦法是升級硬件,但系統(tǒng)搭建在IBM小型機上,硬件價格昂貴,升級成本高。經(jīng)分析,在日終運行過程中,繁忙的只是少量硬件資源,大量硬件資源處于空閑狀態(tài)。因此,優(yōu)化應(yīng)用軟件,充分利用空閑的硬件資源,加快任務(wù)處理速度,是目前符合實際的解決方案。
1 現(xiàn)有日終任務(wù)運行機制
中間業(yè)務(wù)日終由一系列的任務(wù)組成,于每晚日結(jié)時啟動。啟動后,系統(tǒng)自動按配置好的順序逐個調(diào)度任務(wù),直至所有的任務(wù)成功執(zhí)行完畢。中間一旦某個任務(wù)出錯,系統(tǒng)會中止整個日終,并自動發(fā)送報警信息給運維值班人員。運維人員解決完問題后,再次啟動日終,系統(tǒng)自動從失敗的地方開始斷點續(xù)做。日終任務(wù)處理流程如下:
1)日終任務(wù)處理流程:
(1)掃描日終任務(wù)表,按順序查找當(dāng)天“待處理”或“處理失敗”的任務(wù),進入循環(huán):
若取到當(dāng)前任務(wù)為空(表示任務(wù)全部已處理完),則跳出循環(huán),否則進入下一步將取到的當(dāng)前任務(wù)狀態(tài)置為“正在處理”,并提交事務(wù)(commit)[2]執(zhí)行當(dāng)前任務(wù),根據(jù)執(zhí)行結(jié)果進行處理:若任務(wù)執(zhí)行成功,則將任務(wù)狀態(tài)置為“處理成功”,提交事務(wù)(commit);若任務(wù)執(zhí)行出錯,則先回滾事務(wù)(rollback)[2],再將任務(wù)狀態(tài)置為“處理失敗”,并提交事務(wù)(commit),再跳出循環(huán)。取下一個任務(wù),回到第①步。
(2)再次掃描當(dāng)天所有日終任務(wù),若存在“待處理”或“處理失敗”的任務(wù),則表示任務(wù)有異常,將日終狀態(tài)置為“處理失敗”;若任務(wù)全部為“處理成功”,則將日終狀態(tài)置為“處理成功”。
從流程中可以看出日終任務(wù)采用的是同步處理機制,即任務(wù)組成一個串行隊列,前一個任務(wù)執(zhí)行完,后一個任務(wù)才開始執(zhí)行,同一時間只有一個任務(wù)在執(zhí)行。在同步處理機制下,日終整體執(zhí)行時間T等于所有任務(wù)執(zhí)行時間之和,即T = T1+T2+...+Tn ,其中n為日終任務(wù)數(shù)量。
同步處理機制下,任務(wù)之間嚴(yán)重按順序執(zhí)行,當(dāng)前一個任務(wù)的執(zhí)行時間過長或者出現(xiàn)異常,后面的所有任務(wù)都必須等待。最壞情況下,任務(wù)到第二天還沒有全部執(zhí)行完,導(dǎo)致第二天無法正常開業(yè)。為了解決此問題,就必須加快任務(wù)的處理速度,減少任務(wù)之間的等待時間。由于任務(wù)數(shù)量多,在同步處理機制下,提升單個任務(wù)的處理速度對整體速度提升幫助不大。因此,必須打破原有的同步處理機制,讓盡可能多的任務(wù)并行處理,才能達(dá)到減少任務(wù)等待時間的目的。
2 任務(wù)并行處理方案
任務(wù)并行處理是指同一時間執(zhí)行多個任務(wù),上一個任務(wù)未執(zhí)行完,下一個任務(wù)就開始執(zhí)行,下一個任務(wù)的執(zhí)行不依賴于上一個任務(wù)的結(jié)果,任務(wù)之間等待時間幾乎為0。任務(wù)并行處理的前提是任務(wù)之間沒有依賴關(guān)系,有依賴關(guān)系的任務(wù)必須采用串行處理,否則會破壞任務(wù)的依賴關(guān)系,如“統(tǒng)計報表生成”任務(wù)的數(shù)據(jù)來源于“數(shù)據(jù)統(tǒng)計”任務(wù),二者之間有依賴關(guān)系,“數(shù)據(jù)統(tǒng)計”任務(wù)必須在“統(tǒng)計報表生成”任務(wù)之前執(zhí)行。
任務(wù)的先后依賴關(guān)系可以采用“前置任務(wù)法”實現(xiàn)。每個任務(wù)設(shè)置一個前置任務(wù)列表,任務(wù)調(diào)度前先檢查對應(yīng)的前置任務(wù)是否全部成功執(zhí)行完畢。若前置任務(wù)全部成功執(zhí)行完畢,則調(diào)度當(dāng)前任務(wù);若有前置任務(wù)未執(zhí)行完或執(zhí)行失敗,則不調(diào)度當(dāng)前任務(wù),跳到下一個任務(wù),開始同樣的檢查調(diào)度流程。日終任務(wù)并行處理流程如下: