數(shù)據(jù)對(duì)賬組件Data-Reconcile:高效可信對(duì)賬利器
數(shù)據(jù)治理通用組件WeBankBlockchain-Data當(dāng)前3個(gè)子組件——數(shù)據(jù)倉(cāng)庫(kù)組件Data-Stash、數(shù)據(jù)導(dǎo)出組件Data-Export、數(shù)據(jù)對(duì)賬組件Data-Reconcile,相互獨(dú)立、可插拔、可靈活組裝。
其中, 數(shù)據(jù)倉(cāng)庫(kù)組件Data-Stash通過為節(jié)點(diǎn)在外部生成全量數(shù)據(jù)備份,實(shí)現(xiàn)海量數(shù)據(jù)高效治理,關(guān)鍵特性和使用方式參見《數(shù)據(jù)倉(cāng)庫(kù)組件Data-Stash:助力區(qū)塊鏈節(jié)點(diǎn)“輕裝上陣”》。
數(shù)據(jù)導(dǎo)出組件Data-Export提供通用化、智能化、標(biāo)準(zhǔn)化的數(shù)據(jù)導(dǎo)出解決方案,降低區(qū)塊鏈數(shù)據(jù)開發(fā)門檻,關(guān)鍵特性和使用方式參見《數(shù)據(jù)導(dǎo)出組件Data-Export:數(shù)據(jù)分析處理“加速器”》。
本文將介紹數(shù)據(jù)對(duì)賬組件Data-Reconcile,歡迎大家積極體驗(yàn),并將使用訴求或優(yōu)化建議反饋給我們。
??認(rèn)識(shí)Data-Reconcile
任何多方參與的交易系統(tǒng),如訂單系統(tǒng)、支付系統(tǒng)等,對(duì)賬都是清結(jié)算交易生命周期中的重要環(huán)節(jié),交易各方需要針對(duì)訂單等交易數(shù)據(jù)和金額進(jìn)行查漏補(bǔ)缺,直到賬務(wù)完全對(duì)平。
傳統(tǒng)企業(yè)間對(duì)賬,一般按交易場(chǎng)次或交易日定時(shí)對(duì)賬,存在較長(zhǎng)的延時(shí),如在交易期間出現(xiàn)賬務(wù)不平的情況,則需要人工介入,手動(dòng)追蹤和確認(rèn)問題,耗時(shí)耗力。同時(shí),傳統(tǒng)多方對(duì)賬依賴于某個(gè)權(quán)威機(jī)構(gòu)的信用,賬務(wù)通常以中心機(jī)構(gòu)的賬本為準(zhǔn),存在一定信用和操作風(fēng)險(xiǎn),如出現(xiàn)中心機(jī)構(gòu)賬本被惡意篡改,則影響對(duì)賬多方的賬務(wù)準(zhǔn)確性和資金安全性。
針對(duì)上述問題,Data-Reconcile提供一種基于區(qū)塊鏈的通用化數(shù)據(jù)對(duì)賬解決方案,并支持對(duì)賬框架動(dòng)態(tài)可擴(kuò)展,支持定制化開發(fā)。Data-Reconcile能夠在對(duì)賬不一致的情況下,找到一個(gè)可信的客觀依據(jù),從而減少因?qū)~不平造成的排查成本。
基于區(qū)塊鏈的數(shù)據(jù)對(duì)賬,不僅能解決對(duì)賬不平問題,還可大幅提升對(duì)賬效率,將傳統(tǒng)的多場(chǎng)次或T+1對(duì)賬機(jī)制提升為準(zhǔn)實(shí)時(shí)對(duì)賬,實(shí)現(xiàn)“交易即對(duì)賬”。
Data-Reconcile的拓?fù)鋱D如下所示:

