Hyperledger是被业界非常看到的联盟链的实现,包括IBM、Intel、R3、各个大型商业银行等都参与其中,带给我们关于区块链技术与软件工业、金融、保险、物流等领域碰撞结合的想象空间;在这个联盟中,有超过1/4的成员都来自中国,这更是我们对于它的一举一动都非常关注。很大程度上,Hyperledger和它背后的联盟体系就代表着区块链在产业环境中的未来。

作为最重要的子项目,在联盟推出Fabric 0.6版本后,最新的Fabirc 1.0 版本也即将问世,今天我们来走马观花地领略一下最新版本(1.0)的总体架构,对于这个承载产业梦想的新生事物有个基本的认识。

说明:本文章仅仅是个概览,具体的细节可以参考官网和github站点文档;本人也只是从这些地方将信息汇集了一下,权作为是”借花献佛“了。

  • Fabric1.0总体架构

Hyperledger的fabric当前的稳定版本是0.6版,在讲解1.0版本之前,我们先看看0.6版本的总体架构:

对应的0.6版本的运行时架构:

0.6版本的架构特点是:

  1. 结构简单: 应用-成员管理-Peer的三角形关系,主要业务功能全部集中于Peer节点;
  2. 架构问题:由于peer节点承担了太多的功能,所以带来扩展性、可维护性、安全性、业务隔离等方面的诸多问题,所以0.6版本在推出后,并没有大规模被行业使用,只是在一些零星的案例中进行业务验证;

针对上述问题,1.0版本做了很大的改进和重构:

这是最新的1.0运行时架构:

1.0 架构要点:

  1. 分拆Peer的功能,将Blockchain的数据维护和共识服务进行分离,共识服务从Peer节点中完全分离出来,独立为Orderer节点提供共识服务;
  2. 基于新的架构,实现多通道(channel)的结构,实现了更为灵活的业务适应性(业务隔离、安全性等方面)
  3. 支持更强的配置功能和策略管理功能,进一步增强系统的灵活性和适应性;

备注:最新的1.0版本中,上图中的Membership服务已经改名为fabric-ca

  • 1.0版本架构目标

从Fabric的新架构设计的建议文档看,1.0版本的设计目标如下:

  1. chaincode信任的灵活性:支持多个ordering服务节点,增强共识的容错能力和对抗orderer作恶的能力
  2. 2. 扩展性: 将endorsement和ordering进行分离,实现多通道(实际是分区)结构,增强系统的扩展性;同时也将chaincode执行、ledger、state维护等非常消耗系统性能的任务与共识任务分离,保证了关键任务(ordering)的可靠执行
  3. 保密性:新架构对于chaincode在数据更新、状态维护等方面提供了新的保密性要求,提高系统的业务、安全方面的能力
  4. 共识服务的模块化:支持可插拔的共识结构,支持多种共识服务的接入和服务实现
  • 架构特点

Hyperledger fabirc 1.0 版本的在0.6版本基础上,针对安全、保密、部署、维护、实际业务场景需求等方面进行了很多改进,特别是Peer节点的功能分离,给系统架构具备了支持多通道、可插拔的共识的能力,使得Fabric脱离了0.6版本带给人的青涩感(仅仅是个”验证与演示“版的,呵呵),已经接近于工业应用的需求;

我们现在看看 1.0版本的关键架构:

  • 多链与多通道

Fabric 1.0 的重要特征是支持多chain和多channel;

所谓的chain(链)实际上是包含Peer节点、账本、ordering通道的逻辑结构,它将参与者与数据(包含chaincode在)进行隔离,满足了不同业务场景下的”不同的人访问不同数据“的基本要求。

同时,一个peer节点也可以参与到多个chain中(通过接入多个channel);如下图所示

关于通道:通道是有共识服务(ordering)提供的一种通讯机制,类似于消息系统中的发布-订阅(PUB/SUB)中的topic;基于这种发布-订阅关系,将peer和orderer连接在一起,形成一个个具有保密性的通讯链路(虚拟),实现了业务隔离的要求;通道也与账本(ledger)-状态(worldstate)紧密相关;如下图所示:

共识服务与(P1、PN)、(P1、P2、P3)、(P2、P3)组成了三个相互独立的通道,加入到不同通道的Peer节点能够维护各个通道对应的账本和状态;也其实也对应现实世界中,不同业务场景下的参与方,例如银行、保险公司;物流企业、生产企业等实体结构;我们可以看到channel机制实际上是的Fabric建模实际业务流程的能力大大增强了,大家可以发挥想象力去找到可能的应用领域

  • 交易(数据)流程说明

新版本的架构变化导致新的交易流程的变化,我们简述如下:

总体流程如下图所示:

  1. 应用程序通过SDK发送请求道Peer节点(一个或多个)
  2. peer节点分别执行交易(通过chaincode),但是并不将执行结果提交到本地的账本中(可以认为是模拟执行,交易处于挂起状态),参与背书的peer将执行结果返回给应用程序(其中包括自身对背书结果的签名)
  3. 应用程序 收集背书结果并将结果提交给Ordering服务节点
  4. Ordering服务节点执行共识过程并生成block,通过消息通道发布给Peer节点,由peer节点各自验证交易并提交到本地的ledger中(包括state状态的变化)

