一种基于区块链的数据存储配置方法及区块链云平台与流程

文档序号:24893482发布日期:2021-04-30 13:21阅读:108来源:国知局
一种基于区块链的数据存储配置方法及区块链云平台与流程

本发明涉及区块链技术领域,具体而言,涉及一种基于区块链的数据存储配置方法及区块链云平台。



背景技术:

目前,区块链的应用越来越广泛,不仅因其高度安全性在数字货币领域被利用,也因为其具备的数据存储功能在物联网、物流以及保险行业等领域被利用。在现有技术中,在进行数据存储的过程中,一般并不会对区块链本身进行调配,而是仅遵循区块链本身的数据存储方式,这使得涉及的区块链并没有达到最好的利用状态。

有鉴于此,如何提供一种利用率更高的基于区块链的数据存储配置方案。



技术实现要素:

本发明的目的在于提供一种基于区块链的数据存储配置方法及区块链云平台。

第一方面,本发明实施例提供一种基于区块链的数据存储配置方法,包括:

根据待访问的第一区块链在第一时长内的存储操作次数,确定第一区块链对应的第一区块数量,其中,第一区块数量为目标区块集合中允许的为第一区块链调度的第一区块子集中的区块数量;

按照第一散列链中的区块链级顺序在第一区块子集中查找第一目标区块,其中,第一散列链包括按照区块链级顺序排列的第一区块子集,区块链级顺序是根据第一区块链相关的哈希值确定得到的,第一目标区块的剩余区块容量大于最低容量;

在第一区块子集中查找到第一目标区块的情况下,向第一用户终端发送第一目标区块的区块信息;

在目标区块集合中确定第二区块子集,其中,第二区块子集中的每个区块在第二时长结束时剩余区块容量大于预设容量阈值;

将第二区块子集中的区块形成第二散列链;

获取第二用户终端确定的待访问的第二区块链;

根据第二区块链在第三时长内的存储操作次数,确定第二区块链对应的第二区块数量,其中,第二区块数量为目标区块集合中允许的为第二区块链调度的第三区块子集中的区块数量;

按照第三散列链的顺序在第三区块子集中查找第二目标区块,其中,第三区块子集中的区块按照与第二区块链相关的哈希值形成第三散列链,第二目标区块的剩余区块容量大于最低容量;

在第三区块子集中查找不到第二目标区块的情况下,按照第二散列链的顺序在第二区块子集中查找第三目标区块,其中,第三目标区块的剩余区块容量大于最低容量。

可选地,按照第一散列链中的区块链级顺序在第一区块子集中查找第一目标区块,包括:

重复执行以下步骤,直到查找到第一目标区块,或者,遍历完第一区块子集,其中,当前特征值的初始值为第一值,目标区块集合中的每个区块被设置有与第一哈希运算对应的不同哈希值:

对第一区块链和当前特征值执行第一哈希运算,得到当前哈希值;

在目标区块集合中查找哈希值为当前哈希值的区块;

在查找到哈希值为当前哈希值的区块、且哈希值为当前哈希值的区块的剩余区块容量大于最低容量的情况下,将哈希值为当前哈希值的区块确定为第一目标区块;

在查找到哈希值为当前哈希值的区块、且哈希值为当前哈希值的区块的剩余区块容量等于最低容量的情况下,将当前特征值增加预设增值。

可选地,对第一区块链和当前特征值执行第一哈希运算,得到当前哈希值,包括:

对第一区块链与当前特征值的和执行第一哈希运算,得到当前哈希值;或者

将第一区块链和当前特征值进行配置,得到第一待处理区块;对第一待处理区块执行第一哈希运算,得到当前哈希值。

可选地,方法还包括:

重复执行以下步骤,直到目标参考区块数量等于第一区块数量,其中,当前特征值的初始值为第一值,目标参考区块数量的初始值为1:

对第一区块链和当前特征值执行第一哈希运算,得到当前哈希值;

在目标区块集合中查找哈希值为当前哈希值的区块;

在查找到哈希值为当前哈希值的区块的情况下,将哈希值为当前哈希值的区块设置为第一散列链中的目标参考区块;

在目标参考区块数量小于第一区块数量的情况下,将目标参考区块数量等于目标参考区块数量+1,并将当前特征值增加预设增值。

可选地,方法还包括:

在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块的情况下,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系。

可选地,方法还包括:

在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块、且哈希值数量大于区块数量的情况下,将多个区块中的部分区块合并成一个虚拟区块,共得到多个区块,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系,多个区块包括一个或多个虚拟区块;或者

在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块、且区块数量小于哈希值数量的情况下,将多个区块中的部分区块拆分成多个共享区块,共得到多个区块,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系,多个区块包括多个共享区块。

可选地,根据待访问的第一区块链在第一时长内的存储操作次数,确定第一区块链对应的第一区块数量,包括:根据第一区块链在第一时长内的存储操作次数,确定第一区块链的第一访问频率;

根据第一访问频率,确定第一区块链对应的第一区块数量,其中,第一区块数量与第一访问频率呈正相关。

可选地,根据第一访问频率,确定第一区块链对应的第一区块数量,包括:

将第一区块数量设置为等于第一访问频率;或者将第一区块数量设置为等于第一访问频率与区块数量的乘积。

可选地,方法还包括:

在当前调度周期结束时,为目标区块集合中的每个区块的剩余区块容量设置为对应的容量状态,其中,目标区块集合中的不同区块对应的特征标识均相同,或者,目标区块集合中的至少2个区块对应的特征标识不同,目标区块集合中的每个区块被设置为在下一个调度周期上为不同的区块链进行调度。

第二方面,本发明实施例提供一种区块链云平台,包括:

确定模块,用于根据待访问的第一区块链在第一时长内的存储操作次数,确定第一区块链对应的第一区块数量,其中,第一区块数量为目标区块集合中允许的为第一区块链调度的第一区块子集中的区块数量;按照第一散列链中的区块链级顺序在第一区块子集中查找第一目标区块,其中,第一散列链包括按照区块链级顺序排列的第一区块子集,区块链级顺序是根据第一区块链相关的哈希值确定得到的,第一目标区块的剩余区块容量大于最低容量;

配置模块,用于在第一区块子集中查找到第一目标区块的情况下,向第一用户终端发送第一目标区块的区块信息;在目标区块集合中确定第二区块子集,其中,第二区块子集中的每个区块在第二时长结束时剩余区块容量大于预设容量阈值;将第二区块子集中的区块形成第二散列链;获取第二用户终端确定的待访问的第二区块链;根据第二区块链在第三时长内的存储操作次数,确定第二区块链对应的第二区块数量,其中,第二区块数量为目标区块集合中允许的为第二区块链调度的第三区块子集中的区块数量;按照第三散列链的顺序在第三区块子集中查找第二目标区块,其中,第三区块子集中的区块按照与第二区块链相关的哈希值形成第三散列链,第二目标区块的剩余区块容量大于最低容量;在第三区块子集中查找不到第二目标区块的情况下,按照第二散列链的顺序在第二区块子集中查找第三目标区块,其中,第三目标区块的剩余区块容量大于最低容量。

相比现有技术,本发明提供的有益效果包括:本发明实施例提供了一种基于区块链的数据存储配置方法及区块链云平台,通过根据待访问的第一区块链在第一时长内的存储操作次数,确定第一区块链对应的第一区块数量,其中,第一区块数量为目标区块集合中允许的为第一区块链调度的第一区块子集中的区块数量;再按照第一散列链中的区块链级顺序在第一区块子集中查找第一目标区块,其中,第一散列链包括按照区块链级顺序排列的第一区块子集,区块链级顺序是根据第一区块链相关的哈希值确定得到的,第一目标区块的剩余区块容量大于最低容量;接着在第一区块子集中查找到第一目标区块的情况下,向第一用户终端发送第一目标区块的区块信息;然后在目标区块集合中确定第二区块子集,其中,第二区块子集中的每个区块在第二时长结束时剩余区块容量大于预设容量阈值;接着将第二区块子集中的区块形成第二散列链;再获取第二用户终端确定的待访问的第二区块链;进而根据第二区块链在第三时长内的存储操作次数,确定第二区块链对应的第二区块数量,其中,第二区块数量为目标区块集合中允许的为第二区块链调度的第三区块子集中的区块数量;再按照第三散列链的顺序在第三区块子集中查找第二目标区块,其中,第三区块子集中的区块按照与第二区块链相关的哈希值形成第三散列链,第二目标区块的剩余区块容量大于最低容量;最终在第三区块子集中查找不到第二目标区块的情况下,按照第二散列链的顺序在第二区块子集中查找第三目标区块,其中,第三目标区块的剩余区块容量大于最低容量,通过上述步骤,巧妙地利用了散列链的特点,提高了区块链中区块的利用率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的基于区块链的数据存储配置系统的交互示意图;

图2为本发明实施例提供的基于区块链的数据存储配置方法的步骤流程示意图;

图3为本发明实施例提供的区块链云平台的结构示意框图;

图4为本发明实施例提供的计算机设备的结构示意框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,“设置”、“连接”等术语应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接连接,也可以通过中间媒介间接连接,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

下面结合附图,对本发明的具体实施方式进行详细说明。

图1是本公开一种实施例提供的基于区块链的数据存储配置系统的交互示意图。基于区块链的数据存储配置系统可以包括计算机设备100以及与计算机设备100通信连接的区块链300和用户终端200。图1所示的基于区块链的数据存储配置系统仅为一种可行的示例,在其它可行的实施例中,该基于区块链的数据存储配置系统也可以仅包括图1所示组成部分的其中一部分或者还可以包括其它的组成部分。

