掌桥专利:专业的专利平台
掌桥专利
首页

基于哈希的对账方法及装置

文献发布时间:2023-06-19 10:57:17


基于哈希的对账方法及装置

技术领域

本发明涉及大数据技术领域,具体涉及一种基于哈希的对账方法及装置。

背景技术

随着银行业务快速发展,银行系统的交易量、数据量突飞猛进。与此同时,交易流程和业务功能拆分,银行系统也不断细致划分出很多业务子系统,因此一个交易流程涉及的子服务系统就会很多。为了提高性能,银行系统越来越依赖于分布式系统技术,从而导致银行系统出现大量需要核对上下游数据一致性的场景,为了进行对账而消耗的系统资源也随之持续增长。目前一般采用的手段如下:下游系统根据日志记录生成全量文件并传输到各个上游系统,上游系统过滤出与本系统相关的数据后进行排序,然后获取本地数据后也进行一次排序,之后进行两两核对找出差错。

由上述流程可见,因为要传输所有日志记录和排序,对网络带宽、存储和计算等系统资源消耗很大,随着数据量的日益增长,这一问题将日益突出。目前千万级别的数据量平均一次对账耗时在两小时左右,而实际对账发现的差错率一般在1%以内,也就是为了找出少量的差错而投入的资源成本巨大,极大影响了银行系统的正常运作。为了降低上述问题的影响,一般银行系统采用日终后台进行异步对账的方式避免影响联机业务。但是这种方式并没有从根本上解决对账耗资源的问题。

因此急需一种能够对账效率高且对账耗资源低的对账方法或装置。

发明内容

针对现有技术中的问题,本发明提供一种基于哈希的对账方法及装置,利用哈希树实现快速索引,从而实现快速对账,进而提高对账效率,降低对账耗时。

为解决上述技术问题,本发明提供以下技术方案:

第一方面,本发明提供一种基于哈希的对账方法,包括:

获取待核对的交易数据;

计算所述交易数据中每笔交易数据对应的哈希值并基于所述哈希值生成梅克尔树的叶子节点;

根据所述梅克尔树的叶子节点生成多个对账文件;

基于上游系统和下游系统各自生成的多个对账文件进行核对。

其中,所述计算所述交易数据中每笔交易数据对应的哈希值,包括:

根据每笔交易数据的对账主键进行哈希计算得到每笔交易数据对应的哈希值。

其中,根据所述梅克尔树的叶子节点生成多个对账文件,包括:

将所述梅克尔树的两两叶子节点之间进行哈希计算得到迭代后的叶子节点和一个对账文件;

对迭代后的两两叶子节点之间进行哈希计算得到二次迭代后的叶子节点和一个对账文件;

重复多次迭代后得到多个对账文件。

其中,所述基于上游系统和下游系统各自生成的多个对账文件进行核对,包括:

将上游系统和下游系统各自根节点对应的对账文件进行核对;

其中,若两个对账文件的核对结果是一致的,则对账结束;

若两个对账文件的核对结果是不一致的,则将上游系统和下游系统各自生成的多个对账文件进行两两核对,确定不一致的叶子节点以及不一致的叶子节点对应的交易数据。

进一步地,在所述计算所述交易数据中每笔交易数据对应的哈希值之后,还包括:

将所述交易数据对应的哈希值存储至目标哈希环的各个分区内;

将所述目标哈希环缓存至缓存服务器中;

其中,缓存服务器对应的缓存槽位与哈希环上的分区的位置一致。

第二方面,本发明提供一种基于哈希的对账装置,包括:

获取单元,用于获取待核对的交易数据;

计算单元,用于计算所述交易数据中每笔交易数据对应的哈希值并基于所述哈希值生成梅克尔树的叶子节点;

处理单元,用于根据所述梅克尔树的叶子节点生成多个对账文件;

对账单元,用于基于上游系统和下游系统各自生成的多个对账文件进行核对。

其中,所述计算单元包括:

计算子单元,用于根据每笔交易数据的对账主键进行哈希计算得到每笔交易数据对应的哈希值。

其中,所述处理单元包括:

第一计算子单元,用于将所述梅克尔树的两两叶子节点之间进行哈希计算得到迭代后的叶子节点和一个对账文件;

第二计算子单元,用于对迭代后的两两叶子节点之间进行哈希计算得到二次迭代后的叶子节点和一个对账文件;

迭代子单元,用于重复多次迭代后得到多个对账文件。

其中,所述对账单元包括:

对账子单元,用于将上游系统和下游系统各自根节点对应的对账文件进行核对;

其中,若两个对账文件的核对结果是一致的,则对账结束;

若两个对账文件的核对结果是不一致的,则将上游系统和下游系统各自生成的多个对账文件进行两两核对,确定不一致的叶子节点以及不一致的叶子节点对应的交易数据。

进一步地,还包括:

存储单元,用于将所述交易数据对应的哈希值存储至目标哈希环的各个分区内;

缓存单元,用于将所述目标哈希环缓存至缓存服务器中;

其中,缓存服务器对应的缓存槽位与哈希环上的分区的位置一致。

第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的基于哈希的对账方法的步骤。

第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的基于哈希的对账方法的步骤。

由上述技术方案可知,本发明提供一种基于哈希的对账方法及装置,通过哈希计算将交易数据转换为哈希值,有效缩小任意长度的交易数据为固定大小,降低数据核对的难易程度;通过生成梅克尔树及多个对账文件,有效减少需要核对的数据量,有效提高对账的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为对账的上下游系统结构图。

图2为本发明实施例中的基于哈希的对账方法的第一流程示意图。

图3为本发明实施例中的基于哈希的对账方法的第二流程示意图。

图4为对账数据通过哈希环再分配的示意图。

图5为对账数据由缓存转变为文件的过程示意图。

图6为对账的过程示意图。

图7为本发明实施例中的基于哈希的对账装置的一种结构示意图。

图8为本发明实施例中的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种基于哈希的对账方法,该方法通过缓存的方式进行数据保存和快速索引,以及生成对账文件并对该对账文件进行拆分,实现快速对账,解决银行系统上下游数据两两核对耗时耗资源的问题。

本发明实施例提供一种上游系统和下游系统的具体结构,参见图1所示,本发明实施例中涉及的上游系统和下游系统具体包含以下设备或装置。

上游数据库服务器[1.1],用于保存上游交易流程中的数据记录。

上游应用服务器[1.2],用于上游处理交易,并访问数据库服务器保存交易数据,同时调用下游服务器完成交易。并且在对账流程中访问缓存服务器保存对账数据,访问文件服务器生成对账文件。

上游缓存服务器[1.3],用于保存上游对账流程中经过加工的临时原始对账数据。

上游文件服务器[1.4],用于保存上游应用服务器生成的待对账的数据文件,以及保存接收到的下游待对账的数据文件。

下游数据库服务器[1.5],用于保存下游交易流程中的数据记录。

下游应用服务器[1.6],用于接收上游交易调用请求并处理,访问数据库服务器保存交易数据。并且在对账流程中访问缓存服务器保存对账数据,访问文件服务器生成对账文件。

下游缓存服务器[1.7],用于保存下游对账流程中经过加工的临时原始对账数据。

下游文件服务器[1.8],用于保存下游应用服务器生成的待对账的数据文件,以便发送上游。

基于上述上游系统和下游系统,本发明提供一种基于哈希的对账方法的实施例,参见图2,所述基于哈希的对账方法具体包含有如下内容:

S101:获取待核对的交易数据;

S102:计算所述交易数据中每笔交易数据对应的哈希值并基于所述哈希值生成梅克尔树的叶子节点;

在本步骤中,计算所述交易数据中每笔交易数据对应的哈希值,包括:

根据每笔交易数据的对账主键进行哈希计算得到每笔交易数据对应的哈希值。

S103:根据所述梅克尔树的叶子节点生成多个对账文件;

在本步骤中,将所述梅克尔树的两两叶子节点之间进行哈希计算得到迭代后的叶子节点和一个对账文件;

对迭代后的两两叶子节点之间进行哈希计算得到二次迭代后的叶子节点和一个对账文件;

重复多次迭代后得到多个对账文件。

