一种提升区块链读写性能的分片存储方法技术

技术编号:24353432 阅读:53 留言:0更新日期:2020-06-03 02:04
本发明专利技术公开了一种提升区块链读写性能的分片存储方法。包括如下步骤:1)部署存在多namespace的区块链网络并启动区块链节点完成共识。2)设计区块链交易数据分片适配模块,该模块通过哈希表的方式将区块链交易分组。3)将区块链网络内不同namespace的存储挂载在不同的存储介质上。4)通过适配模块将步骤2)中已分组的区块链交易提交到区块链网络内的不同namespace上。5)与特定交易数据相关的交易调用将会通过适配模块分流到对应的namespace进行处理。本发明专利技术解决了针对区块链网络中数据量极大时引起的底层存储数据库leveldb性能下降的问题。

A partition storage method to improve the read-write performance of blockchain

【技术实现步骤摘要】
一种提升区块链读写性能的分片存储方法
本专利技术涉及区块链网络账本存储、哈希算法、命名空间namespace,尤其涉及应对区块链大量账本存储导致的性能下降的解决方案。
技术介绍
区块链账本,包含了区块链世界状态和块链式数据的存储,块链式数据是以appendonly方式增长的,且存储在k-v数据库产品leveldb中。哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。
技术实现思路
区块链账本,包含了区块链世界状态和块链式数据的存储,块链式数据是以appendonly方式增长的,且存储在k-v数据库产品leveldb中,在账本数据量极大时会导致leveldb数据库性能持续下降,从而引起区块链网络TPS的持续下降,而此时磁盘I/O,CPU占用,内存占用等数值均未成为区块链TPS的瓶颈。而区块链网络中namespace的概念从存储路径上就划分了不同区域,从而将一个较大的leveldb数据库拆分为多个相对小的leveldb数据库。在这个基础之上,设计通过交易哈希将交易数据均匀拆分给不同namespace的中间层适配模块,来达到对原有区块链应用层逻辑无侵入且解决了性能下降问题的效果。本专利技术的目的是针对现有区块链技术在账本数据量很大时leveldb数据库性能会显著下降的情况,提供了一种提升区块链读写性能的分片存储方法。由于目前区块链网络的账本都采用本地k-v数据库leveldb,本专利技术的实现包括以下步骤:1)部署存在多namespace(命名空间)的区块链网络并启动区块链节点完成共识。2)设计区块链交易数据分片适配模块,该模块通过哈希表的方式将区块链交易分组。3)将区块链网络内不同namespace的存储挂载在不同的存储介质上。4)通过适配模块将步骤2)中已分组的区块链交易提交到区块链网络内的不同namespace上。5)与特定交易数据相关的交易调用将会通过适配模块分流到对应的namespace进行处理。进一步地,步骤1)中的namespace概念是对区块链网络中用于隔离账本、区块、交易和智能合约的物理概念。进一步地,步骤2)中适配模块根据区块链交易的哈希值来将大量交易打上一个额外的tag字段,tag字段枚举值数量和步骤1)中区块链网络中namespace的数量一致。进一步地,步骤3)中每个namespace所挂载的存储介质(如SSD,HDD,主存等)均需要物理隔离,以保证区块链namespace数据的安全隔离和存储介质的I/O性能。进一步地,步骤4)中适配模块通过tag和namespace的一一对应关系将交易传输到区块链网络上不同的namespace。本专利技术的有益效果是:本专利技术在现有区块链技术体系存在性能下降问题的情况下,通过一系列底层技术的再利用和新技术的开发结合,来达到对原有区块链应用层逻辑无侵入且解决了性能下降问题的效果。附图说明图1是本专利技术提升区块链读写性能的分片存储方法流程图;图2是区块链网络多namespace存储区域划分图。具体实施方式下面根据附图和具体实施例详细描述本专利技术,本专利技术的目的和效果将变得更加明显。如图1、2所示,本专利技术提出的一种提升区块链读写性能的分片存储方法,包括:1)在区块链网络中的节点服务器上的global.toml上配置多个namespace来部署存在多namespace(命名空间)的区块链网络并启动区块链节点完成共识,此时区块链网络中每个namespace的网络、存储、共识都存在隔离。2)设计区块链交易数据分片适配模块,该模块通过哈希表的方式将区块链交易分组,分组后的区块链交易会被打上tag,该tag名称会对应到namespace的名称上,区块链交易分组会根据交易哈希均匀分布到各个tag。3)将区块链网络内不同namespace的存储挂载在不同的存储介质上,避免不同namespace中区块链数据的读写占用到同一块介质的I/O通道。4)通过适配模块将步骤2)中已分组的区块链交易提交到区块链网络内的不同namespace上,适配模块首先与各个namespace建立rpc(远程过程调用)连接,然后定期批量的将带有tag的交易发送到对应的namespace上。5)与特定交易数据相关的交易调用将会通过适配模块分流到对应的namespace进行处理。进一步的,所述的步骤1)中的namespace概念是对区块链网络中用于隔离账本、区块、交易和智能合约的物理概念。进一步的,所述的步骤2)中适配模块会根据区块链交易的哈希值来将大量交易打上一个额外的tag字段,tag字段枚举值数量和步骤1)中区块链网络中namespace的数量一致。进一步的,所述的步骤3)中每个namespace所挂载的存储介质(如SSD,HDD,主存等)均需要物理隔离,已保证区块链namespace数据的安全隔离和存储介质的I/O性能。进一步的,所述的步骤4)中适配模块通过tag和namespace的一一对应关系将交易传输到区块链网络上不同的namespace。以上所述仅是本专利技术的优选实施方式,虽然本专利技术已以较佳实施例披露如上,然而并非用以限定本专利技术。任何熟悉本领域的技术人员,在不脱离本专利技术技术方案范围情况下,都可利用上述揭示的方法和
技术实现思路
对本专利技术技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本专利技术技术方案的内容,依据本专利技术的技术实质对以上实施例所做的任何的简单修改、等同变化及修饰,均仍属于本专利技术技术方案保护的范围内。本文档来自技高网
...

【技术保护点】
1.一种提升区块链读写性能的分片存储方法,其特征在于,包括如下步骤:/n1)部署存在多namespace的区块链网络并启动区块链节点完成共识。/n2)设计区块链交易数据分片适配模块,该模块通过哈希表的方式将区块链交易分组。/n3)将区块链网络内不同namespace的存储挂载在不同的存储介质上。/n4)通过适配模块将步骤2)中已分组的区块链交易提交到区块链网络内的不同namespace上。/n5)与特定交易数据相关的交易调用将会通过适配模块分流到对应的namespace进行处理。/n

【技术特征摘要】
1.一种提升区块链读写性能的分片存储方法,其特征在于,包括如下步骤:
1)部署存在多namespace的区块链网络并启动区块链节点完成共识。
2)设计区块链交易数据分片适配模块,该模块通过哈希表的方式将区块链交易分组。
3)将区块链网络内不同namespace的存储挂载在不同的存储介质上。
4)通过适配模块将步骤2)中已分组的区块链交易提交到区块链网络内的不同namespace上。
5)与特定交易数据相关的交易调用将会通过适配模块分流到对应的namespace进行处理。


2.如权利要求1所述的一种提升区块链读写性能的分片存储方法,其特征在于,步骤1)中的namespace概念是对区块链网络中用于隔离账本、区块、交易和智能合约的物理...

【专利技术属性】
技术研发人员:尹可挺匡立中邱炜伟李伟谢迪凡
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1