数据治理通用组件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代码库地址:

https://github.com/WeBankBlockchain/Data-Reconcile

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

数据对账组件Data-Reconcile:高效可信对账利器相关推荐

  1. 中国科学院计算机网络信息中心科学数据中心,中科院计算机网络信息中心发布系列可信共享科学数据公共服务...

    开放数据联盟链白皮书发布仪式. 孙自法 摄 中新网北京1月27日电 (记者 孙自法)中国科学院计算机网络信息中心27日下午在北京举办"可信共享的科学数据公共服务发布会",正式推出开 ...

  2. 本体技术视点 | 数据的去中心化协作和可信流动(一)

    近日,本体首席技术专家 Ning Hu 受邀亮相由 ECUG 社区主办的 2021 ECUG Con 全球技术大会,介绍利用分布式网络为链上和链下数据的融合互通提供可信.安全.高效的集成协议和操作灵活 ...

  3. WeBankBlockchain-Data-Reconcile---基于区块链的对账组件

    简介 传统企业间的对账,依赖于对账双方的中心化账本.中心化账本在对账期间如果出现账不平的情况,排查非常耗时耗力.区块链作为信任的机器,具有不可篡改.分布式账本等特性,基于区块链的对账能够在对账不一致的 ...

  4. vue父组件ajax改变数据,vue父组件传了变量给子组件,改变子组件的对象时,父组件也跟着改变...

    1.问题场景 首先我在父页面引用了一个子组件,当点击的时候我会传值给子组件 showItem(stepJsonItem: any) { var viewDlg = this.$refs.viewIte ...

  5. 组件间数据交互||父组件向子组件传值-基本使用|| 父组件向子组件传值-props属性名规则

    组件间数据交互 父组件向子组件传值 1. 组件内部通过props接收传递过来的值 2. 父组件通过属性将值传递给子组件 父组件向子组件传值-基本使用 <!DOCTYPE html> < ...

  6. 【自动驾驶】3. DDS 数据分发服务(Data Distribution Service)

    DDS 数据分发服务(Data Distribution Service) 数据分发服务DDS(DataDistributionService)是对象管理组织(OMG)在HLA及CORBA等标准的基础 ...

  7. 大数据生态圈常用组件(二):概括介绍、功能特性、适用场景

    三更灯火五更鸡,正是男儿读书时. 小编整理了一些常用的大数据组件,使用场景及功能特性,希望对后浪有所帮助. 分类 名称 简介 功能特点 使用场景 大数据存储 HDFS HDFS是一个分布式的文件系统, ...

  8. vue 父向子组件传递数据,子组件向父组件传递数据方式

    父组件向子组件传递数据通过props,子组件引入到父组件中,设置一个值等于父组件的数据,通过:bind将数据传到子组件中,子组件中通过props接收父组件的数据,这样就可以使用父组件的数据了,循环组件 ...

  9. vue的组件/data的参数/组件传值/插槽/侦听器/生命周期钩子函数

    目录 组件结构 组件的命名规则: 组件的data参数 <font color='red'> 组件的父子传值prop(通信) <font color='red'>组件的子--&g ...

最新文章

  1. 2016年宜昌楼市将迎来史上最激烈一战
  2. mysql导入导出数据库
  3. Oracle 的一些语句
  4. C# Regex类详解
  5. SpringMVC拦截器(interceptors)
  6. 东莞华勤通讯软件测试怎么样,【社招】华勤通讯NBD测试验证部急聘岗位-东莞...
  7. php 判断 单选按钮事件,jquery如何判断单选按钮是否选中
  8. Python中的各种if语句(if条件判断、if...else、if...elif...else、if...else嵌套)
  9. 1.4部署到IIS「深入浅出ASP.NET Core系列」
  10. php fig是什么,还是看好 PHP-FIG
  11. matlab信号探测,信号检测与估matlab仿真报告.doc
  12. linux没有telnet命令
  13. 一个案例入门tableau——NBA球队数据可视化实战解析
  14. python url转码_URL转码,encodeURI,encodeURIComponent — 在线工具
  15. java计算机毕业设计高校疫情管理源程序+mysql+系统+lw文档+远程调试
  16. cannot find -l****问题的解决办法
  17. 移植实时操作系统到 risc-v 架构芯片时上下文切换的实现
  18. 』 [大话IT]我编的计算机基础教材,大家批判批判
  19. 使用getUserMedia实现录像
  20. 手机 听广播 不用 耳机 android,FM手机调频收音机无广告

热门文章

  1. 知识追踪(一):BKT
  2. 函数的返回值return
  3. 苹果cmsv8手机免费黑色影视模板源码
  4. 《后来的我们》退票风波 猫眼回应暂不确定人为or机器刷票
  5. Mathtype打印实数域R等空心体
  6. 关于360安全软件锁定浏览器的解决办法
  7. 瓦尔机器人智能行李箱_智能行李箱有多智能_智能行李箱解放你的双手-太平洋IT百科...
  8. spring-boot-maven-plugin:2.3.2.RELEASE:repackage failed: Unable to find main class
  9. c语言字符数组英文倒序输出,字符串中的每个单词倒序输出问题
  10. C/C++游戏开发:用C++打造曾经风靡的推箱子游戏,这个真有意思!