多方業(yè)務(wù)數(shù)據(jù)上鏈后,可借助數(shù)據(jù)導(dǎo)出Data-Export作為獲取鏈上數(shù)據(jù)的橋梁,通過Data-Export將數(shù)據(jù)實(shí)時(shí)從鏈上導(dǎo)出。配置雙方對(duì)賬規(guī)則后,部署Data-Reconcile,組件將鏈上相關(guān)數(shù)據(jù)生成對(duì)賬文件,并和從遠(yuǎn)端獲取的對(duì)賬文件進(jìn)行數(shù)據(jù)核對(duì),完成對(duì)賬。
??Data-Reconcile關(guān)鍵特性一覽
Data-Reconcile抽象了交易系統(tǒng)通用對(duì)賬流程,提供靈活可配置的區(qū)塊鏈數(shù)據(jù)對(duì)賬解決方案,支持自定義對(duì)賬數(shù)據(jù)和對(duì)賬格式,支持定時(shí)對(duì)賬和觸發(fā)對(duì)賬任務(wù),提供多種擴(kuò)展點(diǎn),以便對(duì)賬處理模塊二次開發(fā)。
Data-Reconcile不僅適用于狹義上的交易對(duì)賬,同樣也適用于任何需要進(jìn)行數(shù)據(jù)核對(duì)的業(yè)務(wù)場(chǎng)景。
1)靈活可配置的數(shù)據(jù)對(duì)賬規(guī)則
針對(duì)不同場(chǎng)景下對(duì)賬數(shù)據(jù)的不同,Data-Reconcile支持自定義對(duì)賬數(shù)據(jù)及格式,只需配置對(duì)賬字段映射規(guī)則,即可完成對(duì)賬數(shù)據(jù)格式的定義。
對(duì)于不同的文件格式,Data-Reconcile默認(rèn)支持txt、json文件格式,也支持通過擴(kuò)展接口進(jìn)行定制開發(fā)。
同時(shí),兩方對(duì)賬文件傳輸時(shí),需對(duì)文件進(jìn)行托管,如文件管理器或服務(wù)器,Data-Reconcile默認(rèn)支持FTP方式,支持?jǐn)U展。
2)提供對(duì)賬任務(wù)調(diào)度管理
Data-Reconcile提供對(duì)賬任務(wù)調(diào)度管理,調(diào)用方式包括手動(dòng)或自動(dòng),可通過配置自定義任務(wù)頻次、對(duì)賬時(shí)間;支持全流程追蹤任務(wù)的狀態(tài)變更,對(duì)失敗和超時(shí)任務(wù)執(zhí)行補(bǔ)償、重試等處理,以保證對(duì)賬任務(wù)的穩(wěn)定執(zhí)行。
對(duì)賬任務(wù)的調(diào)度支持并行處理,提升對(duì)賬效率。
3)可插拔、可擴(kuò)展的對(duì)賬流程
為滿足不同場(chǎng)景下的對(duì)賬需求,Data-Reconcile在提供通用對(duì)賬實(shí)現(xiàn)的同時(shí),支持流程的擴(kuò)展,主要包括任務(wù)調(diào)度處理、對(duì)賬數(shù)據(jù)獲取、對(duì)賬解析、執(zhí)行、結(jié)果處理等步驟,可按需組裝,靈活可插拔;處理流程支持定制化開發(fā),易于擴(kuò)展。
??Data-Reconcile整體架構(gòu)
Data-Reconcile的整體架構(gòu)如下圖所示,包括基礎(chǔ)模塊、對(duì)賬數(shù)據(jù)傳輸模塊、對(duì)賬消息模塊、對(duì)賬執(zhí)行模塊。

基礎(chǔ)模塊:負(fù)責(zé)對(duì)上層業(yè)務(wù)模塊的技術(shù)支持,提供文件和消息傳輸、任務(wù)全流程調(diào)度追蹤、配置管理、對(duì)賬文件快速生成和讀取的能力。 數(shù)據(jù)傳輸模塊:負(fù)責(zé)鏈上數(shù)據(jù)獲取,對(duì)賬文件獲取和推送。 對(duì)賬消息模塊:負(fù)責(zé)與對(duì)賬方通信,主要提供對(duì)賬請(qǐng)求和對(duì)賬結(jié)果通知等能力。 對(duì)賬模塊:負(fù)責(zé)對(duì)賬的具體執(zhí)行和處理,提供對(duì)文件的解析、數(shù)據(jù)提取、對(duì)賬邏輯處理、結(jié)果導(dǎo)出等功能。
Data-Reconcile在對(duì)賬流程設(shè)計(jì)上,采用了責(zé)任鏈+模板方法的設(shè)計(jì)模式,實(shí)現(xiàn)各功能模塊可插拔、可擴(kuò)展。
流程核心接口如下:

ReconcileHandlerChain:負(fù)責(zé)對(duì)賬處理流程的構(gòu)建,是對(duì)賬處理的入口。 ReconcileTaskHandler:負(fù)責(zé)對(duì)任務(wù)的調(diào)度執(zhí)行,包括對(duì)賬任務(wù)創(chuàng)建、執(zhí)行、 狀態(tài)變更和全流程追蹤。 ReconcileFileObtainHandler:負(fù)責(zé)對(duì)賬文件獲取,提供鏈上對(duì)賬數(shù)據(jù)獲取、對(duì)賬文件生成、遠(yuǎn)端文件獲取等能力。 ReconcileExecuteHandler:負(fù)責(zé)對(duì)賬處理,提供對(duì)賬文件解析、配對(duì)、數(shù)據(jù)并行處理對(duì)賬等能力。 ReconcileResultHandler:負(fù)責(zé)對(duì)賬結(jié)果處理,提供對(duì)賬結(jié)果文件生成、對(duì)賬結(jié)果推送、消息發(fā)送等能力。
??Data-Reconcile如何實(shí)現(xiàn)對(duì)賬

在多方交易的數(shù)據(jù)交互場(chǎng)景中,各方數(shù)據(jù)上鏈后,由參與者中的對(duì)賬需求方部署Data-Reconcile進(jìn)行對(duì)賬處理,多方對(duì)賬的調(diào)用時(shí)序圖如下:
1)搭建文件資源中心
對(duì)賬執(zhí)行方在核算前需獲取對(duì)賬參與方的對(duì)賬文件,此時(shí)可通過搭建文件資源中心,如FTP,來(lái)作為對(duì)賬文件的傳輸中心;對(duì)賬數(shù)據(jù)提供方則需將對(duì)賬文件推送至傳輸中心。
2)搭配數(shù)據(jù)導(dǎo)出
對(duì)賬執(zhí)行方通過數(shù)據(jù)導(dǎo)出Data-Export將鏈上數(shù)據(jù)實(shí)時(shí)導(dǎo)出到鏈下,以此作為對(duì)賬的依據(jù),更多數(shù)據(jù)導(dǎo)出組件的使用方式可參見《數(shù)據(jù)導(dǎo)出組件Data-Export:數(shù)據(jù)分析處理“加速器”》。
3)部署Data-Reconlie
Data-Reconcile支持對(duì)對(duì)賬時(shí)間、規(guī)則、任務(wù)調(diào)度、文件傳輸?shù)冗M(jìn)行自定義配置,任務(wù)調(diào)度、文件傳輸?shù)饶K會(huì)根據(jù)配置提供相關(guān)能力。
任務(wù)調(diào)度
任務(wù)調(diào)度配置包括調(diào)用方式、對(duì)賬時(shí)間及數(shù)據(jù)范圍、超時(shí)和失敗的任務(wù)補(bǔ)償?shù)取?/span>
對(duì)賬任務(wù)狀態(tài)及對(duì)應(yīng)場(chǎng)景如下:
狀態(tài) | 場(chǎng)景 |
待執(zhí)行-0(初始態(tài)) | 任務(wù)創(chuàng)建時(shí) |
執(zhí)行中-1 (中間態(tài)) | 對(duì)賬進(jìn)行中 |
已完成-2(終態(tài)) | 對(duì)賬完成時(shí) |
執(zhí)行失敗-3(中間態(tài)) | 異常 |
結(jié)束終止-4(終態(tài)) | 任務(wù)超時(shí)、重試次數(shù)達(dá)到上限 |
Data-Reconcile會(huì)根據(jù)任務(wù)的配置對(duì)執(zhí)行中、執(zhí)行失敗兩個(gè)中間態(tài)進(jìn)行補(bǔ)償。同時(shí),對(duì)賬執(zhí)行支持手動(dòng)調(diào)用方式,可通過Restful API請(qǐng)求方式觸發(fā)對(duì)賬。
文件傳輸
文件傳輸支持本地或遠(yuǎn)程FTP兩種模式。本地模式支持從本地直接獲取待對(duì)賬文件,與鏈上導(dǎo)出數(shù)據(jù)進(jìn)行對(duì)賬;遠(yuǎn)程模式多適用于跨機(jī)構(gòu)等場(chǎng)景,定期拉取遠(yuǎn)端文件進(jìn)行對(duì)賬。
通用對(duì)賬規(guī)則定義
鏈上數(shù)據(jù)獲取配置:在Data-Export將數(shù)據(jù)導(dǎo)出到鏈下后,Data-Reconcile通過數(shù)據(jù)庫(kù)直接獲取鏈上數(shù)據(jù),配置包括查詢sql和時(shí)間范圍字段等配置。 對(duì)賬文件格式配置:通過該配置可確定文件解析的方法,如txt文件,則采用對(duì)應(yīng)的解析器來(lái)解析文件。 對(duì)賬數(shù)據(jù)規(guī)則配置:包括對(duì)賬雙方數(shù)據(jù)條目的唯一鍵配置,數(shù)據(jù)字段映射的配置,執(zhí)行時(shí)將按照配置的映射規(guī)則和字段進(jìn)行解析匹配,解析后轉(zhuǎn)交由對(duì)賬處理模塊對(duì)賬目進(jìn)行核算處理。
開啟對(duì)賬
配置完成后,部署Data-Reconcile并開啟對(duì)賬,通過日志和任務(wù)狀態(tài)表可實(shí)時(shí)查看對(duì)賬進(jìn)度。
4)對(duì)賬執(zhí)行和結(jié)果獲取
Data-Reconcile定期從文件傳輸中心獲取對(duì)賬數(shù)據(jù)提供方推送的待對(duì)賬文件,同時(shí)將Data-Export導(dǎo)出的鏈上數(shù)據(jù)生成對(duì)賬文件,交由數(shù)據(jù)提取模塊對(duì)文件進(jìn)行逐條解析。匹配后的數(shù)據(jù)交由對(duì)賬處理模塊并行執(zhí)行對(duì)賬邏輯,完成后將結(jié)果生成文件保存,并推送至遠(yuǎn)端文件傳輸中心,供對(duì)賬參與方獲取對(duì)賬結(jié)果。

??Data-Reconcile應(yīng)用場(chǎng)景示例
在供應(yīng)鏈金融、第三方支付等業(yè)務(wù)場(chǎng)景中,上下游企業(yè)間在合作中存在大量轉(zhuǎn)賬、交易等數(shù)據(jù)交互。這些數(shù)據(jù)分別保存在各自企業(yè)中心化管理的數(shù)據(jù)庫(kù)中,清算時(shí),需要對(duì)這些數(shù)據(jù)進(jìn)行賬目的比對(duì),以保證互相之間賬目數(shù)據(jù)的一致和準(zhǔn)確。
在使用傳統(tǒng)中心化對(duì)賬方式時(shí),由于需依賴于企業(yè)各自的中心化賬本,對(duì)賬時(shí)存在賬目可信的問題,且對(duì)賬周期較長(zhǎng),效率也待提升。
此時(shí),企業(yè)間可通過FISCO BCOS搭建聯(lián)盟鏈,并將交易數(shù)據(jù)上傳到鏈上保存;對(duì)賬時(shí),使用Data-Reconcile,并根據(jù)自身需求定制開發(fā),對(duì)企業(yè)間數(shù)據(jù)進(jìn)行可信核算對(duì)賬,在確保對(duì)賬結(jié)果可信的同時(shí)提升對(duì)賬效率。
??即刻使用
上述功能所涉及的最新代碼和技術(shù)文檔已同步更新,歡迎體驗(yàn)和 star 支持。如需咨詢技術(shù)問題,歡迎關(guān)注本公眾號(hào),對(duì)話框回復(fù)【小助手】進(jìn)技術(shù)交流群。
Data-Reconcile github代碼庫(kù)地址:
Data-Reconcile gitee代碼庫(kù)地址:
https://gitee.com/WeBankBlockchain/Data-Reconcile
Data-Reconcile 技術(shù)文檔:
https://data-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Data-Reconcile/index.html
首次體驗(yàn)Data-Reconcile,可參考快速部署文檔:
https://data-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Data-Reconcile/install.html
向我們報(bào)告問題,歡迎提交issue:
https://github.com/WeBankBlockchain/Data-Reconcile/issue