S104:基于上游系统和下游系统各自生成的多个对账文件进行核对。

在本步骤中,将上游系统和下游系统各自根节点对应的对账文件进行核对;

其中,若两个对账文件的核对结果是一致的,则对账结束;

若两个对账文件的核对结果是不一致的,则将上游系统和下游系统各自生成的多个对账文件进行两两核对,确定不一致的叶子节点以及不一致的叶子节点对应的交易数据。

在本实施例中,下游应用服务器[1.6]把对账文件[3.2]发送给上游应用服务器[1.2],上游应用服务器[1.2]用同样的过程生成对账文件[4.1]。由上述过程可见,由于环大小固定,生成的树的叶子节点数固定,且相同数据所处的位置保持不变,因此上下游生成的Merkle树深度一致,最终原始数据两两对账可以变为树的比较。

上游应用服务器[1.2]针对23个文件进行两两核对。理想情况下,如果账务一致,则只需核对文件23比较一次哈希后即可获得对账成功的结果。

一般情况下,如果存在记录不一致,则需要顺序扫描23个文件后,找到不一致的Merkle trees叶子节点。进行树对比的过程中,只有不一致的叶子节点导致的树访问路径需要进行对比,其它树结点不需要比对。

根据比对后的结果,上游应用再通知下游应用按照不一致的Merkle trees叶子节点生成原始数据文件[4.2]进行具体数据的核对,找出不一致的记录。

从上述描述可知,本发明实施例提供的基于哈希的对账方法,通过哈希计算将交易数据转换为哈希值,有效缩小任意长度的交易数据为固定大小,降低数据核对的难易程度;通过生成梅克尔树及多个对账文件,有效减少需要核对的数据量,有效提高对账的效率。

在本发明的一实施例中,参见图3,所述基于哈希的对账方法的步骤S101之后,具体包含有如下内容:

S105:将所述交易数据对应的哈希值存储至目标哈希环的各个分区内;

S106:将所述目标哈希环缓存至缓存服务器中;

其中,缓存服务器对应的缓存槽位与哈希环上的分区的位置一致。

在本实施例中,生成对账文件的过程。对账数据首先通过哈希环再分配存入缓存,然后再生成merkle trees(梅克尔树)对账文件:

参见图4、图5和图6,先从下游数据库服务器[1.5]查询出所有交易数据(此处例子为1亿条),针对每笔数据的对账主键计算哈希值,对应到一个2的22次方的哈希环[2.1]内,即1亿条记录分散到4百万(4194304)个分区内,平均每个分区约23条记录。由于分区数为数据总数的20分之1,按照哈希的特定,可以认为每个分区都大概率存在记录,即浪费分区的可能性极低。

计算出交易数据所属的哈希环分区后,交易数据保存到下游缓存服务器[1.7]中,对应的缓存槽位与哈希分区的位置一致,由此确保同一条记录必定位于一个固定的槽位内。

缓存中相同位置的记录,通过链[2.2]的方式进行排序保存,由此确保同一条记录必定位于指定槽内的固定顺序位置中。

所有记录都进入缓存后,即可顺序访问缓存计算各个槽位的哈希值,生成(梅克尔树)Merkle trees[3.1]的叶子节点,顺序记录到文件1[3.2]中,然后扫描文件1[3.2],把其中的记录两两计算哈希值再生成文件2[3.2],如此循环23次后即可得出代表Merkle trees[3.1](梅克尔树)的根节点文件23[3.2]。

从上述描述可知,本发明实施例提供的基于哈希的对账方法,通过对待核对数据计算哈希值从而缩减数据的大小,并且利用哈希保留数据特征的特点缩减需核对的数据量,进一步利用哈希树实现快速索引,从而实现快速对账,解决对账耗时耗资源的问题。

进一步地说明本方案,本发明提供一种基于哈希的对账方法中,哈希环的大小及缓存链长度的大小需要根据实际情况进行动态调整,达到最优效果,例如:

1、一般哈希值长度为19位字符,而银行业务中至少对账字段包括卡号账号、事件编号、金额,即使用哈希值代表一条记录,长度大小最大只为原来的1/3。

