数据处理方法、装置、计算机设备和存储介质转让专利

申请号 : CN202111474538.2

文献号 : CN113901395B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈嘉兴王亚波

申请人 : 深圳市名竹科技有限公司

摘要 :

本申请涉及一种数据处理方法、装置、计算机设备和存储介质。方法包括:终端发送的数据读取请求;根据数据读取请求所对应的存储文件,通过随机算法选取校验数据块;获取存储文件对应的目标哈希树,目标哈希树中包括根节点所在层至第M层的数据,M为正整数,根节点中存储有第一哈希值,每个叶子节点对应存储文件的一个数据块;根据校验数据块和目标哈希树计算目标哈希树的根节点对应的第二哈希值;若第一哈希值和第二哈希值相同,则将存储文件中与数据读取请求对应的数据返回至所述终端。本申请通过随机选取校验数据块对存储文件的真实性进行校验,可降低CDN节点的存储压力,降低校验计算复杂度,大大提高对用户所请求读取的数据安全性的校验效率。

权利要求 :

1.一种数据处理方法,其特征在于,所述方法包括:接收终端发送的数据读取请求;

根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;

获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;

根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;

若所述第一哈希值和所述第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端;

所述根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值,包括:

获取所述目标哈希树的参数信息和校验数据块信息;

根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值;

根据所述目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除所述目标节点外的节点哈希值,计算所述目标哈希树的根节点对应的第二哈希值;

所述根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值,包括:获取所述目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息;

根据所述目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;所述重构树为所述目标哈希树的一部分,且所述重构树的叶子节点与所述目标哈希树的部分叶子节点相同;

根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据;

根据所述重构树的所有叶子节点数据和所述哈希树分叉数,确定所述重构树的根节点哈希值,将所述重构树的根节点哈希值作为所述目标哈希树中第M层的目标节点哈希值。

2.根据权利要求1所述的方法,其特征在于,所述目标哈希树的生成方式,包括:获取源服务器所发送的存储文件;

对所述存储文件进行分块,得到大小相同的多个数据块;

将所述多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值;

从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。

3.根据权利要求2所述的方法,其特征在于,所述从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树,包括:将所述初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层数据的目标哈希树。

4.根据权利要求2所述的方法,其特征在于,所述从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树,包括:计算所述初始哈希树中每层节点存储的数据的大小;

在所述初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,得到包含根节点所在层至第M层数据的目标哈希树。

5.根据权利要求1所述的方法,其特征在于,所述根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据,包括:根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定所述重构树的开始叶子节点和末尾叶子节点的位置信息;

根据所述重构树的所述开始叶子节点和所述末尾叶子节点的位置信息,确定所述重构树的所有叶子节点的位置信息及对应的数据。

6.根据权利要求1所述的方法,其特征在于,所述根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据,还包括:根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定所述重构树的开始叶子节点位置信息;

根据所述重构树的所述开始叶子节点位置信息和所述重构树的叶子节点数量,确定所述重构树的所有叶子节点的位置信息及对应的数据。

7.一种数据处理装置,其特征在于,所述装置包括:接收模块,用于接收终端发送的数据读取请求;

选择模块,用于根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;

获取模块,用于获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;

计算模块,用于根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;

返回模块,用于若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端;

所述计算模块,包括:

信息单元,用于获取所述目标哈希树的参数信息和校验数据块信息;

确定单元,根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值;

计算单元,用于根据所述目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除所述目标节点外的节点哈希值,计算所述目标哈希树的根节点对应的第二哈希值;

所述确定单元,包括:

获取模组,用于获取所述目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息;

第一确定模组,用于根据所述目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;所述重构树为所述目标哈希树的一部分,且所述重构树的叶子节点与所述目标哈希树的部分叶子节点相同;

第二确定模组,用于根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据;

第三确定模组,用于根据所述重构树的所有叶子节点数据和所述哈希树分叉数,确定所述重构树的根节点哈希值,将所述重构树的根节点哈希值作为所述目标哈希树中第M层的目标节点哈希值。

