FISCO BCOS 2.0新增对分布式数据存储的支持,克服了本地化数据存储的诸多限制。

在FISCO BCOS 1.0中,节点采用MPT数据结构,通过LevelDB将数据存储于本地,这种模式受限于本地磁盘大小,当业务量增大时数据会急剧膨胀,要进行数据迁移也非常复杂,给数据存储带来较大的成本和维护难度。

为了突破性能的瓶颈,我们在FISCO BCOS 2.0中,对底层的存储进行了重新设计,实现了分布式存储,使用不同于MPT的方式来实现追溯,带来了性能上的提升。

先夸夸分布式存储方案的优点:

  • 支持多种存储引擎,选用高可用的分布式存储系统,可以支持数据简便快速地扩容;

  • 将计算和数据隔离,节点故障不会导致数据异常;

  • 数据在远端存储,数据可以在更安全的隔离区存储,这在很多场景中非常有意义;

  • 分布式存储不仅支持Key-Value形式,还支持SQL方式,使得业务开发更为简便;

  • 世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状态急剧膨胀导致性能下降的问题;

  • 优化了数据存储的结构,更节约存储空间。

从MPT存储到分布式存储

MPT存储

MPT(Merkle Paricia Trie),来自以太坊,对外接口为Key-Value,使用前缀树来存储数据,是FISCO BCOS 1.0的存储模式。

MPT是前缀树结构,树中的每个叶子节点允许有最多16个子叶子节点,叶子节点有一个HASH字段,由该叶子的所有子叶子节点HASH运算得出。树根有唯一的HASH值,标识整棵树的HASH。

以太坊的全局状态数据,保存在MPT树中,状态数据由账号组成。账号在MPT中是一个叶子节点,账号数据包括Nonce、Balance、CodeHash和StorageRoot。任意一个账号字段发生变化时,会导致该账号所在的叶子的HASH发生变化,从该叶子直到顶部的所有叶子的HASH都会变化,最后导致顶部的StateRoot变化。

由此可见,任何账户的任意字段变化,都会导致StateRoot的变化,StateRoot能唯一标识以太坊的全局状态。

MPT可以实现轻客户端和数据追溯,通过StateRoot可以查询到区块的状态。

MPT带来了大量HASH的计算,打散了底层数据存储的连续性。在性能方面,MPT State存在着天然的劣势。

可以说,MPT State追求极致的可证明性和可追溯性,对性能和可扩展性做了一定的妥协。

分布式存储

FISCO BCOS 2.0在保持存储接口兼容性的同时,引入了高扩展性、高吞吐量、高可用、高性能的分布式存储。

分布式存储(Advanced Mass Database,AMDB):重新抽象了区块链的底层存储模型,实现了类SQL的抽象存储接口,支持多种后端数据库,包括KV数据库和关系型数据库。

引入了分布式存储后,数据读写请求不经过MPT,直接访问存储,结合缓存机制,存储性能相比基于MPT的存储有大幅提升。MPT数据结构仍然保留,仅做为可选方案。

分布式存储支持MySQL等关系型数据库,支持MySQL集群、分库分表等平行扩展方式,理论上存储容量无限。

分布式存储架构

State层(State)

抽象了智能合约的存储访问接口,由EVM调用,分为StorageState和MPTState。StorageState为分布式存储的适配层,MPTState为老的MPT适配层,FISCO BCOS默认使用StorageState。

分布式存储层(Table)

抽象了分布式存储的类SQL接口,由State层和Precompiled调用。分布式存储层抽象了存储的增删改查接口,把区块链的核心数据分类存储到不同的表中。

驱动层(Storage)

实现具体的数据库访问逻辑,包括LevelDB和MySQL。

分布式存储名词解释

Table

存储表中的所有数据。Table中存储分布式存储主key到对应Entries的映射,可以基于分布式存储主key进行增删改查,支持条件筛选。

Entries

Entries中存放主Key相同的Entry,数组。分布式存储的主Key与Mysql中的主key不同,分布式存储主key用于标示Entry属于哪个key,相同key的Entry会存放在同一个Entries中。

Entry

对应于表中的一行,每行以列名作为key,对应的值作为value,构成KV结构。每个Entry拥有自己的分布式存储主key,不同Entry允许拥有相同的分布式存储主key。

Condition

Table中的“删改查”接口可传入条件,支持“等于”“大于”“小于”等过滤逻辑,接口根据条件对数据进行筛选后进行相应操作,返回结果数据。如果条件为空,则不做任何筛选。

举例

以某公司员工领用物资登记表为例,解释上述名词

  • 表中Name是分布式存储主key。

  • 表中的每一行为一个Entry。一共有4个Entry,每个Entry有三个字段。

  • Table中以Name为主key,存有3个Entries对象。第1个Entries中存有Alice的2条记录,第2个Entries中存有Bob的1条记录,第3个Entries中存有Chris的一条记录。

  • 调用Table类的查询接口时,查接口需要指定分布式存储主key和条件,设置查询的分布式存储主key为Alice,条件为price > 40,会查询出Entry1。

分布式存储表分类

表中的所有entry,都会有_status_,_num_,_hash_内置字段。

系统表

系统表默认存在,由存储驱动保证系统表的创建。

用户表

用户CRUD合约所创建的表,以_user_<TableName>为表名,底层自动添加_user_前缀。

StorageState账户表

_contract_data_+Address+_作为表名。表中存储外部账户相关信息。表结构如下:

总结

FISCO BCOS发布至今,历经大量真实业务实践。分布式存储在持续改进的过程中,总结出适合于金融业务、高性能、高可用性和高可扩展的存储模型,架构愈发稳定成熟,未来分布式存储将继续作为区块链系统的基石,支持区块链系统的发展。


我们鼓励机构成员、开发者等社区伙伴参与开源共建事业,有你在一起,会更了不起。多样参与方式:

1 进入微信社群,随时随地与圈内最活跃、最顶尖的团队畅聊技术话题(进群请添加小助手微信,微信ID:fiscobcosfan);

2 订阅我们的公众号:“FISCO BCOS开源社区”,我们为你准备了开发资料库、最新FISCO BCOS动态、活动、大赛等信息;

3 来Meetup与开发团队面对面交流,FISCO BCOS正在全国举办巡回Meetup,深圳、北京、上海、成都……欢迎您公众号在菜单栏【找活动】中找到附近的Meetup,前往结识技术大咖,畅聊硬核技术;

4 参与代码贡献,您可以在Github提交Issue进行问题交流,欢迎向FISCO BCOS提交Pull Request,包括但不限于文档修改、修复发现的bug、提交新的功能特性。

代码贡献指引:

https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/docs/CONTRIBUTING_CN.md

了解更多干货内容,请关注FISCO BCOS开源社区公众号,访问FISCO BCOS代码仓库可下载项目所有源代码:https://github.com/FISCO-BCOS/FISCO-BCOS​​​​​​​,欢迎点击页面右上角star收藏,获取最新版本。

FISCO BCOS 2.0原理解析: 分布式存储架构设计相关推荐

  1. Tomcat 架构原理解析到架构设计借鉴

    ‍ 点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Tomcat 架构原理解析到架构设计借鉴 Tomcat 发展这 ...

  2. 【Tomcat 】Tomcat 架构原理解析到架构设计借鉴

    Tomcat 发展这么多年,已经比较成熟稳定.在如今『追新求快』的时代,Tomcat 作为 Java Web 开发必备的工具似乎变成了『熟悉的陌生人』,难道说如今就没有必要深入学习它了么?学习它我们又 ...

  3. 支撑区块链大规模商用,FISCO BCOS v3.0的那些“黑科技”

    文章转载自CSDN公众号 在2021年度金链盟生态大会上,全新的FISCO BCOS v3.0正式发布.该版本从架构.算法以及安全可控和隐私计算协同等方向进行了全面升级,满足数字经济时代对区块链系统可 ...

  4. FISCO BCOS 2.0发布:新增群组架构克服吞吐瓶颈

    今日,FISCO BCOS开源社区正式对外发布FISCO BCOS的2.0版,该版本在可扩展性.性能.易用性.隐私隔离等方面均取得突破性进展,其新增的群组架构方案,可以让企业间像拉微信群一样快速组链, ...

  5. FISCO BCOS 2.0 发布:新增群组架构克服吞吐瓶颈

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   3月20日,FISCO BCOS开源社区正式对外发布FISCO BCOS的2.0版,该版本在可扩展性.性能.易用性 ...

  6. 开源进展 | WeBASE v3.0发布,支持适配FISCO BCOS v3.0稳定版

    WeBASE(WeBank Blockchain Application Software Extension) 是在区块链应用和FISCO BCOS底层之间搭建的一套通用组件,围绕交易.合约.密钥管 ...

  7. jQuery技术内幕:深入解析jQuery架构设计与实现原理1

    jQuery技术内幕:深入解析jQuery架构设计与实现原理 高 云 著 图书在版编目(CIP)数据 jQuery技术内幕:深入解析jQuery架构设计与实现原理 / 高云著. -北京:机械工业出版社 ...

  8. 大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书) - 电子书下载 -(百度网盘 高清版PDF格式)...

    大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书)-杨传辉 在线阅读                   百度网盘下载(89hy) 书名:大规模分布式存储系统:原理解析与架构实战 (大数据技 ...

  9. Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书) - 电子书下载(高清版PDF格式+EPUB格式)...

    Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书)-董西成著 在线阅读                   百度网盘下载(ihhy) 书名:Hadoop技术内幕:深 ...

最新文章

  1. 斯坦福年度AI报告:人工智能全面逼近人类能力
  2. html外链式css运行不出来div,html+css外链式
  3. 8.继续分析一破解加密码获取-最最最简单的注册机
  4. Windows Server 2012改造成Windows8的方法(转载)
  5. 对XMLHttpRequest异步请求的面向对象封装
  6. 移动web开发DRP问题
  7. 但行好事,莫问前程!
  8. 标准评分卡分数计算原理_评分卡的形式、刻度及应用场景
  9. poi 顺序解析word_JavaPOI解析word提取数据到excel
  10. Swift @escaping @noescape
  11. HXSafeGuard工程通过VS2010编译未安装VS2008出现以下错误
  12. windows .bat脚本检测文件更新,并复制
  13. paramiko学习笔记
  14. 小程序之地图标注以及导航
  15. paip.提升效率--输入框不能粘贴的问题
  16. GigE Vision网络相机
  17. html网页实现分享功能,H5网页实现微信分享功能
  18. C语言之数组求中位数-封装函数
  19. Qos服务质量与IntServ和DiffServ
  20. 【Hide-and-Seek】《Hide-and-Seek: A Data Augmentation Technique for Weakly-Supervised Localization xxx》

热门文章

  1. 一张图看懂UML类图
  2. w10系统服务器属性在哪,电脑W10查看电脑配置属性 - 卡饭网
  3. 28个linux命令行神器
  4. 毕业设计《宠物医院挂号系统》
  5. java 如何创建一个数组_如何用Java创建一个数组?
  6. 微视抄袭抖音?马化腾怒怼张一鸣
  7. Hive--笔试题05_1--求TopN
  8. ThinkPad 驱动自动安装盘
  9. 34 freertos任务通知--代替消息队列(任务邮箱)覆盖和非覆盖
  10. 5年测试被裁,恶补3个月上岸阿里25K,面试差点被问哭···