本实施例中,用户终端200可以包括移动设备、平板计算机、膝上型计算机等或其任意组合。在一些实施例中,移动设备可以包括智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备、或增强现实设备等,或其任意组合。在一些实施例中,智能家居设备可以包括智能电器设备的控制设备、智能监控设备、智能电视、智能摄像机等,或其任意组合。在一些实施例中,可穿戴设备可包括智能手环、智能鞋带、智能玻璃、智能头盔、智能手表、智能服装、智能背包、智能配件等,或其任何组合。在一些实施例中,智能移动设备可以包括智能手机、个人数字助理、游戏设备等,或其任意组合。在一些实施例中,虚拟现实设备和/或增强现实设备可以包括虚拟现实头盔、虚拟现实玻璃、虚拟现实贴片、增强现实头盔、增强现实玻璃、或增强现实贴片等,或其任意组合。例如,虚拟现实设备和/或增强现实设备可以包括各种虚拟现实产品等。

本实施例中,基于区块链的数据存储配置系统中的计算机设备100、区块链300和用户终端200可以通过配合执行以下方法实施例所描述的基于区块链的数据存储配置方法,具体计算机设备100、区块链300和用户终端200的执行步骤部分可以参照以下方法实施例的详细描述。

为了解决前述背景技术中的技术问题,图2为本公开实施例提供的基于区块链的数据存储配置方法的流程示意图,本实施例提供的基于区块链的数据存储配置方法可以由图1中所示的计算机设备100执行,下面对该基于区块链的数据存储配置方法进行详细介绍。

步骤s201,根据待访问的第一区块链300在第一时长内的存储操作次数,确定第一区块链300对应的第一区块数量,其中,第一区块数量为目标区块集合中允许的为第一区块链300调度的第一区块子集中的区块数量;

步骤s202,按照第一散列链中的区块链级顺序在第一区块子集中查找第一目标区块,其中,第一散列链包括按照区块链级顺序排列的第一区块子集,区块链级顺序是根据第一区块链300相关的哈希值确定得到的,第一目标区块的剩余区块容量大于最低容量;

步骤s203,在第一区块子集中查找到第一目标区块的情况下,向第一用户终端200发送第一目标区块的区块信息。

作为一个可选的实施方式。用户使用区块链300时,通过用户终端200将需要访问的区块链300发送给计算机设备100,计算机设备100在大量区块中选取出目标区块,将目标区块的区块信息返回至用户终端200,区块信息包括但不限于区块在网络上的地址,以及用于后续访问的参数。用户终端200与目标区块进行信息交互,通过目标区块为用户终端200提供资源。

作为一个可选的实施方式,在本实施例中可以包括热度统计模块,散列链获取模块和配额分配模块。其中,热度统计模块用于确定区块链300的访问热度,具体地可以将在预设时长内区块的存储操作次数作为该区块的访问热度。散列链获取模块可以通过网络协议与访问频率获取区块对应的散列链。配额分配模块可以获取散列链中拥有调度配额的区块,将拥有调度配额的区块信息发送至用户终端200,以与用户终端200进行信息交互,为用户终端200分配资源。本实施例中,输入是用户访问的区块与用户ip,经过热度统计模块获取访问热度,通过区块,用户ip与访问热度获取对应散列链,通过配额分配模块获取有配额的区块,最终选取某个区块的信息进行返回。以此达到保证系统回源率,充分利用区块资源做到资源不浪费的技术效果。

可选地,按照第一散列链中的区块链级顺序在第一区块子集中查找第一目标区块,包括:重复执行以下步骤,直到查找到第一目标区块,或者,遍历完第一区块子集,其中,当前特征值的初始值为第一值,目标区块集合中的每个区块被设置有与第一哈希运算对应的不同哈希值:对第一区块链300和当前特征值执行第一哈希运算,得到当前哈希值;在目标区块集合中查找哈希值为当前哈希值的区块;在查找到哈希值为当前哈希值的区块、且哈希值为当前哈希值的区块的剩余区块容量大于最低容量的情况下,将哈希值为当前哈希值的区块确定为第一目标区块;在查找到哈希值为当前哈希值的区块、且哈希值为当前哈希值的区块的剩余区块容量等于最低容量的情况下,将当前特征值增加预设增值。

作为一个可选的实施方式,通过热度统计获取到访问热度之后,则可通过ip查询地址库获取符合调度质量的区块集合。在本实施例中,可以通过计算区块与value的哈希值标识相应的区块。其中value的值可以是预设值,可以是从1开始的整数,例如value=10001、10002等。区块的访问频率和链的长度有关,两者可以相等。区块a上的配额可以用于多个区块,每个区块对应的链不同,但链上的区块来自同一个区块集合中的部分区块,作为key拼接后使用一致性hash即可得到定长(长度由访问热度决定)的散列链。

作为一个可选的实施方式,每个区块对应的链不同,对每一个区块可获取此区块独有的哈希调度链。假设区块1可得到a->c->b->f->d->e的哈希调度链。对区块2可获得c->b->d->e->a->f的哈希调度链。每个散列链中所包括的区块均配置有调度配额,区块每被调度一次,配额减少一次。通过此散列链依次查询配额,即可将请求尽可能收敛在前几跳区块中,此外由于热度越高,散列链越长,热点区块可扩散到更多区块中,对冷区块可防止其大量扩散导致流量回源。

作为一个可选的实施方式,以第一区块子集中包括区块a、b、c、d、e、f,散列链a->c->b->f->d->e为例进行说明。假设当前特征值value=10001,对第一区块链300和value执行哈希运算,得到当前哈希值hash(区块+10001)。在散列链a->c->b->f->d->e中确定区块a的哈希值为hash(区块+10001)后,查询区块a的剩余可区块容量,若区块a的剩余可区块容量大于最低容量,则以区块a为目标区块,将区块a的区块信息发送给用户终端200。若区块a的剩余区块容量等于最低容量,说明区块a无法被调度。将value=10001增加预设增值,假设预设增值为1,value值变更为value=10002,继续对第一区块链300和value=10002执行哈希运算,得到hash(区块+10002),在散列链a->c->b->f->d->e中确定区块b的哈希值为hash(区块+10002)后,查询区块b的剩余可区块容量,若区块b的剩余可区块容量大于最低容量,则以区块b为目标区块。重复执行上述步骤直到在散列链中找到目标区块,或者遍历完散列链。在本实施例中,通过在与区块对应的散列链中查找剩余区块容量大于最低容量的区块作为目标区块,可以提高区块调度的效率,提升区块资源的利用率。

可选地,对第一区块链300和当前特征值执行第一哈希运算,得到当前哈希值,包括:对第一区块链300与当前特征值的和执行第一哈希运算,得到当前哈希值;或者将第一区块链300和当前特征值进行配置,得到第一待处理区块;对第一待处理区块执行第一哈希运算,得到当前哈希值。

可选地,方法还包括:重复执行以下步骤,直到目标参考区块数量等于第一区块数量,其中,当前特征值的初始值为第一值,目标参考区块数量的初始值为1:对第一区块链300和当前特征值执行第一哈希运算,得到当前哈希值;在目标区块集合中查找哈希值为当前哈希值的区块;在查找到哈希值为当前哈希值的区块的情况下,将哈希值为当前哈希值的区块设置为第一散列链中的目标参考区块;在目标参考区块数量小于第一区块数量的情况下,将目标参考区块数量等于目标参考区块数量+1,并将当前特征值增加预设增值。

作为一个可选的实施方式,可以根据目标区块集合中每个区块与预设值value的哈希值大小确定目标区块集合中每个区块在散列链中的位置,进而可以确定出散列链中每个区块的链级顺序。在本实施例中,预设值value是可以变化的,可以将预设值value设置一个初始值,每确定出一个区块在散列链中的位置,将value的值增加预设增值,预设增值的大小可以根据实际情况而定,在此不作限定,例如可以是1、2、10、100等,直到确定出散列链中所有的区块。

作为一个可选的实施方式,以目标区块集合中包括区块a、b、c、d、e、f为例,当前特征值为value=10001为例进行说明。对区块和10001执行哈希运算,得到当前哈希值hash(区块+10001)。假设目标区块集合中区块a对应的哈希值与hash(区块+10001)相等,则确定区块a为第一散列链中的第一个区块。假设预设增值为1,将value增加预设增值后得到value=10002,对区块和10002执行哈希运算,得到当前哈希值hash(区块+10002),假设目标区块集合中区块c对应的哈希值与hash(区块+10002)相等,则确定区块c为第一散列链中的第二个区块。以此类推,直到遍历完目标区块集合中的所有区块,可以根据区块与value的哈希值确定目标区块集合中的区块在散列链中的链级顺序,以此得到散列链a->c->b->f->d->e。在本实施例中,通过哈希值确定与区块对应的散列链中区块的链级顺序,可以按照哈希值的大小顺序在于区块对应的目标区块集合中确定出目标区块,可以提高目标区块的查找效率。

可选地,方法还包括:在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块的情况下,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系,n为大于1的自然数。

作为一个可选的实施方式,常规一致性哈希需要存储大量区块状态,需要做大量区块分割操作。这就造成了维护成本高与计算效率低下。在本实施例中,选择使用跳跃一致性哈希(jumpconsistenthash),通过大数运算保证了离散型与均匀性,极大程度削减了内存使用与区块变更成本。

作为一个,可选的实施方式,一个真实区块(例如一个服务器)可以对应于散列链中的一个虚拟区块,为每个真实区块分配一个哈希值。在本实施例中,对于不同资源持有量的区块,可根据资源持有量进行划分为多个虚拟化区块,每个区块作为散列链中的一个区块,abcdef均为虚拟区块,选中虚拟区块a后可查询得到真实区块区块ar,这样就保证了可根据不同资源持有量对区块进行权重划分,且保证资源使用均等。

可选地,方法还包括:在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块、且哈希值数量大于区块数量的情况下,将多个区块中的部分区块合并成一个虚拟区块,共得到多个区块,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系,多个区块包括一个或多个虚拟区块;或者在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块、且区块数量小于哈希值数量的情况下,将多个区块中的部分区块拆分成多个共享区块,共得到多个区块,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系,n为大于1的自然数,多个区块包括多个共享区块。

作为一个可选的实施方式,对于一批调度区块ar1/ar2/ar3,可能拥有共享的存储,则这些区块在调度上可抽象为一个大的调度区块af,以这个区块作为真实区块参与调度,调度得到af区块后再根据配额细分到具体单个调度区块ar1/ar2/ar3上,这样保证了不改变调度逻辑的情况下提高了资源利用率与降低了回源成本。在本实施例中,可以将多个真实区块合并成一个虚拟区块,为该虚拟区块分配一个哈希值,也就是说,可以将多个真实区块合并成一个可调度的虚拟区块。例如,真实区块区块a、b、c可以是a、b、c三个服务器区块,可以将a、b、c三个服务器区块合并成一个虚拟区块d,为虚拟区块d分配一个哈希值。在本实施例中,也可以将一个真实区块拆分成多个区块作为共享区块,为拆分出的每个共享区块分配一个哈希值。例如,可以将真实区块服务器a拆分成共享区块a1、a2、a3,分别为每个共享区块分配哈希值。本实施例中,可以将剩余区块容量较少的多个真实区块合并成一个虚拟区块,也可以剩余区块容量较多的一个真实区块拆分成多个共享区块。通过将多个区块合并为一个区块,或者将一个区块拆分为多个共享区块。可以平衡区块的资源分配,防止由于区块调度的不平衡导致的资源利用率低的问题,进而可以达到提高区块资源调度利用率的技术效果。

可选地,根据待访问的第一区块链300在第一时长内的存储操作次数,确定第一区块链300对应的第一区块数量,包括:根据第一区块链300在第一时长内的存储操作次数,确定第一区块链300的第一访问频率;根据第一访问频率,确定第一区块链300对应的第一区块数量,其中,第一区块数量与第一访问频率呈正相关。

作为一个可选的实施方式,散列链中包括的区块数量可以根据区块访问热度得到,区块的访问热度越高,区块对应的散列链中包括的区块数量越多。在本实施例中,区块访问热度可以根据在一定时长内区块的存储操作次数而定,例如,在5分钟内,区块的存储操作次数为5次,区块对应的散列链中包括的区块数量可以是5,也可以是5的倍数,区块对应的散列链中包括的区块数量与该区块的访问热度正相关。

可选地,根据第一区块链300在第一时长内的存储操作次数,确定第一区块链300的第一访问频率,包括:将第一访问频率设置为:访问频率=k*(2*interval-now_interval)/interval;其中,k为第一区块链300在第一时长内的存储操作次数,interval为预设的统计周期的时长,now_interval为当前时刻与上一个结束的统计周期的开始时刻之间的时长,第一时长为now_interval。

作为一个可选的实施方式,存储操作次数可以反映区块的访问热度,通过热度统计模块统计区块的存储操作次数。热度统计模块可以使用多重布隆过滤器(multiplebloomfilter),作用为每一个区块可以返回这个区块的访问频率,该访问频率可以是区块的存储操作次数。

作为一个可选的实施方式,布隆过滤器可以是位图或位数组(bitmap/bitarray),布隆过滤器一般用于检索一个元素是否在一个集合中。假设输入对象个数为n,布隆过滤器大小为m,所容忍的误判率p和哈希函数的个数k。计算公式如下:

小数向上取整,可对10亿级别64b大小区块输入,误判率0.01%的情况下仅需要2.5g内存。

在本实施例中,若布隆过滤器持续运行,由于缺少记录清理机制,最终会导致热度不断膨胀,最终导致热度统计失效。由于记录所有区块的访问时间带来的空间开销不可接受,无法根据区块访问的时间进行淘汰,本实施例中引入了一个热度统计模块清理机制:在内存中同时维护两个布隆过滤器,主过滤器master,备过滤器slave,每次插入对两个布隆过滤器均进行插入,查询仅查询主过滤器master,在时间间隔interval后执行清理,删除master,将slave替换master,重新初始化一个slave。这样保证了master的统计数据始终为[interval,2*interval]时间长度的存储操作次数。

由于在清理执行之后,会出现统计数据均值出现跳变,这会导致热度统计不准确,为了解决这个问题引入新的热度统计计算公式:假设当前距离上一次清理的时间为now_interval,master查询区块存储操作次数结果为k(如果当前在第3个周期上,k=第2个周期+第3个周期的部分)则计算返回结果访问频率公式为:

访问频率=k*(2*interval-now_interval)/interval

对于任意取值范围为(0,interval)范围内的now_interval有访问频率均值数学期望不变,即热度统计均值期望不变。这样就保证了当执行清理和布隆过滤器替换时,对返回访问频率的结果不造成影响。热度统计模块即为输入区块返回此区块的访问频率。每访问一次算一个访问频率。根据访问频率确定第一散列链中包括的区块数,第一散列链中包括的区块构成的集合为第一区块子集,访问频率可以等于第一散列链中包括的区块数。