2、按照1亿(10

3、按照普遍差错率1%计算,即1百万(10

一、如果使用2的22次方的哈希环(小于1亿),则:

数据传输为原来的23%;

(2^23×1/3+10^8×1%×20)/10^8;

树节点数×长度比例+差错数据×链长/原始数据量;

数据比对次数为原来的25%;

(2^21+(23-20)×10^6+10^6×20)/10^8;

1百万差错数据,在树深20以下所有节点都需要访问一次且仅一次;

在树深20以上每层按照1百万的差错节点进行访问;

1百万差错数据在链长20中每次都要完整访问;

二、如果使用2的27次方的哈希环(大于1亿),则:

(1)数据传输为原来的66%;

(2亿×1/3)/1亿;

树有效节点数×长度比例/原始数据量;

(2)数据比对次数为原来的10%;

(2^21+(28-20)×10^6)/10^8;

1百万差错数据,在树深20以下所有节点都需要访问一次且仅一次;

在树深20以上每层按照1百万的差错节点进行访问。

本发明实施例提供一种能够实现所述基于哈希的对账方法中全部内容的基于哈希的对账装置的具体实施方式,参见图7,所述基于哈希的对账装置具体包括如下内容:

获取单元10,用于获取待核对的交易数据;

计算单元20,用于计算所述交易数据中每笔交易数据对应的哈希值并基于所述哈希值生成梅克尔树的叶子节点;

处理单元30,用于根据所述梅克尔树的叶子节点生成多个对账文件;

对账单元40,用于基于上游系统和下游系统各自生成的多个对账文件进行核对。

其中,所述计算单元包括:

计算子单元,用于根据每笔交易数据的对账主键进行哈希计算得到每笔交易数据对应的哈希值。

其中,所述处理单元包括:

第一计算子单元,用于将所述梅克尔树的两两叶子节点之间进行哈希计算得到迭代后的叶子节点和一个对账文件;

第二计算子单元,用于对迭代后的两两叶子节点之间进行哈希计算得到二次迭代后的叶子节点和一个对账文件;

迭代子单元,用于重复多次迭代后得到多个对账文件。

其中,所述对账单元包括:

对账子单元,用于将上游系统和下游系统各自根节点对应的对账文件进行核对;

其中,若两个对账文件的核对结果是一致的,则对账结束;

若两个对账文件的核对结果是不一致的,则将上游系统和下游系统各自生成的多个对账文件进行两两核对,确定不一致的叶子节点以及不一致的叶子节点对应的交易数据。

进一步地,还包括:

存储单元,用于将所述交易数据对应的哈希值存储至目标哈希环的各个分区内;

缓存单元,用于将所述目标哈希环缓存至缓存服务器中;

其中,缓存服务器对应的缓存槽位与哈希环上的分区的位置一致。

本发明提供的基于哈希的对账装置的实施例具体可以用于执行上述实施例中的基于哈希的对账方法的实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。

从上述描述可知,本发明实施例提供的基于哈希的对账装置,通过哈希计算将交易数据转换为哈希值,有效缩小任意长度的交易数据为固定大小,降低数据核对的难易程度;通过生成梅克尔树及多个对账文件,有效减少需要核对的数据量,有效提高对账的效率。

本申请提供一种用于实现所述基于哈希的对账方法中的全部或部分内容的电子设备的实施例所述电子设备具体包含有如下内容:

处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现所述基于哈希的对账方法的实施例及用于实现所述基于哈希的对账装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。

图8为本申请实施例的电子设备9600的系统构成的示意框图。如图8所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图8是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。

在另一个实施方式中,基于哈希的对账装置可以与中央处理器9100分开配置,例如可以将基于哈希的对账配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现基于哈希的对账功能。

如图8所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图8中所示的所有部件;此外,电子设备9600还可以包括图8中没有示出的部件,可以参考现有技术。

如图8所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。

其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。

输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。

该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。

存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。

虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。

本领域技术人员应明白,本说明书的实施例可提供为方法、装置(系统)或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

相关技术
  • 基于哈希的对账方法及装置
  • 基于双计数布鲁姆过滤器的哈希方法和哈希装置
技术分类

06120112739171