上述过程对应的执行序列图如下:

在新的架构中,Peer节点负责维护区块链的账本(ledger)和状态(State),本地的账本称为PeerLedger,其结构如下:

我们可以看到,整个区块结构分为文件系统存储的Block结构和数据库维护的State状态,其中state的存储结构是可以替换的,可选的实现包括各种KV数据库(LEVELDB,CouchDB等);

上边就是我们对Fabric 1.0版本的简要介绍,由于Fabric的复杂性,后续我也会针对1.0版本中的技术细节和实现机制进行专题说明,敬请关注;

同时,1.0 版本的代码和文档每天都在更新,请大家关注官网和github,这里是最好学习天地。

最后说民一下大家比较关心的版本计划:

  • 1.0版本的版本计划

下边是剧透的官方开发计划,只是“Proposed“,也许随时会有变化哦:

从官方公布的计划看,1.0版本应该可以在3月份完成release,让我们期待这个最新版本的诞生吧。

Hyperledger Fabric1.0架构概览相关推荐

  1. Ubuntu 16.04下 hyperledger fabric1.0 网络环境搭建过程

    环境: windows10 + VirtualBox 6.1.0 + Ubuntu16.04.6 参考教程: https://blog.csdn.net/smallone233/article/det ...

  2. 区块链基础知识系列第5课 Hyperledger fabric1.0网络中transaction产生以及流转过程

    一.发起transaction 当client想要发起一个transaction时,它会首先发送一个PROPOSE消息到它选择的一组endorser节点,消息模式有以下两种,节点可以自由选择(可能有更 ...

  3. Hyperledger fabric1.4.0搭建环境

    Hyperledger fabric1.4.0搭建环境 原创牧竹子 最后发布于2019-05-11 21:10:20 阅读数 630  收藏 展开 Hyperledger fabric1.4.0搭建环 ...

  4. the transaction flow in v1.0 of Hyperledger Fabric(fabric1.0交易流程)

    原文:https://www.ibm.com/developerworks/cloud/library/cl-top-technical-advantages-of-hyperledger-fabri ...

  5. Apache Beam的架构概览

    不多说,直接上干货! Apache Beam是一个开源的数据处理编程库,由Google贡献给Apache的项目,前不久刚刚成为Apache TLP项目.它提供了一个高级的.统一的编程模型,允许我们通过 ...

  6. 区块链教程Fabric1.0源代码分析scc(系统链码)

    区块链教程Fabric1.0源代码分析scc(系统链码),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期泡沫的渐退,让人们更 ...

  7. 兄弟连区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令一

    区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初 ...

  8. Kafka原理——fabric1.0版本中的节点排序方法

    Kafka原理 可参考Zookeeper一起理解,后续自己在项目中实现,会再来补充一些实践的内容. Zookeeper整理:https://blog.csdn.net/yangwei256/artic ...

  9. Hyperledger Fabric1.4学习笔记(包括官方文档翻译)

    目录 名词概念 账本Ledger 区块 交易 各种节点 fabric1.0典型交易流程 组织 fabric系统逻辑结构图 通道channel 各个命令详解 背书策略 Fabric1.4 fabric1 ...

最新文章

  1. ***正传——著名网络安全人士郭鑫成长经历
  2. 编译预处理 -- 带参数的宏定义--【原创】
  3. vc怎么查看c源码的汇编语言,VC++代码的汇编分析(一)
  4. ios swift ios8 模糊
  5. Spring提取@Transactional事务注解的源码解析
  6. c语言函数汉诺塔不用move,C语言——汉诺塔问题(函数递归)
  7. SAP CRM, C4C和Hybris Commerce的数据迁移策略
  8. react.js 从零开始(五)React 中事件的用法
  9. 建设“一流本科专业”?急啥,先看看哈佛数学系从三流到一流的150年
  10. 运行android程序时显示stop,Android系统.应用程序关闭时WorkManager是否正在运行?
  11. 95-36-100-ChannelHandler-ChannelOutboundHandler
  12. javascript不定参数
  13. 王者荣耀游戏服务器架构的演进读后感
  14. jquery 元素第二个_jQuery知识总结
  15. Android MTK修改手机型号
  16. 高速PCB设计考虑的六个方面
  17. linux安全工具(RKHunter)
  18. mysql修改校对集_mysql数据库的基本操作(增删改查、字符集、校对集)
  19. 边缘计算平台能力开放
  20. 2019 拼多多校招第三题sum 服务端研发工程师

热门文章

  1. 利用线程下载网页中的程序并另存到本地
  2. 在线计算机多功能,一种多功能组合计算机制造技术
  3. java 时分秒比较_小学三年级数学上册《时分秒》一课一练,含答案,巩固此知识点!...
  4. Python8:logging Module
  5. VS中添加命令行参数的方法
  6. PIC单片机入门_PICC的指向RAM的指针
  7. Thymeleaf 标准表达式语法
  8. js javascript js控制分页打印,打印分页
  9. MFC中CSliderCtrl的使用(收集)
  10. 程序员面试系列——大小端