可选地,根据第一访问频率,确定第一区块链300对应的第一区块数量,包括:将第一区块数量设置为等于第一访问频率;或者将第一区块数量设置为等于第一访问频率与区块数量的乘积,其中,m为大于1的自然数。

作为一个可选的实施方式,区块对应的散列链中包括的区块数量与区块的访问热度正相关,区块的访问越高区块数越多。可以将预定时长内区块存储操作次数作为散列链中区块的数量,也可以将预定时长内区块存储操作次数的倍数,作为散列链汇总区块的数量。

步骤s204,在目标区块集合中确定第二区块子集,其中,第二区块子集中的每个区块在第二时长结束时剩余区块容量大于预设容量阈值。

步骤s205,将第二区块子集中的区块形成第二散列链。

步骤s206,获取第二用户终端200确定的待访问的第二区块链300。

步骤s207,根据第二区块链300在第三时长内的存储操作次数,确定第二区块链300对应的第二区块数量,其中,第二区块数量为目标区块集合中允许的为第二区块链300调度的第三区块子集中的区块数量。

步骤s208,按照第三散列链的顺序在第三区块子集中查找第二目标区块,其中,第三区块子集中的区块按照与第二区块链300相关的哈希值形成第三散列链,第二目标区块的剩余区块容量大于最低容量。

步骤s209,在第三区块子集中查找不到第二目标区块的情况下,按照第二散列链的顺序在第二区块子集中查找第三目标区块,其中,第三目标区块的剩余区块容量大于最低容量。

作为一个可选的实施方式,可以选取出剩余区块容量大于预设容量阈值的区块作为第二区块子集中的区块,预设容量阈值可以根据实际情况而定,例如10次、20次、50次等,将剩余次数较多的区块单独作为一个区块集合,并形成第二散列链。当获取到用户终端200确定的待访问的区块情况下,若在与待访问的区块对应的第三散列链中查找不到目标区块,则在第二散列链中查找目标区块。

作为一个可选的实施方式,将被调用次数较少(剩余区块容量较多)的区块作为一个区块集合,当获取到待访问的区块时,若在待访问的区块对应的散列链中查找不到目标区块,在剩余区块容量较多的区块集合中查找目标区块,可以避免区块调用不平衡导致的区块资源利用率低的问题。在实施例中,假设区块a、b、c、d、e、f、g、h的剩余区块容量分别为0、1、2、3、4、5、6、7,预设容量阈值为3,则确定剩余区块容量大于3的区块e、f、g、h为被区块容量较少的区块,将区块e、f、g、h第二区块子集,将e、f、g、h组成的散列链作为第二散列链。当获取到用户终端200确定的待访问的第二区块链300时,确定与第二区块链300对应的第三散列链,若第三散列链中的区块的剩余区块容量均为0,则在第三散列链查找不到目标区块。此种情况下,可以在e、f、g、h组成第二散列链中查找目标区块。

作为一个可选的实施方式,可以将剩余区块容量较多的区块作为低利用率区块。假设在abcdef区块中,若bdf为低利用率区块,则对于这批低利用率区块单独进行一次散列链生成,对于区块可得低利用率散列链b->f->d。同样,低利用率散列链对于低利用率区块也是均衡和一致的。在本实施例中,由于可调度的区块是海量的,存在有些区块被反复调用,有些区块很少被调用,以此呈现的区块调用不平衡,区块资源利用率低的问题。

可选地,方法还包括:在当前调度周期结束时,为目标区块集合中的每个区块的剩余区块容量设置为对应的容量状态,其中,目标区块集合中的不同区块对应的特征标识均相同,或者,目标区块集合中的至少2个区块对应的特征标识不同,目标区块集合中的每个区块被设置为在下一个调度周期上为不同的区块链300进行调度。

作为一个可选的实施方式,在调度周期内区块可被调度,在区块的调度周期之外可以为区块分配调度配额,调度配额用于表示区块可被调度的次数。不同区块分配的调度配额可以是相同的,例如,区块a、区块b、区块c的调度配额均配置为10次。也可以将不同的区块分配不同的调度配额,例如,区块a、区块b、区块c的调度配额分别配置为2、4、6、8次。一个区块可以被不同的区块链300进行调度,区块每被调度一次,剩余的区块容量减少一次,直到剩余区块容量为0,区块无法被调度。

可选地,在向第一用户终端200发送第一目标区块的区块信息之后,方法包括:在第一用户终端200根据区块信息向第一目标区块发送第一调度请求的情况下,在第一用户终端200上获取第一目标区块发送的与第一区块链300相关的资源。

作为一个可选的实施方式,在用户终端200获取到目标区块的区块信息后,用户可以通过向目标区块发送调度请求获取到相关资源,相关资源可以是区块对应的网页。例如,用户可以通过用户终端200发送区块访问指示,服务器确定出与该区块对应的目标区块为区块a,将区块a的区块信息发送至用户终端200,区块信息可以是区块的标识或者地址等。用户可以通过用户终端200向该区块发送调度请求,区块a向用户终端200返回区块访问指示对应的信息。