8.根据权利要求7所述的数据处理装置,其特征在于,还包括哈希模块,用于生成目标哈希树,包括:

获取单元,用于获取源服务器所发送的存储文件;

分块单元,用于对所述存储文件进行分块,得到大小相同的多个数据块;

构建单元,用于将所述多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值;

生成单元,用于从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。

9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。

说明书 :

数据处理方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及数据存储技术领域,特别是涉及一种数据处理方法、装置、计算机设备和存储介质。

背景技术

[0002] 随着内容分发网络(Content Delivery Network,CDN)的快速发展,越来越多的用户通过CDN来获取源服务器的文件数据。CDN是构建在现有网络基础之上的智能虚拟网络,
由分布在不同区域的边缘节点服务器群组成的分布式网络,通过中心平台的负载均衡、内
容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速
度和命中率。CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下
载、视音频点播、直播流媒体、全站加速、安全加速。因此,为了保证CDN节点中所存储文件的
安全性,确认所存储文件是否被篡改是非常有必要的。
[0003] 传统技术中,针对CDN节点中缓存的文件,在进行文件读取时对文件的安全性校验效率较低。

发明内容

[0004] 基于此,有必要针对上述技术问题,提供一种能够提高文件安全性校验效率的数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
[0005] 第一方面,本申请提供了一种数据处理方法。所述方法包括:
[0006] 接收终端发送的数据读取请求;
[0007] 根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
[0008] 获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储
文件的一个数据块;
[0009] 根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
[0010] 若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0011] 在其中一个实施例中,所述目标哈希树的生成方式,包括:
[0012] 获取源服务器所发送的存储文件;
[0013] 对所述存储文件进行分块,得到大小相同的多个数据块;
[0014] 将所述多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值;
[0015] 从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
[0016] 在其中一个实施例中,所述从所述初始哈希树中得到包含根节点所在层至第M层的目标哈希树,包括:
[0017] 将所述初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层的目标哈希树。
[0018] 在其中一个实施例中,所述从所述初始哈希树中得到包含根节点所在层至第M层的目标哈希树,包括:
[0019] 计算所述初始哈希树中每层节点存储的数据的大小;
[0020] 在所述初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,得到包含根节点所在层至第M层的目标哈希树。
[0021] 在其中一个实施例中,所述根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值,包括:
[0022] 获取所述目标哈希树的参数信息和校验数据块信息;
[0023] 根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值;
[0024] 根据所述目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除所述目标节点外的节点哈希值,计算所述目标哈希树的根节点对应的第二哈希
值。
[0025] 在其中一个实施例中,所述根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值,包括:
[0026] 获取所述目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息;
[0027] 根据所述目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;所述重构树为所述目标哈希树的一部分,且所述重构树的叶子节点与所述目标哈希树
的部分叶子节点相同;
[0028] 根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据;
[0029] 根据所述重构树的所有叶子节点数据和所述哈希树分叉数,确定所述重构树的根节点哈希值,将所述重构树的根节点哈希值作为所述目标哈希树中第M层的目标节点哈希
值。
[0030] 第二方面,本申请还提供了一种数据处理装置。所述装置包括:
[0031] 接收模块,用于接收终端发送的数据读取请求;
[0032] 选择模块,用于根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
[0033] 获取模块,用于获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节
点对应所述存储文件的一个数据块;
[0034] 计算模块,用于根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
[0035] 返回模块,用于若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0036] 第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0037] 接收终端发送的数据读取请求;
[0038] 根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
[0039] 获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储
文件的一个数据块;
[0040] 根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
[0041] 若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0042] 第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0043] 接收终端发送的数据读取请求;
[0044] 根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
[0045] 获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储
文件的一个数据块;
[0046] 根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
[0047] 若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0048] 第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
[0049] 接收终端发送的数据读取请求;
[0050] 根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
[0051] 获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储
文件的一个数据块;
[0052] 根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
[0053] 若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0054] 上述数据处理方法、装置、计算机设备、存储介质和计算机程序产品,通过接收终端发送的数据读取请求;根据所述数据读取请求所对应的存储文件,通过随机算法选取校
验数据块;获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至
第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存
储文件的一个数据块;根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节
点对应的第二哈希值;若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据
读取请求对应的数据返回至所述终端。本申请通过随机选取校验数据块,结合目标哈希树
中保留的M层数据,即可对存储文件的真实性进行校验,降低了CDN节点的存储压力,同时降
低了校验计算复杂度,可大大提高对用户所请求读取的数据安全性的校验效率。

