CN111031086B - 一种区块链数据存储方法及系统 - Google Patents
一种区块链数据存储方法及系统 Download PDFInfo
- Publication number
- CN111031086B CN111031086B CN201910950062.1A CN201910950062A CN111031086B CN 111031086 B CN111031086 B CN 111031086B CN 201910950062 A CN201910950062 A CN 201910950062A CN 111031086 B CN111031086 B CN 111031086B
- Authority
- CN
- China
- Prior art keywords
- bridge
- platform
- client
- block
- external storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Abstract
本发明公开了一种区块链数据存储方法及系统,属于计算机技术领域,包括利用CS模式的桥接组件将Fabric平台与外部存储平台连接,其中桥接组件包括桥接服务端和桥接客户端,桥接服务端和桥接客户端之间通过gRPC协议连接通信,桥接客户端通过gRPC协议与Fabric平台连接通信,桥接服务端通过外部存储平台自身的标准访问协议与外部存储平台连接通信;将桥接组件部署在单独的网络节点,并利用桥接服务端接收桥接客户端传送的区块数据,该数据为桥接客户端接收Fabric平台发送的原生区块数据;桥接服务端将区块数据发送至外部存储平台进行存储。本发明在实现区块链数据弹性伸缩的同时降低了部署的复杂度和运维成本。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种区块链数据存储方法及系统。
背景技术
区块链网络具有提供去中心化、分布式、保证隐私和机密、不可篡改的能力,是一个可信的网络。区块链网络的第一个特征就是保证网络中每个参与节点都拥有一份完整的账本,账本是指包括区块链的数据结构、所有的交易信息和当前状态的数字记录。随着区块链技术发展到第三代,业内普遍将其认为是下一代可信互联网的基石。作为底层技术,存储可信数据的账本会越来越大。高速、稳定、可扩展、可伸缩成为了区块链部署的基本要求。为保障网络的可靠运行及便利的运维,需要为网络中的节点引入账本数据存储的弹性伸缩机制。
HyperLedger Fabric的数据存储称为账本,其结构如图1所示,账本数据分成两个部分W和B,W称为世界状态,B是区块链。简单来说,区块链是程序的日志数据,世界状态是程序的结果记录。做一类比描述:传统关系数据库有数据库表和操作日志,操作日志是每次应用程序操作的所有历史记录,数据库表是操作后的结果。W的存储,HyperLedger Fabric提供两种文档型数据库选择:LevelDB和CouchDB,也可对接其他类型NoSQL型数据库,通过定制亦可实现与关系型数据库对接。B的存储,Fabric目前仅提供基于文件系统的存储。
在现有流行的Fabric网络部署方案中,区块链网络中每台主机的存储很多均基于NAS等集中式网络存储技术,通过NAS提供的扩展能力,让区块链网络节点具备了存储伸缩能力。但是现有的网络技术,例如NAS的最大存储容量是NAS存储设备所能存储数据容量的极限,通俗的讲,就是NAS设备能够支持的最大硬盘数量乘以单个硬盘容量就是最大存储容量。所以其对于网络、服务器等硬件要求高,成本昂贵,使整个平台的初期建设成本非常高,后期运维成本及运维人员要求等比较苛刻。
发明内容
本发明的目的在于克服现有技术存在的不足或缺陷,以在区块链网络节点具备存储伸缩能力的同时降低部署的复杂度和运维成本。
为实现以上目的,一方面,采用一种区块链数据存储方法,包括如下步骤:
利用CS模式的桥接组件将Fabric平台与外部存储平台连接,其中桥接组件包括桥接服务端和桥接客户端,桥接服务端和桥接客户端之间通过gRPC协议连接通信,桥接客户端通过gRPC协议与Fabric平台连接通信,桥接服务端通过外部存储平台自身的标准访问协议与外部存储平台连接通信;
将桥接组件部署在单独的网络节点,并利用桥接服务端接收桥接客户端传送的区块数据,该数据为桥接客户端接收Fabric平台发送的原生区块数据;
桥接服务端将区块数据发送至外部存储平台进行存储。
进一步地,所述外部存储平台为分布式文件存储平台,包括Hadoop和GFS。
进一步地,所述桥接服务器端布置在所述外部存储平台的节点或集群中。
进一步地,还包括:
采用工厂模式对所述Fabric平台中的网络存储层进行持久类改造,得到两个持久类提供者,所述两个持久类提供者包括本地文件存储提供者和外部文件存储提供者;
所述Fabric平台读取yaml配置文件中相关的存储工厂类设置,在本地文件存储提供者和外部文件存储提供者之间进行选择。
进一步地,所述桥接服务端维护第一区块编号清单,所述桥接客户端维护第二区块编号清单,第一区块编号清单和第二区块编号清单相同;
所述桥接服务端设置有用于缓存区块数据的第一缓存区,所述桥接客户端设置有用于缓存区块数据的第二缓存区,两缓存区所缓存的区块与两区块编号清单中的区块编号一一对应;
所述第一缓存区设置在所述桥接服务端的内存中,所述第二缓存区设置在所述桥接客户端的本地文件中。
进一步地,还包括:
所述桥接服务端接收桥接客户端传送的区块数据,并将所述区块数据保存第一缓存中,其中所述桥接客户端将所述区块数据缓存在第二缓存中;
所述桥接服务端将区块数据发送至外部存储平台进行存储后,所述桥接服务端接收到所述外部存储平台返回的写入成功标志,清除所述第一区块编号清单中相应的编号及第一缓存中相应的区块,得到修正后的第一区块编号清单;
所述桥接服务端将修正后的第一区块编号清单发送至所述桥接客户端,以使所述桥接客户端根据修正后的第一区块编号清单修正所述第二区块编号清单,并删除所述第二缓存中相应的区块。
另一方面,采用一种区块链数据存储系统,包括Fabric平台、外部存储平台和CS模式的桥接组件,桥接组件包括桥接服务端和桥接客户端,桥接服务端和桥接客户端之间通过gRPC协议连接通信,桥接客户端通过gRPC协议与Fabric平台连接通信,桥接服务端通过外部存储平台自身的标准访问协议与外部存储平台连接通信。
进一步地,所述外部存储平台为分布式文件存储平台,包括Hadoop和GFS。
进一步地,所述桥接服务器端布置在所述外部存储平台的节点或集群中。
进一步地,所述桥接服务端维护第一区块编号清单,所述桥接客户端维护第二区块编号清单,第一区块编号清单和第二区块编号清单相同;
所述桥接服务端设置有用于缓存区块数据的第一缓存区,所述桥接客户端设置有用于缓存区块数据的第二缓存区,两缓存区所缓存的区块与两区块编号清单中的区块编号一一对应;
所述第一缓存区设置在所述桥接服务端的内存中,所述第二缓存区设置在所述桥接客户端的本地文件中。
与现有技术相比,本发明存在以下技术效果:本发明通过利用桥接组件将Fabric平台与外部存储平台连接起来,桥接客户端通过gRPC协议连接Fabric平台,可允许桥接组件部署在一个单独的网络节点上,实现了区块链数据的弹性伸缩,为区块链网络节点中账本数据存储增加了弹性伸缩的能力。且由于Fabric平台网络内节点间进程间通讯采用的是gRPC协议,可以把原生区块链数据传送到其它网络存储节点,中间不能存在转换,数据存储效率高。
附图说明
下面结合附图,对本发明的具体实施方式进行详细描述:
图1是HyperLedger Fabric的数据存储结构示意图;
图2是一种区块链数据存储方法的流程示意图;
图3是桥接模式示意图;
图4是Fabric平台和Hadoop平台之间的桥接示意图;
图5是重构后的Storage Layer组件功能示意图;
图6是一种区块链数据存储系统的结构示意图。
具体实施方式
为了更进一步说明本发明的特征,请参阅以下有关本发明的详细说明与附图。所附图仅供参考与说明之用,并非用来对本发明的保护范围加以限制。
如图2所示,本实施例公开了一种区块链数据存储方法,包括如下步骤S1至S3:
S1、利用桥接组件将Fabric平台与外部存储平台连接,其中桥接组件包括桥接服务端和桥接客户端,桥接服务端和桥接客户端之间通过gRPC协议连接通信,桥接客户端通过gRPC协议与Fabric平台连接通信,桥接服务端通过外部存储平台自身的标准访问协议与外部存储平台连接通信;
S2、将桥接组件部署在单独的网络节点,并利用桥接服务端接收桥接客户端传送的区块数据,该数据为桥接客户端接收Fabric平台发送的原生区块数据;
S3、桥接服务端将区块数据发送至外部存储平台进行存储。
需要说明的是,如图3-图4所示,桥接组件为CS架构模式,其用于在Fabric平台与外部存储平台之间构建桥梁,将Fabric平台和外部存储平台二者集成,一体化部署,降低了部署的复杂度和运维成本。桥接客户端通过gRPC协议连接Fabric平台,可允许桥接组件部署在一个单独的网络节点上,实现了区块链数据的弹性伸缩,为区块链网络节点中账本数据存储增加了弹性伸缩的能力。由于HyperLedger Fabric网络内节点间进程间通讯采用的协议是gRPC协议,因此桥接客户端通过gRPC协议连接Fabric平台,可以把原生区块数据传送到其他网络存储节点,中间不存在转换,所以效率最高。
需要说明的是,传统的在整个Fabric部署方案中含有区块链网络节点的部署,按照弹性存储的要求,附带有类似Ceph等部署配置说明。相对而言,采用本申请的方式,仅仅需要配置桥接软件,并yaml在配置文件中增加诸如缓存区块的数量、服务器地址等即可。
而且为Hadoop的HDFS本身增加存储在操作上是简单可靠的,对于运维人员的要求并不高,能够比较容易的实现区块存储的增加,关键是弹性增加,丝毫不会影响正在运行的区块链应用,从而降低运维成本。
具体来说,所述外部存储平台为分布式文件存储平台,包括Hadoop存储平台、GFS存储平台等。
应当理解的是,对于Hadoop来说,使用HDFS Client库。而对于GFS来说,使用的是GFS的访问客户端库。对于Hadoop来说,在桥接服务端使用Hadoop的Client技术进行访问,而对于GFS,则使用GFS的客户端技术进行访问。由于采用Hadoop或GFS等分布式存储平台,相较于传统的NAS是集中存储而言,本方案更易扩展且维护便捷。
具体来说,所述桥接服务器端布置在所述外部存储平台的节点或集群中。在采用Hadoop存储平台时,桥接服务器端位于Hadoop节点或集群中,通过gRPC协议接受StoreClient传送过来的数据,通过Hadoop的HDFSClient调用协议完成与Hadoop的通讯,将区块数据直接发送给Hadoop HDFS文件系统,实现区块的读写。
具体来说,本实施例采用简单工厂模式,重构Fabric框架中数据存储部分的代码,对Fabric平台的网络存储层进行持久类改造,形成两个持久类提供者,如图5所示:两个持久类提供者包括本地文件存储提供者和外部文件存储提供者;所述Fabric平台读取yaml配置文件中相关的存储工厂类设置,在本地文件存储提供者和外部文件存储提供者之间进行选择。
图5中, StorageFactory是一个抽象类,LocalFileSystemManager是本地文件存储提供者,HdfsFileSystemManager是 Hdfs文件存储提供者。
其中,所述桥接服务端维护第一区块编号清单,所述桥接客户端维护第二区块编号清单,第一区块编号清单和第二区块编号清单相同;
所述桥接服务端设置有用于缓存区块数据的第一缓存区,所述桥接客户端设置有用于缓存区块数据的第二缓存区,两缓存区所缓存的区块与两区块编号清单中的区块编号一一对应;
所述第一缓存区设置在所述桥接服务端的内存中,所述第二缓存区设置在所述桥接客户端的本地文件中。
进一步地,桥接服务端和桥接客户端之间的通信过程还包括如下步骤:
所述桥接服务端接收桥接客户端传送的区块数据,并将所述区块数据保存第一缓存中,其中所述桥接客户端将所述区块数据缓存在第二缓存中;
所述桥接服务端将区块数据发送至外部存储平台进行存储后,所述桥接服务端接收到所述外部存储平台返回的写入成功标志,清除所述第一区块编号清单中相应的编号及第一缓存中相应的区块,得到修正后的第一区块编号清单;
所述桥接服务端将修正后的第一区块编号清单发送至所述桥接客户端,以使所述桥接客户端根据修正后的第一区块编号清单修正所述第二区块编号清单,并删除所述第二缓存中相应的区块。
需要说明的是,区块写入时,要确保在写入过程中,发生的意外(如物理网络中断)导致的区块没有能够写入到外部存储中,所以需要一个确认信息的彼此确认,以确保区块能够准确写入外部存储中。
如图6所示,本实施例公开了一种区块链数据存储系统,包括Fabric平台10、外部存储平台30和桥接组件20,桥接组件20包括桥接客户端21和桥接服务端22,桥接服务端22和桥接客户端21之间通过gRPC协议连接通信,桥接客户端21通过gRPC协议与Fabric平台10连接通信,桥接服务端22通过外部存储平台自身的标准访问协议与外部存储平台30连接通信。
其中,外部存储平台30为分布式文件存储平台,包括Hadoop平台和GFS平台等。
进一步地,所述桥接服务端维护第一区块编号清单,所述桥接客户端维护第二区块编号清单,第一区块编号清单和第二区块编号清单相同;
所述桥接服务端设置有用于缓存区块数据的第一缓存区,所述桥接客户端设置有用于缓存区块数据的第二缓存区,两缓存区所缓存的区块与两区块编号清单中的区块编号一一对应;
所述第一缓存区设置在所述桥接服务端的内存中,所述第二缓存区设置在所述桥接客户端的本地文件中。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种区块链数据存储方法,其特征在于,包括:
利用桥接组件将Fabric平台与外部存储平台连接,其中桥接组件包括桥接服务端和桥接客户端,桥接服务端和桥接客户端之间通过gRPC协议连接通信,桥接客户端通过gRPC协议与Fabric平台连接通信,桥接服务端通过外部存储平台自身的标准访问协议与外部存储平台连接通信;
将桥接组件部署在单独的网络节点,并利用桥接服务端接收桥接客户端传送的区块数据,该数据为桥接客户端接收Fabric平台发送的原生区块数据;
桥接服务端将区块数据发送至外部存储平台进行存储;
采用工厂模式对所述Fabric平台中的网络存储层进行持久类改造,得到两个持久类提供者,所述两个持久类提供者包括本地文件存储提供者和外部文件存储提供者;
所述Fabric平台读取yaml配置文件中相关的存储工厂类设置,在本地文件存储提供者和外部文件存储提供者之间进行选择;
所述桥接服务端维护第一区块编号清单,所述桥接客户端维护第二区块编号清单,第一区块编号清单和第二区块编号清单相同;
所述桥接服务端设置有用于缓存区块数据的第一缓存区,所述桥接客户端设置有用于缓存区块数据的第二缓存区,两缓存区所缓存的区块与两区块编号清单中的区块编号一一对应;
所述第一缓存区设置在所述桥接服务端的内存中,所述第二缓存区设置在所述桥接客户端的本地文件中;
所述桥接服务端接收桥接客户端传送的区块数据,并将所述区块数据保存第一缓存中,其中所述桥接客户端将所述区块数据缓存在第二缓存中;
所述桥接服务端将区块数据发送至外部存储平台进行存储后,所述桥接服务端接收到所述外部存储平台返回的写入成功标志,清除所述第一区块编号清单中相应的编号及第一缓存中相应的区块,得到修正后的第一区块编号清单;
所述桥接服务端将修正后的第一区块编号清单发送至所述桥接客户端,以使所述桥接客户端根据修正后的第一区块编号清单修正所述第二区块编号清单,并删除所述第二缓存中相应的区块。
2.如权利要求1所述的区块链数据存储方法,其特征在于,所述外部存储平台为分布式文件存储平台,包括Hadoop 和GFS。
3.如权利要求2所述的区块链数据存储方法,其特征在于,所述桥接服务端布置在所述外部存储平台的节点或集群中。
4.一种区块链数据存储系统,用于实现权利要求1-3任意一项所述的区块链数据存储方法,其特征在于,包括Fabric平台、外部存储平台和桥接组件,桥接组件包括桥接服务端和桥接客户端,桥接服务端和桥接客户端之间通过gRPC协议连接通信,桥接客户端通过gRPC协议与Fabric平台连接通信,桥接服务端通过外部存储平台自身的标准访问协议与外部存储平台连接通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910950062.1A CN111031086B (zh) | 2019-10-08 | 2019-10-08 | 一种区块链数据存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910950062.1A CN111031086B (zh) | 2019-10-08 | 2019-10-08 | 一种区块链数据存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111031086A CN111031086A (zh) | 2020-04-17 |
CN111031086B true CN111031086B (zh) | 2022-11-08 |
Family
ID=70200087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910950062.1A Active CN111031086B (zh) | 2019-10-08 | 2019-10-08 | 一种区块链数据存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111031086B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111555870B (zh) * | 2020-04-29 | 2023-01-17 | 支付宝实验室(新加坡)有限公司 | 一种密钥运算方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763333A (zh) * | 2014-02-20 | 2014-04-30 | 北京七星华创电子股份有限公司 | 桥接通讯模块及方法 |
KR101661858B1 (ko) * | 2015-07-15 | 2016-09-30 | 주식회사 수산아이앤티 | 쿠키 브리지 장치 및 방법 |
US20190238316A1 (en) * | 2018-01-31 | 2019-08-01 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment |
CN109617903A (zh) * | 2018-12-29 | 2019-04-12 | 杭州趣链科技有限公司 | 一种基于ipfs和区块链的可信文件存储系统及方法 |
CN109586985A (zh) * | 2019-01-11 | 2019-04-05 | 青岛华制智能互联科技有限公司 | 一种基于区块链的弹性云系统支撑平台解决方案 |
CN109871669B (zh) * | 2019-03-14 | 2023-02-10 | 哈尔滨工程大学 | 一种基于区块链技术的数据共享解决方法 |
CN110059054A (zh) * | 2019-03-25 | 2019-07-26 | 天津大学 | 一种基于区块链和ipfs的车辆信息存储及检索方法 |
CN110061838B (zh) * | 2019-04-28 | 2022-07-19 | 广州大学 | 一种dns资源记录的去中心化存储系统及其实现方法 |
-
2019
- 2019-10-08 CN CN201910950062.1A patent/CN111031086B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111031086A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10387673B2 (en) | Fully managed account level blob data encryption in a distributed storage environment | |
US8381024B2 (en) | Arrangement for recovery of data by network nodes based on retrieval of encoded data distributed among the network nodes | |
CN101809558B (zh) | 远程异步数据复制系统和方法 | |
KR101335101B1 (ko) | 데이터의 복제 관리 방법 및 시스템 | |
US9535907B1 (en) | System and method for managing backup operations of virtual machines | |
US7870288B2 (en) | Sharing data in scalable software blade architecture | |
US20060080574A1 (en) | Redundant data storage reconfiguration | |
CN101888405B (zh) | 一种云计算的文件系统和数据处理方法 | |
US11307776B2 (en) | Method for accessing distributed storage system, related apparatus, and related system | |
US20140081927A1 (en) | Data node fencing in a distributed file system | |
CN104679665A (zh) | 一种实现分布式文件系统块存储的方法及系统 | |
CN103180842A (zh) | 云计算系统和用于该云计算系统的数据同步方法 | |
CN106156359A (zh) | 一种云计算平台下的数据同步更新方法 | |
CN103246616A (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
CN103780638A (zh) | 数据同步方法及系统 | |
CN101808127A (zh) | 数据备份方法、系统和服务器 | |
CN105278882A (zh) | 一种分布式文件系统的磁盘管理方法 | |
WO2023011022A1 (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN103501319A (zh) | 一种低延迟的面向小文件的分布式存储系统 | |
CN111522499B (zh) | 运维数据读取装置及其读取方法 | |
US20170017401A1 (en) | Redundant array of independent discs and dispersed storage network system re-director | |
CN105069152A (zh) | 数据处理方法及装置 | |
CN111031086B (zh) | 一种区块链数据存储方法及系统 | |
CN101329691A (zh) | 一种冗余磁盘阵列共享文件系统及其读写方法 | |
CN109189326B (zh) | 分布式集群的管理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |