区块链系统的动态存储扩容方法、系统、设备及存储介质与流程

文档序号:29409323发布日期:2022-03-26 11:24阅读:294来源:国知局
区块链系统的动态存储扩容方法、系统、设备及存储介质与流程

1.本发明涉及分布式系统存储技术领域,具体地,公开了一区块链系统的动态扩容存储方法、系统、电子设备及可读存储介质,该方法基于分布式文件系统(hdfs)和快速存储引擎(rocksdb)实现区块链系统数据存储的动态扩容。


背景技术:

2.随着互联网技术的不断告诉发展,其自身所存在的问题也不断的暴露:主要表现为数据存储中心化和数据处理中心化导致的各方信任难以达成,数据生成和处理历史难以追溯、参与方隐私难以得到有效保护、数据价值难以得到深入挖掘、数据治理难以落地实现。
3.由于这些问题的存在,区块链(blockchain)技术应运而生。区块链技术发展到现在,对现有互联网技术存在的关键问题提出了对应的解决方案并且将技术和产业推向了一个新的高度。随着技术的普及以及商业化,大量企事业单位开始将自己的业务通过智能合约部署在区块链上,底层区块链为这些业务提供服务的形态包括:开放联盟链、区块链系统(blockchain as a service,baas)以及公有链。
4.随着业务复杂性的提升以及时间过程的不断积累,在区块链上产生的数据会越来越多:截至2021年11月份,以太坊的链上全量数据已经突破1050gb。可以预见的是,随着时间的推移,区块链上产生的数据量还会持续以大约每年1.8倍的速度高速增长,这对于区块链节点中的存储数据维护任务将会产生巨大的挑战。同样地,联盟链上的数据同样会随着业务和时间的增长而持续高速增长。目前急需一种工程上可行的扩容存储方案来解决这一难题。
5.hadoop实现了一个分布式文件系统(hadoop distributed file system),简称hdfs。hdfs有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。hdfs放宽了(relax)posix的要求,可以以流的形式访问(streaming access)文件系统中的数据。
6.hadoop的框架最核心的设计就是:hdfs和mapreduce。hdfs为海量的数据提供了存储,则mapreduce为海量的数据提供了计算。
7.rocksdb存储和访问数百pb的数据是一个非常大的挑战,开源的rocksdb就是facebook开放的一种嵌入式、持久化存储、kv型且非常适用于fast storage的存储引擎。
8.传统的数据访问都是rpc,但是这样的话访问速度会很慢,不适用于面向用户的实时访问的场景。随着fast storage的流行,越来越多的应用可以通过在flash中管理数据并快速直接的访问数据。这些应用就需要使用到一种嵌入式的database。
9.使用嵌入式的database的原因有很多。当数据请求频繁访问内存或者fast storage时,网路延时会增加响应时间,比如:访问数据中心网络耗时可能就耗费50ms,跟访问数据的耗时一样多,甚至更多。这意味着,通过rpc访问数据有可能是本地直接访问耗时
的两倍。另外,机器的core数越来越多,storage-iops的访问频率也达到了每秒百万次,传统数据库的锁竞争和context切换会成为提高storage-iops的瓶颈。所以需要一种容易扩展和针对未来硬件趋势可以定制化的database,rocksdb就是一种选择。


技术实现要素:

10.针对现有技术中存在的上述缺陷,本发明提供一种基于区块链系统(baas)的动态扩容存储方法、系统、电子设备及可读存储介质。
11.具体地,在本技术的第一方面提供了一种区块链系统的动态扩容存储方法,所述动态存储扩容方法采用区块链石墨烯架构,所述区块链系统基于分布式文件系统(hdfs)和快速存储引擎(rocksdb),在区块链系统存在扩容需求的情况下,动态扩容存储方法包括:
12.根据预先配置的第一配置文件,启动用于存储区块链数据的分布式文件存储系统;
13.启动分布式文件存储系统的分布式存储插件;
14.判断区块链网络的节点是否启动分布式存储插件:
15.在节点启动分布式存储插件的情况下,获取分布式文件存储系统的第二配置文件;
16.分布式文件存储系统的控制器根据第二配置文件初始化分布式文件接口,以实现区块链系统的扩容需求。
17.在上述第一方面的一种可能的实现中,分布式文件存储系统的控制器用于实现区块链系统对应的信息的存储和读取;
18.区块链网络中的功能模块通过调用控制器获取区块链系统对应的信息。
19.在上述第一方面的一种可能的实现中,区块链系统对应的信息包括历史区块数据和账户数据,历史区块数据包括区块链系统运行产生的历史账本数据;
20.历史区块数据以文件数据的形式存储于分布式文件存储系统中;
21.账户数据存储于键值对存储引擎中,键值对存储引擎的存储文件以文件数据的形式存储于分布式文件存储系统中。
22.在上述第一方面的一种可能的实现中,在节点未启动分布式存储插件的情况下,分布式文件存储系统的控制器初始化分布式文件接口,以实现区块链系统对应的信息的存储和读取。
23.本技术的第二方面提供了一种区块链系统的动态扩容存储系统,应用于上述第一方面提供的动态扩容存储方法中,包括:
24.第一配置单元,用于根据预先配置的第一配置文件,启动用于存储区块链数据的分布式文件存储系统;
25.启动单元,用于启动分布式文件存储系统的分布式存储插件;
26.判断模块,用于判断区块链网络的节点是否启动分布式存储插件;
27.第二配置单元,用于在节点启动分布式存储插件的情况下,获取分布式文件存储系统的第二配置文件;
28.分布式文件存储系统的控制器根据第二配置文件初始化分布式文件接口,以实现区块链系统的扩容需求。
29.在上述第二方面的一种可能的实现中,区块链系统对应的信息包括历史区块数据和账户数据,历史区块数据包括区块链系统运行产生的历史账本数据;
30.历史区块数据以文件数据的形式存储于分布式文件存储系统中;
31.账户数据存储于键值对存储引擎中,键值对存储引擎的存储文件以文件数据的形式存储于分布式文件存储系统中。
32.在上述第二方面的一种可能的实现中,分布式文件存储系统还包括缓存寄存器,缓存寄存器设置有预设的动态缓存容量;
33.缓存寄存器用于在满足区块链系统的读写速度需求的情况下控制分布式文件存储系统的内存使用量。
34.在上述第二方面的一种可能的实现中,分布式文件存储系统还包括数据恢复模块和查找模块;
35.数据恢复模块用于在分布式文件存储系统存储的区块链数据出现数据损坏的情况下,对分布式文件存储系统存储的区块链数据进行数据恢复;
36.查找模块用于实现于分布式文件存储系统中对区块链数据的查询。
37.本技术的第三方面提供了一种电子设备,包括:存储器,存储器用于存储处理程序;处理器,处理器执行处理程序时实现前述第一方面所提供的区块链系统的动态扩容存储方法。
38.本技术的第四方面提供了一种计算机可读存储介质,该种计算机可读存储介质上存储有处理程序,处理程序被处理器执行时实现前述第一方面所提供的区块链系统的动态扩容存储方法。
39.与现有技术相比,本技术具有如下的有益效果:
40.通过本技术提出的技术方案,本技术方案通过插件式架构,实现了基于分布式存储插件的动态存储扩容,用来存储区块链系统产生的大量区块数据,可以满足几乎任意数量的业务需求,同时不影响区块链系统本身高效的数据查找执行效率,具有可推广价值。
41.该方法基于hdfs(分布式文件系统)和rocksdb实现区块链系统数据存储动态扩容。该方法的技术效果体现于在存储动态扩容的过程中无需数据迁移,不需要关闭节点。采用该方法装置的区块链系统(baas)可以满足几乎任意数据量的业务需求。而且不影响区块链系统本身高效的数据查找执行效率。
附图说明
42.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
43.图1根据本技术实施例,示出了一种区块链系统的动态扩容存储方法的流程示意图。
44.图2根据本技术实施例,示出了一种区块链系统的动态扩容存储系统的结构示意图。
45.图3至图4根据本技术实施例,示出了一种rocksdb通过定义rocksdb对象与底层分布式文件存储系统文件系统交互示意图。
具体实施方式
46.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
47.针对现有技术中区块链数据生成量大,节点存储数据维护困难的技术问题,本技术提出了一种区块链系统的动态扩容存储方法及其系统。通过本技术提出的技术方案,基于分布式文件系统和rocksdb实现区块链系统数据存储动态扩容。该方法在存储动态扩容的过程中无需数据迁移,不需要关闭节点。采用该方法装置的区块链系统可以满足几乎任意数据量的业务需求。而且不影响区块链系统本身高效的数据查找执行效率。
48.具体地,图1根据本技术的一些实施例,示出了一种区块链系统的动态扩容存储方法,该种区块链系统的动态扩容存储方法具体包括:
49.步骤100:根据预先配置的第一配置文件(hadoop文件系统集群配置文件),启动用于存储区块链数据的分布式文件存储系统。
50.步骤200:启动分布式文件存储系统的分布式存储插件(hadoop_dist_plugin插件)。
51.步骤300:判断区块链网络的节点是否启动分布式存储插件:若是,则转向步骤400,若否,则转向步骤600。
52.步骤400:在节点启动分布式存储插件的情况下,获取分布式文件存储系统的第二配置文件(hdfs handle)。
53.步骤500:分布式文件存储系统的控制器(controller)根据第二配置文件(hdfs handle)初始化分布式文件接口,以实现区块链系统的扩容需求。
54.步骤600:分布式文件存储系统的控制器初始化分布式文件接口,以实现区块链系统对应的信息的存储和读取。
55.在上述第一方面的一种可能的实现中,分布式文件存储系统的控制器用于实现区块链系统对应的信息的存储和读取;
56.区块链网络中的功能模块通过调用控制器获取区块链系统对应的信息。
57.在上述第一方面的一种可能的实现中,区块链系统对应的信息包括历史区块数据和账户数据,历史区块数据包括区块链系统运行产生的历史账本数据;
58.历史区块数据以文件数据的形式存储于分布式文件存储系统中;
59.账户数据存储于键值对存储引擎中,键值对存储引擎的存储文件以文件数据的形式存储于分布式文件存储系统中。
60.可以理解的是,区块链数据的历史积累主要来自两个方面:一是系统运行产生的历史区块数据,即历史账本数据;二是系统中所有用户账户对应的账户数据。本公开技术方案中将账本数据直接以文件的形式存储在分布式文件存储系统中。账户数据存储在rocksdb这一键值对存储引擎中,并将rocksdb存储文件在分布式文件存储系统中。如图3至图4所示,rocksdb通过定义rocksdb对象实现与底层分布式文件存储系统的交互。
61.在本技术的一些实施例中,图2示出了一种区块链系统的动态扩容存储系统,应用于上述实施例提供的动态扩容存储方法中,包括:
62.第一配置单元001,用于根据预先配置的第一配置文件,启动用于存储区块链数据的分布式文件存储系统;
63.启动单元002,用于启动分布式文件存储系统的分布式存储插件;
64.判断模块003,用于判断区块链网络的节点是否启动分布式存储插件;
65.第二配置单元004,用于在节点启动分布式存储插件的情况下,获取分布式文件存储系统的第二配置文件;
66.分布式文件存储系统的控制器根据第二配置文件初始化分布式文件接口,以实现区块链系统的扩容需求。
67.可以理解的是,上述动态扩容存储系统中的各个功能模块所实现的功能,与前述实施例中动态扩容存储方法中各个步骤的实现相一致,在此不做赘述。
68.在本技术的一些实施例中,分布式文件存储系统还包括缓存寄存器,缓存寄存器设置有预设的动态缓存容量。于上述实施例中,缓存寄存器用于在满足区块链系统的读写速度需求的情况下控制分布式文件存储系统的内存使用量。
69.可以理解的是,在本技术所公开的动态扩容存储系统中,需要在分布式文件存储系统的部署装置中设置缓存寄存器来加速内容的读写速度。设置优先的缓存寄存器的大小能够在满足区块链系统读写速度的情况下控制系统整体的内存使用量。
70.在本技术的一些实施例中,分布式文件存储系统还包括数据恢复模块和查找模块:其中数据恢复模块用于在分布式文件存储系统存储的区块链数据出现数据损坏的情况下,对分布式文件存储系统存储的区块链数据进行数据恢复;查找模块用于实现于分布式文件存储系统中对区块链数据的查询。
71.可以理解的是,分布式文件存储系统中的sink recover模块能够帮助系统在遭遇突发情况时进行数据恢复,分布式文件存储系统中的block index数据结构能够实现在存储扩容方案中对于区块数据进行查找的查找性能。本领域技术人员也可以通过其他可实现手段来实现上述模块的功能,在此不做限定。
72.在本技术的一些实施例中,还提供了一种电子设备。该种电子设备中包含存储器和处理器,其中存储器用于对处理程序进行存储,处理器则根据指令对处理程序进行执行。当处理器对处理程序进行执行时,使得前述实施例中的区块链系统的动态扩容存储方法得以实现。
73.在本技术的一些实施例中,还提供了一种可读存储介质,该可读存储介质可以为非易失性可读存储介质,也可以为易失性可读存储介质。该可读存储介质中存储有指令,当该指令在计算机上运行时,使得包含该种可读存储介质的电子设备执行前述的区块链系统的动态扩容存储方法。
74.可以理解的是,对于前述动态扩容存储系统中的各个功能模块,如果均以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,
ram)、磁碟或者光盘等各种可以存储程序代码的介质。
75.计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf射频等等,或者上述的任意合适的组合。
76.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术所公开的技术方案所涉及的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如c语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
77.综上所述,通过本技术提出的技术方案,能够在已知分布式网络拓扑结构的情况下,通过节点间的网络传输时长将这些节点异构为环状网络,从而实现快速拜占庭容错的共识算法:环状网络中的节点可以进行连续出块,无需等待完整的节点确认过程便可直接进入下一次共识轮次。此外,还可以通过控制轮次时间间隔的方法,保证信息的正确性和完整性,具有可推广价值。
78.上面结合附图对本公开的实施方式作了详细说明,但是本公开并不限于上述实施方式。即使对本公开做出各种变化,倘若这些变化属于本公开权利要求及其等同技术的范围之内,则仍落入在本公开的保护范围之中。
79.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1