数据对账组件Data-Reconcile:高效可信对账利器
数据治理通用组件WeBankBlockchain-Data当前3个子组件——数据仓库组件Data-Stash、数据导出组件Data-Export、数据对账组件Data-Reconcile,相互独立、可插拔、可灵活组装。
其中, 数据仓库组件Data-Stash通过为节点在外部生成全量数据备份,实现海量数据高效治理,关键特性和使用方式参见《数据仓库组件Data-Stash:助力区块链节点“轻装上阵”》。
数据导出组件Data-Export提供通用化、智能化、标准化的数据导出解决方案,降低区块链数据开发门槛,关键特性和使用方式参见《数据导出组件Data-Export:数据分析处理“加速器”》。
本文将介绍数据对账组件Data-Reconcile,欢迎大家积极体验,并将使用诉求或优化建议反馈给我们。
认识Data-Reconcile
任何多方参与的交易系统,如订单系统、支付系统等,对账都是清结算交易生命周期中的重要环节,交易各方需要针对订单等交易数据和金额进行查漏补缺,直到账务完全对平。
传统企业间对账,一般按交易场次或交易日定时对账,存在较长的延时,如在交易期间出现账务不平的情况,则需要人工介入,手动追踪和确认问题,耗时耗力。同时,传统多方对账依赖于某个权威机构的信用,账务通常以中心机构的账本为准,存在一定信用和操作风险,如出现中心机构账本被恶意篡改,则影响对账多方的账务准确性和资金安全性。
针对上述问题,Data-Reconcile提供一种基于区块链的通用化数据对账解决方案,并支持对账框架动态可扩展,支持定制化开发。Data-Reconcile能够在对账不一致的情况下,找到一个可信的客观依据,从而减少因对账不平造成的排查成本。
基于区块链的数据对账,不仅能解决对账不平问题,还可大幅提升对账效率,将传统的多场次或T+1对账机制提升为准实时对账,实现“交易即对账”。
Data-Reconcile的拓扑图如下所示:
多方业务数据上链后,可借助数据导出Data-Export作为获取链上数据的桥梁,通过Data-Export将数据实时从链上导出。配置双方对账规则后,部署Data-Reconcile,组件将链上相关数据生成对账文件,并和从远端获取的对账文件进行数据核对,完成对账。
Data-Reconcile关键特性一览
Data-Reconcile抽象了交易系统通用对账流程,提供灵活可配置的区块链数据对账解决方案,支持自定义对账数据和对账格式,支持定时对账和触发对账任务,提供多种扩展点,以便对账处理模块二次开发。
Data-Reconcile不仅适用于狭义上的交易对账,同样也适用于任何需要进行数据核对的业务场景。
1)灵活可配置的数据对账规则
针对不同场景下对账数据的不同,Data-Reconcile支持自定义对账数据及格式,只需配置对账字段映射规则,即可完成对账数据格式的定义。
对于不同的文件格式,Data-Reconcile默认支持txt、json文件格式,也支持通过扩展接口进行定制开发。
同时,两方对账文件传输时,需对文件进行托管,如文件管理器或服务器,Data-Reconcile默认支持FTP方式,支持扩展。
2)提供对账任务调度管理
Data-Reconcile提供对账任务调度管理,调用方式包括手动或自动,可通过配置自定义任务频次、对账时间;支持全流程追踪任务的状态变更,对失败和超时任务执行补偿、重试等处理,以保证对账任务的稳定执行。
对账任务的调度支持并行处理,提升对账效率。
3)可插拔、可扩展的对账流程
为满足不同场景下的对账需求,Data-Reconcile在提供通用对账实现的同时,支持流程的扩展,主要包括任务调度处理、对账数据获取、对账解析、执行、结果处理等步骤,可按需组装,灵活可插拔;处理流程支持定制化开发,易于扩展。
Data-Reconcile整体架构
Data-Reconcile的整体架构如下图所示,包括基础模块、对账数据传输模块、对账消息模块、对账执行模块。
基础模块:负责对上层业务模块的技术支持,提供文件和消息传输、任务全流程调度追踪、配置管理、对账文件快速生成和读取的能力。 数据传输模块:负责链上数据获取,对账文件获取和推送。 对账消息模块:负责与对账方通信,主要提供对账请求和对账结果通知等能力。 对账模块:负责对账的具体执行和处理,提供对文件的解析、数据提取、对账逻辑处理、结果导出等功能。
Data-Reconcile在对账流程设计上,采用了责任链+模板方法的设计模式,实现各功能模块可插拔、可扩展。
流程核心接口如下:
ReconcileHandlerChain:负责对账处理流程的构建,是对账处理的入口。 ReconcileTaskHandler:负责对任务的调度执行,包括对账任务创建、执行、 状态变更和全流程追踪。 ReconcileFileObtainHandler:负责对账文件获取,提供链上对账数据获取、对账文件生成、远端文件获取等能力。 ReconcileExecuteHandler:负责对账处理,提供对账文件解析、配对、数据并行处理对账等能力。 ReconcileResultHandler:负责对账结果处理,提供对账结果文件生成、对账结果推送、消息发送等能力。
Data-Reconcile如何实现对账
在多方交易的数据交互场景中,各方数据上链后,由参与者中的对账需求方部署Data-Reconcile进行对账处理,多方对账的调用时序图如下:
1)搭建文件资源中心
对账执行方在核算前需获取对账参与方的对账文件,此时可通过搭建文件资源中心,如FTP,来作为对账文件的传输中心;对账数据提供方则需将对账文件推送至传输中心。
2)搭配数据导出
对账执行方通过数据导出Data-Export将链上数据实时导出到链下,以此作为对账的依据,更多数据导出组件的使用方式可参见《数据导出组件Data-Export:数据分析处理“加速器”》。
3)部署Data-Reconlie
Data-Reconcile支持对对账时间、规则、任务调度、文件传输等进行自定义配置,任务调度、文件传输等模块会根据配置提供相关能力。
任务调度
任务调度配置包括调用方式、对账时间及数据范围、超时和失败的任务补偿等。
对账任务状态及对应场景如下:
状态 | 场景 |
待执行-0(初始态) | 任务创建时 |
执行中-1 (中间态) | 对账进行中 |
已完成-2(终态) | 对账完成时 |
执行失败-3(中间态) | 异常 |
结束终止-4(终态) | 任务超时、重试次数达到上限 |
Data-Reconcile会根据任务的配置对执行中、执行失败两个中间态进行补偿。同时,对账执行支持手动调用方式,可通过Restful API请求方式触发对账。
文件传输
文件传输支持本地或远程FTP两种模式。本地模式支持从本地直接获取待对账文件,与链上导出数据进行对账;远程模式多适用于跨机构等场景,定期拉取远端文件进行对账。
通用对账规则定义
链上数据获取配置:在Data-Export将数据导出到链下后,Data-Reconcile通过数据库直接获取链上数据,配置包括查询sql和时间范围字段等配置。 对账文件格式配置:通过该配置可确定文件解析的方法,如txt文件,则采用对应的解析器来解析文件。 对账数据规则配置:包括对账双方数据条目的唯一键配置,数据字段映射的配置,执行时将按照配置的映射规则和字段进行解析匹配,解析后转交由对账处理模块对账目进行核算处理。
开启对账
配置完成后,部署Data-Reconcile并开启对账,通过日志和任务状态表可实时查看对账进度。
4)对账执行和结果获取
Data-Reconcile定期从文件传输中心获取对账数据提供方推送的待对账文件,同时将Data-Export导出的链上数据生成对账文件,交由数据提取模块对文件进行逐条解析。匹配后的数据交由对账处理模块并行执行对账逻辑,完成后将结果生成文件保存,并推送至远端文件传输中心,供对账参与方获取对账结果。
Data-Reconcile应用场景示例
在供应链金融、第三方支付等业务场景中,上下游企业间在合作中存在大量转账、交易等数据交互。这些数据分别保存在各自企业中心化管理的数据库中,清算时,需要对这些数据进行账目的比对,以保证互相之间账目数据的一致和准确。
在使用传统中心化对账方式时,由于需依赖于企业各自的中心化账本,对账时存在账目可信的问题,且对账周期较长,效率也待提升。
此时,企业间可通过FISCO BCOS搭建联盟链,并将交易数据上传到链上保存;对账时,使用Data-Reconcile,并根据自身需求定制开发,对企业间数据进行可信核算对账,在确保对账结果可信的同时提升对账效率。
即刻使用
上述功能所涉及的最新代码和技术文档已同步更新,欢迎体验和 star 支持。如需咨询技术问题,欢迎关注本公众号,对话框回复【小助手】进技术交流群。
Data-Reconcile github代码库地址:
Data-Reconcile gitee代码库地址:
https://gitee.com/WeBankBlockchain/Data-Reconcile
Data-Reconcile 技术文档:
https://data-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Data-Reconcile/index.html
首次体验Data-Reconcile,可参考快速部署文档:
https://data-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Data-Reconcile/install.html
向我们报告问题,欢迎提交issue:
https://github.com/WeBankBlockchain/Data-Reconcile/issue