□文/高冬梅 張 莉 劉志凱
(黑龍江財經學院財經信息工程學院 黑龍江·哈爾濱)
[提要]針對分布式金融系統由于多系統交互、異步處理、系統缺陷等問題導致的數據錯誤,將Al ibaba大數據處理平臺和賬務理論相結合,提出離線和準實時數據對賬的方法。通過某金融公司的分布式貸款系統每天700萬條數據,對本文提出的對賬方法進行驗證。結果表明:該數據對賬方法能完成金融大數據的處理,及時發現數據質量問題,使金融系統資金損失達到最低。
對于分布式金融支付工具系統,每日資金流入/出筆數均在幾千萬級別,這些系統賬務的資金變動和余額是否都如實準確地反應了每筆交易業務的真實狀態?是否有過資金損失事件?貸款系統中客戶借款后是否會有不用還款的情況?利息、費用、額度計算是否正確?賬上的錢是否正確?出于這些疑問,針對線上數據對賬勢在必行。
目前,研究人員對金融大數據的對賬展開很多深入的研究,主要集中在金融大數據平臺的設計與實現、金融風險防范、對賬理論等方面。在金融大數據平臺的設計與實現方面,文獻應用Hadoop、Hive、Spark、MaxCompute等大數據相關技術,對商業銀行小微信貸風險管理系統、銀行的財務管理系統、云服務平臺進行設計與實現。文獻針對分布式系統需跨服務、跨資源相互合作,提出分布式事務優化方案,對事務模型進行優化或應用事務補償機制,保證事務最終一致。在金融風險防范方面,文獻提出了中小券商日終清算操作風險,對風險進行分析和評價,保障清算的最后一道防線;文獻提出了銀行對賬風險管理優化方案,優化業務處理流程、搭建預警分析平臺等。在對賬理論方面,文獻應用賬務中賬證相符、賬賬相符、賬實相符等賬務業務理論,保障原始憑證到會計報表編制正確無誤;文獻提出事業單位對賬思路,做到余額核對、發生額核對、會計賬核對。本文提出將大數據處理平臺和賬務理論相結合,對分布式金融系統的數據進行對賬,用來防范數據質量風險,重點研究對賬方法、對賬實現,從數據處理及時性、數據量、發現問題的數量和維護成本等方面,對實驗結果進行分析。
金融數據對賬需要賬證核對、賬賬核對、賬實核對、賬表核對。賬證核對,“賬”表示賬務,“證”表示記賬憑證即業務單據,是驗證每一筆記賬都有據可依,不多記、不漏記、不錯記。賬賬核對,前一個“賬”表示總賬科目,后一個“賬”表示分戶賬,即通常所說的賬務系統中的賬戶。賬實核對是對賬務數據與實際資產的核對,對第三方支付機構來說,主要是核對內部賬戶系統中賬戶的余額是否與銀行實存賬戶余額相等。賬表核對是總賬報表間的核對,主要核對總賬報表中各個科目的期初借貸金額加借貸發生額是否等于借貸方余額、所有科目的借方余額是否等于貸方余額。
按照時效性,數據對賬分為離線數據對賬和準實時數據對賬。離線數據對賬分為以天為單位的全量數據對賬和小時級別增量對賬。在全量數據對賬中,將線上昨日0點到23點59分59秒產生的數據表數據,在今日凌晨準時自動開始處理,將處理結果同步清洗到數據倉庫,在大數據平臺部署對賬規則進行核對;在小時級別增量對賬中,將每天產生的數據劃分為24個分區,當前小時同步上一個小時產生的數據,部署對賬規則進行核對;在準實時數據對賬中,實時攔截運行中的程序代碼,部署對賬規則進行核對。
MaxCompute平臺是阿里巴巴集團的大數據服務平臺,提供數萬臺超大集群,能夠處理EB級數據規模。同時,該平臺提供數據同步、數據預處理、數據分析、任務調度和監控報警等功能。開發人員在用平臺進行數據開發時,采用平臺提供的IDE,編寫MaxCompute SQL。Max-Compute SQL的語法和HQL語句類似,并提供了字符串函數、日期函數等。
(一)離線數據對賬。首先“確定對賬邏輯”,主要根據對賬方法中介紹的“賬證核對”“賬賬核對”等理論,確定業務系統需要完成哪些對賬。“編寫及調試腳本”“部署對賬任務”“配置監控及報警”,主要利用MaxCompute平臺完成,“問題數據處理”報警后人工處理問題數據。以某公司分布式貸款系統為例,賬單系統同步調用某資產系統,某資產系統發送異步消息給賬務系統。具體實現過程如下:首先,確定對賬邏輯,梳理出該系統要對賬的邏輯,由于該系統沒有和銀行系統交互,也不是賬務系統,所以對賬類型只有“賬證核對”。對賬關系用來闡明要與哪些系統對賬——與該系統上游賬單系統、下游賬務系統或內生即該系統自身內部邏輯對賬。對賬內容主要包括發生額核對、余額核對和自身內部關鍵邏輯核對。以對賬內容“賬單系統與資產系統當日發生額核對”為例,其包含的業務語義是,客戶貸款XX元,賬單系統入賬XX元,資產系統為客戶記賬XX元,客戶資金賬戶多XX元,機構賬戶少XX元。通過兩個系統發生額,對比賬單系統入賬金額是否等于資產系統客戶資金賬多的金額和機構賬少的金額。其次,編寫及調試腳本。仍以梳理的對賬內容“賬單系統與資產系統當日發生額對賬”為例編寫對賬腳本。向數據倉庫人員提交要從線上同步到離線數據倉庫的表,完成線上數據庫表到離線數據倉庫的同步;利用平臺完成Max-Compute SQL語句的編寫,用于篩選和驗證規則不一致的數據。具體邏輯是,用賬單號將A表全外連接到B表,若A表的入賬金額屬性字段值不等于B表的客戶賬記賬金額或機構賬記賬金額屬性字段值,則篩選出該條記錄。再次,部署對賬任務。調試腳本完成后,配置任務的依賴關系、調度方式,發布到生成環境。再次,配置監控及報警。針對對賬異常的數據,發送郵件、釘釘等消息通知給開發人員。最后,問題數據處理。對收到的異常通知數據,進行人工排查。如果是腳本問題誤報,則修正腳本;如果是真正的對賬異常,則需要排查系統哪個環節出現問題,進行系統代碼或流程修復。要不斷優化誤報問題,避免對誤報問題的默認許可,使真正的問題被誤報覆蓋。對誤報問題的優化,從數據倉庫表的產出質量、產出效率和跨天或跨小時數據的冗余拉取三方面提高。
(二)準實時數據對賬。針對離線數據對賬時效性不高的問題,提出了準實時數據對賬。在不依賴、不修改業務系統代碼和日志的前提下,實時收集業務鏈路的各個環節出入口的數據。在應用的輸入、輸出請求,如數據庫層的DAO操作、返回的結果、異步發送的消息上設置監聽器,監聽器將收集到的結果發送到“數據收集和發送中心”,該中心再將數據發送到“對賬中心”,該對賬中心提供模型抽取、規則編寫、規則運行和準實時對賬的能力。
針對不同系統類型,首先設計了單系統對賬模型,該對賬模型可以針對單一系統的輸入輸出數據設計對賬規則。假設有規則“輸入請求R1”=“輸出結果R2”,將規則部署在對賬中心,如果存在不滿足該規則的數據,則為異常數據。其次設計了多系統對賬模型,在分布式環境中,完成一次業務需要多個系統協作完成,一個完整鏈路上的多個系統組成業務對賬模型。假設有規則“系統A輸入請求R1.X”=“系統B輸入請求R3.Y”+“系統D輸入請求D1.Z”,部署對賬規則,檢測業務是否滿足。
利用上述金融大數據對賬方法,對線上真實海量金融數據是否符合預期給出了很好的答案,消除了本文開始提出的利息、費用、額度等是否計算錯誤的疑慮。雖然各個金融類系統,在線下環境都會進行嚴格的測試,但在線下環境無論是手工測試或自動化測試,其數據量和場景都遠少于線上真實環境。大數據對賬作為一種測試手段的有力補充,能夠發現在線下很難發現的一些問題。針對某公司資產系統,進行了離線數據對賬和準實時數據對賬,對賬實驗結果如下:
(一)發布過程兼容性處理錯誤。全量和增量對賬發現:由于資產系統是分布式架構,部署在生產環境多臺機器上,因此發布過程分批發布,這樣會出現新發布的代碼調用老服務和數據,或老代碼調用新發布的服務和數據的情況。因此,系統發布過程中會出現兼容性未處理好使貸款后客戶賬單沒有形成和不用還款的問題,造成交易筆數210筆,總計損失金額3萬元。經過離線對賬腳本發現問題后,訂正補充沒有形成的賬單,挽回資金損失。
(二)事務懸掛。全量對賬發現:分布式事務一般分為預處理和提交兩個階段,在提交階段,所有系統都要提交成功,如果有一個系統提交失敗,則一直重試,如重試超過一天,定義為事務懸掛。此時需要人工介入排除原因,可能原因有發送的異步消息延遲導致提交失敗。
(三)貸款五級分類錯誤。全量對賬發現:依據借款人的實際還款能力,按風險等級分為正常、關注、次級、可疑和損失,后三種為不良貸款,由于代碼邏輯錯誤,將貸款五級分類設置錯誤,導致貸款不能真實反映企業盈虧狀況、不同分類貸款的催收和風險處理方法等出現差異。因此,需修復代碼缺陷、修復線上錯誤數據。
(四)費用計算錯誤、資金賬戶金額錯誤、請求時間和數據庫存儲時間不一致。全量和準實時對賬發現:由于系統在特殊場景、配置、計算或存儲數據中出錯,需要修改代碼和數據。
三種大數據對賬方法在處理數據的及時性、處理數據量、發如問題數量和維護成本四個方面的對比如下:
第一,及時性。全量對賬,若核對報錯,第二天才能發現問題數據;增量對賬,在1~2個小時可以發現問題數據;準實時數據對賬,需對線上數據采集和同步,發現問題在15分鐘內,時間效率上最優。
第二,數據量。離線對賬可以對線上一天產生的全量數據對比,實驗中對某貸款系統單表一天700萬條的數據進行了對賬;準實時對賬,數據同步存在性能瓶頸,只能開放部分集群,采樣1%,不能對數據進行全量對賬。
第三,發現問題數量。實驗中,全量對賬方法發現問題最多為5個,增量對賬發現2個,準實時最少為1個。準實時對賬,采集到的數據量少,所以發現問題也少;增量對賬,一些余額類的對賬需要對跨時間段全量數據驗證,增量數據對賬無法完成,導致發現的問題較少;全量對賬,采集到的數據量最全,余額類的對賬功能可以完成,數據偏移最少,所以發現問題最多。
第四,維護成本。分布式金融系統異步交互,數據會產生偏移、消息延時大于1小時的現象,導致增量對賬誤報較多,增加人工排查成本。全量數據對賬,數據偏移和消息延時大大減少。準實時對賬,根據系統代碼維護對賬腳本,受到代碼變更的影響,維護量適中。
綜上,本文提出的金融大數據對賬方法,可以很好地發現金融領域的數據問題,對問題數據進行及時處理,避免造成資金損失,保障金融系統質量,是金融系統可靠性的重要保障。但離線數據對賬和準實時對賬各有優缺點,工作中需要相互結合、相互補充,這增加了開發人員的工作量、不同對賬腳本維護和問題排查的成本,這是下一步工作需要解決的問題。