作为一个可选的实施方式,对于整体配额分配,最优先调度散列链本身顺序,这样保证了配额的分配永远是最先使用最优的区块。其次分配共享存储区块的配额,因为共享存储区块可看做同一区块不同出口信息。最后使用低利用率散列链,低利用率散列链即是将当前配额无法满足的请求调度到当前资源利用率低的区块上,同时保证了资源利用率和流量回源率。

对于任意区块,可以赋予该区块一个配额属性,此属性决定了每一个调度周期允许调度多少次请求。由于调度到单个区块上的url趋向于收拢,故在小时间范围内可认为对于一个区块,调度到此区块上的请求带来的资源平均使用量的变化不会过于剧烈,这样就可以通过区块容量的配额控制即可较好的控制单区块负载,这样就做到了区块资源不浪费。

对于区块配额,设置有快速恢复模式与维持调度模式两种状态其中,对于快速恢复模式,出现于新区块上架,禁用区块恢复使用等情况下,会根据资源持有量进行估算,设置一个较大的配额变化步长,并可根据配置决定区块预期利用完完整资源的时间进行步长的个性化调整。对于维持调度模式,出现于区块平稳运行时的状态,此时会根据此前多个调度周期的资源利用状况,对超出预期资源利用的情况下配额进行微降,对于不及资源利用预期的情况下配额进行微增。这样保证了在维持调度模式下,配额值始终维持在既不超过资源限制,又充分利用的值上。由以上机制保证资源利用率维持在预期水平,同时设置异常兜底预期,对于资源利用与配额增减出现大幅度波动的区块进行发现与剔除,这样就在保证资源利用率的情况下充分保证了访问质量。

本发明实施例提供一种区块链云平台110,请结合参考图3,包括:

确定模块1101,用于根据待访问的第一区块链300在第一时长内的存储操作次数,确定第一区块链300对应的第一区块数量,其中,第一区块数量为目标区块集合中允许的为第一区块链300调度的第一区块子集中的区块数量;按照第一散列链中的区块链级顺序在第一区块子集中查找第一目标区块,其中,第一散列链包括按照区块链级顺序排列的第一区块子集,区块链级顺序是根据第一区块链300相关的哈希值确定得到的,第一目标区块的剩余区块容量大于最低容量。

配置模块1102,用于在第一区块子集中查找到第一目标区块的情况下,向第一用户终端200发送第一目标区块的区块信息;在目标区块集合中确定第二区块子集,其中,第二区块子集中的每个区块在第二时长结束时剩余区块容量大于预设容量阈值;将第二区块子集中的区块形成第二散列链;获取第二用户终端200确定的待访问的第二区块链300;根据第二区块链300在第三时长内的存储操作次数,确定第二区块链300对应的第二区块数量,其中,第二区块数量为目标区块集合中允许的为第二区块链300调度的第三区块子集中的区块数量;按照第三散列链的顺序在第三区块子集中查找第二目标区块,其中,第三区块子集中的区块按照与第二区块链300相关的哈希值形成第三散列链,第二目标区块的剩余区块容量大于最低容量;在第三区块子集中查找不到第二目标区块的情况下,按照第二散列链的顺序在第二区块子集中查找第三目标区块,其中,第三目标区块的剩余区块容量大于最低容量。

进一步地,确定模块1101具体用于:

重复执行以下步骤,直到查找到第一目标区块,或者,遍历完第一区块子集,其中,当前特征值的初始值为第一值,目标区块集合中的每个区块被设置有与第一哈希运算对应的不同哈希值:对第一区块链300和当前特征值执行第一哈希运算,得到当前哈希值;在目标区块集合中查找哈希值为当前哈希值的区块;在查找到哈希值为当前哈希值的区块、且哈希值为当前哈希值的区块的剩余区块容量大于最低容量的情况下,将哈希值为当前哈希值的区块确定为第一目标区块;在查找到哈希值为当前哈希值的区块、且哈希值为当前哈希值的区块的剩余区块容量等于最低容量的情况下,将当前特征值增加预设增值。

进一步地,确定模块1101更进一步具体用于:

对第一区块链300与当前特征值的和执行第一哈希运算,得到当前哈希值;或者

将第一区块链300和当前特征值进行配置,得到第一待处理区块;对第一待处理区块执行第一哈希运算,得到当前哈希值。

进一步地,确定模块1101还用于:

重复执行以下步骤,直到目标参考区块数量等于第一区块数量,其中,当前特征值的初始值为第一值,目标参考区块数量的初始值为1:对第一区块链300和当前特征值执行第一哈希运算,得到当前哈希值;在目标区块集合中查找哈希值为当前哈希值的区块;在查找到哈希值为当前哈希值的区块的情况下,将哈希值为当前哈希值的区块设置为第一散列链中的目标参考区块;在目标参考区块数量小于第一区块数量的情况下,将目标参考区块数量等于目标参考区块数量+1,并将当前特征值增加预设增值。

进一步地,确定模块1101还用于:

在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块的情况下,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系。

进一步地,确定模块1101还用于:

在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块、且哈希值数量大于区块数量的情况下,将多个区块中的部分区块合并成一个虚拟区块,共得到多个区块,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系,多个区块包括一个或多个虚拟区块;或者在第一哈希运算的哈希结果包括多个不同的哈希值、目标区块集合包括多个区块、且区块数量小于哈希值数量的情况下,将多个区块中的部分区块拆分成多个共享区块,共得到多个区块,为多个区块中的每个区块设置多个不同的哈希值中的一个哈希值,其中,多个不同的哈希值与多个区块具有一一对应关系,多个区块包括多个共享区块。

进一步地,确定模块1101具体用于:

根据第一区块链300在第一时长内的存储操作次数,确定第一区块链300的第一访问频率;根据第一访问频率,确定第一区块链300对应的第一区块数量,其中,第一区块数量与第一访问频率呈正相关。

进一步地,确定模块1101更进一步具体用于:

将第一区块数量设置为等于第一访问频率;或者将第一区块数量设置为等于第一访问频率与区块数量的乘积。

进一步地,配置模块1102还用于:

在当前调度周期结束时,为目标区块集合中的每个区块的剩余区块容量设置为对应的容量状态,其中,目标区块集合中的不同区块对应的特征标识均相同,或者,目标区块集合中的至少2个区块对应的特征标识不同,目标区块集合中的每个区块被设置为在下一个调度周期上为不同的区块链300进行调度。

需要说明的是,前述区块链云平台110的实现原理可以参考前述基于区块链的数据存储配置方法的实现原理,在此不再赘述。应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,区块链云平台110可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上区块链云平台110的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所描述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。

例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,asic),或,一个或多个微处理器(digitalsignalprocessor,dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,soc)的形式实现。

本发明实施例提供一种计算机设备100,计算机设备100包括处理器及存储有计算机指令的非易失性存储器,计算机指令被处理器执行时,计算机设备100执行前述的区块链云平台110。如图4所示,图4为本发明实施例提供的计算机设备100的结构框图。计算机设备100包括在区块链云平台110、存储器111、处理器112及通信单元113。

为实现数据的传输或交互,存储器111、处理器112以及通信单元113各元件相互之间直接或间接地电性连接。例如,可通过一条或多条通讯总线或信号线实现这些元件相互之间电性连接。区块链云平台110包括至少一个可以软件或固件(firmware)的形式存储于存储器111中或固化在计算机设备100的操作系统(operatingsystem,os)中的软件功能模块。处理器112用于执行存储器111中存储的区块链云平台110,例如区块链云平台110所包括的软件功能模块及计算机程序等。

本发明实施例提供一种可读存储介质,可读存储介质包括计算机程序,计算机程序运行时控制可读存储介质所在计算机设备100执行前述的基于区块链的数据存储配置方法。

综上,本发明实施例提供了一种基于区块链的数据存储配置方法及区块链云平台,通过根据待访问的第一区块链在第一时长内的存储操作次数,确定第一区块链对应的第一区块数量,其中,第一区块数量为目标区块集合中允许的为第一区块链调度的第一区块子集中的区块数量;再按照第一散列链中的区块链级顺序在第一区块子集中查找第一目标区块,其中,第一散列链包括按照区块链级顺序排列的第一区块子集,区块链级顺序是根据第一区块链相关的哈希值确定得到的,第一目标区块的剩余区块容量大于最低容量;接着在第一区块子集中查找到第一目标区块的情况下,向第一用户终端发送第一目标区块的区块信息;然后在目标区块集合中确定第二区块子集,其中,第二区块子集中的每个区块在第二时长结束时剩余区块容量大于预设容量阈值;接着将第二区块子集中的区块形成第二散列链;再获取第二用户终端确定的待访问的第二区块链;进而根据第二区块链在第三时长内的存储操作次数,确定第二区块链对应的第二区块数量,其中,第二区块数量为目标区块集合中允许的为第二区块链调度的第三区块子集中的区块数量;再按照第三散列链的顺序在第三区块子集中查找第二目标区块,其中,第三区块子集中的区块按照与第二区块链相关的哈希值形成第三散列链,第二目标区块的剩余区块容量大于最低容量;最终在第三区块子集中查找不到第二目标区块的情况下,按照第二散列链的顺序在第二区块子集中查找第三目标区块,其中,第三目标区块的剩余区块容量大于最低容量,通过上述步骤,巧妙地利用了散列链的特点,提高了区块链中区块的利用率。

出于说明目的,前面的描述是参考具体实施例而进行的。但是,上述说明性论述并不打算穷举或将本公开局限于所公开的精确形式。根据上述教导,众多修改和变化都是可行的。选择并描述这些实施例是为了最佳地说明本公开的原理及其实际应用,从而使本领域技术人员最佳地利用本公开,并利用具有不同修改的各种实施例以适于预期的特定应用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1