附图说明

[0055] 图1为一个实施例中数据处理方法的应用环境图;
[0056] 图2为一个实施例中数据处理方法的流程示意图;
[0057] 图3为一个实施例中目标哈希树的生成方式的流程示意图;
[0058] 图4为另一个实施例中目标哈希树的生成方式的流程示意图;
[0059] 图5为一个实施例中步骤308的流程示意图;
[0060] 图6为一个实施例中步骤208的流程示意图;
[0061] 图7为一个实施例中步骤604的流程示意图;
[0062] 图8为一个实施例中目标哈希树和重构树的结构示意图;
[0063] 图9为一个实施例中数据处理装置的结构框图;
[0064] 图10为一个实施例中计算机设备的内部结构图。

具体实施方式

[0065] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不
用于限定本申请。
[0066] 本申请实施例提供的数据处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与CDN节点104进行通信,CDN节点104与源服务器106连接,源服务器106将
需要存储的文件发送至CDN节点104中。终端102向CDN节点104发起数据读取请求,CDN节点
104接收终端发送的数据读取请求;根据所述数据读取请求所对应的存储文件,通过随机算
法选取校验数据块;获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点
所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对
应所述存储文件的一个数据块;根据所述校验数据块和所述目标哈希树计算所述目标哈希
树的根节点对应的第二哈希值;若第一哈希值和第二哈希值相同,则将所述存储文件中与
所述数据读取请求对应的数据返回至所述终端102。其中,终端102可以但不限于是各种个
人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备
可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智
能手环、头戴设备等。CDN是构建在现有网络基础之上的智能虚拟网络,由分布在不同区域
的边缘节点服务器群组成的分布式网络,CDN中分布在不同区域的边缘节点服务器称为CDN
节点104,源服务器106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0067] 随着CDN内容分发网络的快速发展,越来越多的用户通过CDN节点来获取源服务器的文件数据,为了保证CDN节点中存储文件的安全性,校验CDN节点中的存储文件是否被篡
改是有必要的。现有的篡改校验技术一般是基于计算文件哈希值的方式,这种方式又分为
全量计算文件哈希值和选取文件部分计算哈希值。全量计算文件哈希值的方式是指选取存
储文件的全部数据进行校验,这种方式在针对大文件的篡改校验时会花费大量的时间;而
选取文件部分计算哈希值的方式,一般是选取固定位置上的数据来计算哈希值,比如选取
文件头、文件尾以及中间的部分数据,但是未被选取的部分的数据是否被篡改不能被准确
校验出来,校验的准确性较低,导致用户读取的数据安全性较低。
[0068] 在一个实施例中,如图2所示,提供了一种数据处理方法,以该方法应用于图1中的CDN节点为例进行说明,包括以下步骤:
[0069] 步骤202,接收终端发送的数据读取请求。
[0070] 用户从终端向CDN节点发起数据读取请求,CDN节点收到用户从终端发送的数据读取请求后,根据数据读取请求,将对应数据返回给终端。
[0071] 步骤204,根据数据读取请求所对应的存储文件,通过随机算法选取校验数据块。
[0072] 存储文件通常考虑为以数据块的形式存储在CDN节点中,也就是说,一个存储文件可划分为多个数据块,接收到终端发送的数据读取请求后,根据数据读取请求所对应的存
储文件,通过随机算法从存储文件对应的多个数据块中,选取校验数据块对所读取数据的
准确性进行校验。其中,校验数据块可以是存储文件对应的多个数据块中的一个或多个。
[0073] 在一个可选的实现方式中,根据数据读取请求所对应的存储文件的大小,确定所选取的校验数据块的数量,然后根据随机算法选取相应数量的校验数据块。一般来说,数据
读取请求所对应的存储文件越大,选取的校验数据块越多,校验的结果就越准确。
[0074] 步骤206,获取存储文件对应的目标哈希树,目标哈希树中包括根节点所在层至第M层的数据,M为正整数,根节点中存储有第一哈希值,每个叶子节点对应存储文件的一个数
据块。
[0075] 哈希树,也称默克尔树(merkle),是一种树型结构,由一个根节点、一组中间节点和一组叶节点组成,最下面的叶子节点可以存储有具体的文件数据或文件数据的哈希值,
每个中间节点及根节点都是对应各子节点内容的哈希值,哈希树通过对数据的逐级哈希
(Hash)操作确保数据的不可篡改性。叶子节点数据的任何变动,都会传递到上一级节点并
最终反应到根节点的变化。目标哈希树可以是以数据块数据或数据块数据的哈希值作为叶
子节点,根据预设分叉数构造成的哈希树结构,但是目标哈希树中存储的数据只有根节点
所在层至第M层的数据。其中,M为正整数,M小于或等于目标哈希树的总层数;分叉数是多
少,代表一个根节点有多少个子节点。目标哈希树的根节点中存储有第一哈希值,第一哈希
值是将存储文件对应的数据块数据作为叶子节点而构造的哈希树的根节点的哈希值,而且
每个叶子节点对应存储文件的一个数据块。
[0076] 步骤208,根据校验数据块和目标哈希树计算目标哈希树的根节点对应的第二哈希值。
[0077] 选取的校验数据块作为目标哈希树中的一个或多个叶子节点,结合目标哈希树的结构,计算出目标哈希树的部分连续的叶子节点,根据该部分连续的叶子节点从下往上计
算目标哈希树中其他节点的哈希值,直至计算得到至少有一个位于第M层中的节点哈希值,
并替换对应节点的原始哈希值,结合目标哈希树中所存储的节点数据,计算目标哈希树的
根节点对应的第二哈希值。
[0078] 步骤210,若第一哈希值和第二哈希值相同,则将存储文件中与数据读取请求对应的数据返回至所述终端。
[0079] 若第一哈希值和第二哈希值相同,说明当前CDN节点中存储的数据与原始写入的数据一致,并没有被篡改,则将存储文件中与数据读取请求对应的数据返回至用户终端。
[0080] 上述数据处理方法,通过接收终端发送的数据读取请求,根据数据读取请求所对应的存储文件,通过随机算法选取校验数据块;获取存储文件对应的目标哈希树,目标哈希
树中包括根节点所在层至第M层的数据,M为正整数,根节点中存储有第一哈希值,每个叶子
节点对应存储文件的一个数据块;根据校验数据块和目标哈希树计算目标哈希树的根节点
对应的第二哈希值;若第一哈希值和第二哈希值相同,则将存储文件中与数据读取请求对
应的数据返回至所述终端。通过随机选取校验数据块,结合目标哈希树中保留的M层数据,
即可对存储文件的真实性进行校验,目标哈希树中只存储了部分数据,降低了CDN节点的存
储压力,同时降低了校验计算复杂度,可大大提高对用户所请求读取的数据安全性的校验
效率。
[0081] 在一个实施例中,如图3所示,目标哈希树的生成方式,包括:
[0082] 步骤302,获取源服务器所发送的存储文件。
[0083] 步骤304,对存储文件进行分块,得到大小相同的多个数据块。
[0084] 根据CDN节点的存储情况及具体要求,对存储文件进行分块,得到预设数量的大小相同的多个数据块。
[0085] 步骤306,将多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值。
[0086] 可将多个数据块对应的数据块内容对应的哈希值作为叶子节点的内容,根据预设的哈希树分叉数构建初始哈希树。其中,预设的哈希树分叉数可以是2或者其他大于2的整
数,即初始哈希树可以是二叉树或者多叉树,具体可根据需要进行设定。
[0087] 步骤308,从初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
[0088] 初始哈希树中,将叶子节点所在层开始往上至第M‑1层的数据舍弃,选取包含根节点所在层至第M层数据后,成为目标哈希树。其中,M小于等于初始哈希树的总层数。
[0089] 在一个可选的实施方式中,如图4所示,目标哈希树的生成方式包括:
[0090] 步骤402,获取源服务器所发送的存储文件。
[0091] 步骤404,将存储文件进行分块,得到n个大小相同的数据块。
[0092] 将存储文件进行均匀分块,得到n个大小相同的数据块,其中,n为大于1的正整数。
[0093] 步骤406,将n个数据块作为叶子节点内容,以四叉树的形式构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值。
[0094] 步骤408,从初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
[0095] 将n个数据块作为叶子节点内容,以四叉树的形式构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值。那么初始哈希树的总层数为 ,即初始哈希树
的根节点存储的第一哈希值,是由初始哈希树的 层数据计算得到。从初始哈希
树中得到包含根节点所在层至第M层数据的目标哈希树,其中, 。需要说
明的是,本实施例是以四叉树的形式构建初始哈希树为例进行说明,初始哈希树也可以是
其他分叉数,例如初始哈希树可以是K叉树,其中,K为大于等于2的整数,对应地,K叉树的总
层数为 。
[0096] 上述实施例中,将初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树,即目标哈希树中并不是将初始哈希树的所有层的数据都保留,可降低CDN节点的存储压
力。
[0097] 在一个实施例中,从初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树的步骤308,包括:
[0098] 将所述初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层的目标哈希树。
[0099] 本实施例中,可预先设置好预设层,将初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层的目标哈希树。或者,可以预先设置好目标哈希
树保留的数据层数M,将初始哈希树中根节点所在层开始至第M层数据取出得到目标哈希
树。
[0100] 在一个实施例中,如图5所示,从初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树的步骤308,包括:
[0101] 步骤502,计算初始哈希树中每层节点存储的数据的大小。
[0102] 步骤504,在初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,得到包含根节点所在层至第M层数据的目标哈希树。
[0103] 本实施例中,根据存储文件的大小,提前设置一个数据量阈值,通过计算初始哈希树中每层节点存储的数据的大小,在初始哈希树中选取存储的数据的大小小于数据量阈值
的目标层,由于在哈希树中,叶子节点所在层的数据量最大,越靠近根节点层的层数据量越
小,则该目标层即是从根节点所在层至第M层,从而得到包含根节点所在层至第M层数据的
目标哈希树。例如,设置数据量阈值为1/64GB,则选取存储数据小于1/64GB的目标层,存储
数据大于1/64GB的层中的数据进行舍弃。
[0104] 在一个实施例中,如图6所示,根据校验数据块和目标哈希树计算目标哈希树的根节点对应的第二哈希值的步骤208,包括:
[0105] 步骤602,获取目标哈希树的参数信息和校验数据块信息。
[0106] 目标哈希树中包括根节点所在层至第M层数据,具有与初始哈希树相同的树结构,因此,目标哈希树的参数信息包括目标哈希树的叶子节点数、第M层节点数、分叉数、总层数
等信息。校验数据块信息包括校验数据块对应叶子节点在目标哈希树中的位置信息,以及
对应叶子节点的数据。
[0107] 步骤604,根据校验数据块信息和目标哈希树的参数信息,确定目标哈希树中第M层的目标节点哈希值。
[0108] 根据校验数据块信息和目标哈希树的参数信息,可确定至少一个位于目标哈希树中第M层的节点哈希值,该节点哈希值即为目标节点哈希值。其中,目标节点至少为一个。
[0109] 步骤606,根据目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除目标节点外的节点哈希值,计算目标哈希树的根节点对应的第二哈希值。
[0110] 在一个可能的实现方式中,将目标哈希树中第M层的目标节点哈希值替换相应节点中原来的哈希值,再结合目标哈希树中除根节点中存储的第一哈希值之外的数据,计算
目标哈希树的根节点对应的第二哈希值。
[0111] 在一个实施例中,如图7所示,根据校验数据块信息和目标哈希树的参数信息,确定目标哈希树中第M层的目标节点哈希值的步骤604,包括:
[0112] 步骤702,获取目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和校验数据块对应的叶子节点在目标哈希树中的位置信息。
[0113] 步骤704,根据目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;重构树为目标哈希树的一部分,且重构树的叶子节点与所述目标哈希树的部分叶
子节点相同。
[0114] 在一个可能的实现方式中,将目标哈希树的叶子节点数除以第M层的节点数,得到重构树的叶子节点数量。其中,重构树的叶子节点与目标哈希树的部分叶子节点相同,且重
构树为目标哈希树的一部分。
[0115] 步骤706,根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据。
[0116] 在一个可选的实施例中,根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的开始叶子节点和末尾叶子节点的位置信息;
根据重构树的开始叶子节点和末尾叶子节点的位置信息,获取重构树的所有叶子节点的位
置信息及对应的数据。
[0117] 在另一个可选的实施例中,根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的开始叶子节点位置信息;根据所述重构树
的开始叶子节点位置信息和重构树的叶子节点数量,获取重构树的所有叶子节点的位置信
息及对应的数据。
[0118] 步骤708,根据重构树的所有叶子节点数据和哈希树分叉数,确定重构树的根节点哈希值,将重构树的根节点哈希值作为目标哈希树中第M层的目标节点哈希值。
[0119] 根据重构树的所有叶子节点数据和哈希树分叉数,从下往上确定重构树的根节点哈希值,将重构树的根节点哈希值作为目标哈希树中第M层的目标节点哈希值。
[0120] 在一个可能的实现方式中,借助图8进行说明,根据校验数据块信息和目标哈希树的参数信息,确定目标哈希树中第M层的目标节点哈希值的步骤604,包括:
[0121] (1)获取目标哈希树的叶子节点数R,即为存储文件进行分块得到的数据块数量;第M层的节点数为R1,其中 ,K为目标哈希树的分叉数,分叉数通常是预先设置
好的,即第M层的节点数R1,是以哈希树的分叉数K为底,M‑1为指数的计算结果;随机选取的
一个校验数据块对应的叶子节点在目标哈希树中的位置记为i。
[0122] (2)重构树的叶子节点数R2=R/R1。
[0123] (3)重构树的开始叶子节点位置信息i0,其中 ,即将校验数据块对应的叶子节点在目标哈希树中的位置i与重构树的叶子节点数R2的商进行取整,取整结
果再乘以重构树的叶子节点数R2,得到重构树的开始叶子节点位置信息i0,重构树的开始叶
子节点位置信息i0向后移动重构树的叶子节点数减1对应的长度,得到重构树的末尾叶子
节点位置信息im,选取重构树的开始叶子节点至末尾叶子节点的所有叶子节点的位置信
息,根据初始哈希树中存储的叶子节点数据,得到重构树的所有叶子节点的位置信息及存
储的哈希值。
[0124] (4)根据重构树的所有叶子节点存储的哈希值,按照目标哈希树的分叉数,自下而上计算重构树的根节点哈希值,将重构树的根节点的哈希值作为目标哈希树中第M层的目
标节点哈希值。
[0125] 综上所述,如图8所示,若目标哈希树为M+N层结构的树,但是目标哈希树只保留有根节点所在层至第M层的数据,则重构树是一个N+1层结构的树,且重构树的根节点所在层
即是目标哈希树的第M层。
[0126] 若随机选取有多个校验数据块,则每个校验数据块按照上述步骤(1)(4)依次计~
算得到最终的目标哈希树中第M层的多个目标节点哈希值。
[0127] 应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有
明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而
且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个
阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这
些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的
步骤或者阶段的至少一部分轮流或者交替地执行。
[0128] 基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据处理方法的数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现
方案相似,故下面所提供的一个或多个数据处理装置实施例中的具体限定可以参见上文中
对于数据处理方法的限定,在此不再赘述。
[0129] 在一个实施例中,如图9所示,提供了一种数据处理装置,包括:接收模块902、选择模块904、获取模块906、计算模块908和返回模块910,其中:
[0130] 接收模块902,用于接收终端发送的数据读取请求。
[0131] 选择模块904,用于根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块。
[0132] 获取模块906,用于获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子
节点对应所述存储文件的一个数据块。
[0133] 计算模块908,用于根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值。
[0134] 返回模块910,用于若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0135] 在一个实施例中,数据处理装置还包括哈希模块,用于实现目标哈希树的生成方式,包括:
[0136] 获取单元,用于获取源服务器所发送的存储文件;
[0137] 分块单元,用于对所述存储文件进行分块,得到大小相同的多个数据块;
[0138] 构建单元,用于将所述多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值;
[0139] 生成单元,用于从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
[0140] 在一个实施例中,生成单元,还用于:将所述初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层的目标哈希树。
[0141] 在一个实施例中,生成单元,还用于:计算所述初始哈希树中每层节点存储的数据的大小;在所述初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,得到包含
根节点所在层至第M层的目标哈希树。
[0142] 在一个实施例中,计算模块908,包括:
[0143] 信息单元,用于获取所述目标哈希树的参数信息和校验数据块信息。
[0144] 确定单元,根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值。
[0145] 计算单元,用于根据所述目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除所述目标节点外的节点哈希值,计算所述目标哈希树的根节点对
应的第二哈希值。
[0146] 在一个实施例中,确定单元包括:
[0147] 获取模组,用于获取所述目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息。
[0148] 第一确定模组,用于根据所述目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;所述重构树为所述目标哈希树的一部分,且所述重构树的叶子节点
与所述目标哈希树的部分叶子节点相同。
[0149] 第二确定模组,用于根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的
数据。
[0150] 第三确定模组,用于根据所述重构树的所有叶子节点数据和所述哈希树分叉数,确定所述重构树的根节点哈希值,将所述重构树的根节点哈希值作为所述目标哈希树中第
M层的目标节点哈希值。
[0151] 在一个实施例中,第二确定模组,还用于根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的开始叶子节点和末尾叶子节
点的位置信息;根据重构树的开始叶子节点和末尾叶子节点的位置信息,获取重构树的所
有叶子节点的位置信息及对应的数据。
[0152] 在一个实施例中,第二确定模组,还用于根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的开始叶子节点位置信息;根
据所述重构树的开始叶子节点位置信息和重构树的叶子节点数量,获取重构树的所有叶子
节点的位置信息及对应的数据。
[0153] 上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存
储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0154] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。
其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易
失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该
内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备
的数据库用于存储目标哈希树中的根节点数据。该计算机设备的网络接口用于与外部的终
端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据处理方法。
[0155] 本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设
备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0156] 在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
[0157] 接收终端发送的数据读取请求;
[0158] 根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
[0159] 获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储
文件的一个数据块;
[0160] 根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
[0161] 若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0162] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0163] 接收终端发送的数据读取请求;
[0164] 根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
[0165] 获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储
文件的一个数据块;
[0166] 根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
[0167] 若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0168] 在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
[0169] 接收终端发送的数据读取请求;
[0170] 根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
[0171] 获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储
文件的一个数据块;
[0172] 根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
[0173] 若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
[0174] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括
非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑Only 
Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器
(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器
(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,
PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,
RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存
取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random 
Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据
库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,
不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形
处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0175] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
[0176] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员
来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保
护范围。因此,本申请的保护范围应以所附权利要求为准。