Fabric架构解析

来源:互联网 发布:手机淘宝所在地怎么改 编辑:程序博客网 时间:2024/06/08 11:04

目前Fabric有两个版本0.6和1.0,所以本文将介绍分别介绍两个版本。因为本文讲架构,而架构是要对Fabric整体的设计思路有一个了解,所以本文可谓非常重要。但是架构相当于是一个从零到一的过程,在没有任何背景知识的前提下又很难直接到达一,所以没有简单的办法,希望大家在阅读前半部分时看不懂的可以先只是记忆不去理解,耐心看完本文后相信你对前面的内容就会有所理解,从而对Fabric的架构能有一个清晰的认识。

HyperLedger Fabric 0.6 架构
首先我们来看一下Fabric 0.6的架构图:
这里写图片描述

  • 区块服务(Blockchain Services):负责节点间的共识管理、账本的分布式计算、账本的存储以及节 点间的P2P协议功能的实现,是区块链的核⼼心组成部分,为区块 链的主体功能提供了底层⽀支撑。
  • 成员管理(Membership Services):会员注册、⾝身份保护、 内容保密、交易审计功 能,以保证平台访问的 安全性。
  • Chaincode:ChainCode的集成平台, 为ChainCode提供安全 的部署、运⾏行的环境。
  • Event:贯穿于其他各个组件中间,为各个组件间的异步通信提供了技术实现

Fabric 0.6 的区块链网络
这里写图片描述

在Fabric0.6中的节点分为两类,VP节点和NVP节点

有4个VP节点,而且只有VP节点有投票权,也就是说VP节点达成共识,则整个Fabric网络达成共识;
只允许一个VP节点异常,因为如果超过两个节点异常则不存在共识;
NVP节点只有查询权利,没有共识权利;

Fabric 0.6 运行时架构

这里写图片描述
从图上可以看出,在Fabric0.6的架构中,可以看出Fabric的扩展性是有可伸缩性的问题的,因为主要的工作都是由peer来完成的,例如共识、账本、worldstate、合约的执行等。所以才有了后来的Fabric1.0

HyperLedger Fabric 1.0 区块链网络
这里写图片描述
从图上可以看出,在Fabric 1.0中的一些变化,Fabric里没有了VP和NVP节点,替换成Orderer、Endorser、Committer节点。

HyperLedger Fabric 1.0 环境搭建
这里写图片描述

可以看出,在Fabric1.0中peer被拆分为peer和o-service,o-service可以理解为Orderer节点的集合,而在peer中出现了两个新东西——Endorser、Committer,简单来说Endorser是背书节点、commiter是确认节点。v1.0中,共识由orderer节点来完成。

Fabirc1.0的节点类型

Client:访问区块链的客户端;
Endorser:负责背书,也就是执行客户端传来Chaincode;
Commiter:负责将Orderer确认的Endorser执行结果写入账本;
Orderer:负责所有的共识工作;为什么叫Orderer,我的理解排序本身就是共识非常重要的内容,比如一个人只有100块钱,却支付了两个80元的交易,那只要在交易顺序的问题上,所有节点保持一致,就可以保持整个网络的共识。Orderer支持solo、kafaka和SBFT三种共识机制

数据结构

State:是账户信息,比如一个账户有多少钱等。由Peer来维护。
Ledger:账本信息。由Orderer 节点创建,然后由Orderer节点发送给每一个Peer,每一个Peer维护一个Ledger的副本。

Fabric1.0的执行过程
这个看懂了这个过程,就会对Fabric 1.0 的架构有一个清晰地了解,所以这个过程非常重要!非常重要!非常重要!
这里写图片描述

执行过程如下:

  1. Client发送Transaction信息至Endorser节点;如图同时发送给三个Endorser节点,这是为什么呢?带着问题往下看;
  2. Endorser节点执行Transaction,并且把执行结果返回给Client,同时会在返回结果上添加Endorser的签名,表示这个Endorser节点执行了这个Transaction。Transaction实际上是对ChainCode 的操作,操作类型是Deploy、Invoke、Query。
  3. 当Client收到三个Endorser节点返回的执行结果后,会先验证Endorser的签名,如果签名没有问题,会把这个结果发送给Orderer Service。
  4. Orderer Service收到Client发来的结果后,会去检验该结果。检验结果通过后,Orderer Service 会去生成blockchain,然后会把blockchain发送给Orderer Service所连接的所有peer。问题:Orderer Service 需要收到几个Endorser的执行结果才能通过呢?和第一步一样,带着问题往下看。
  5. Client、Endorser、Committer会收到Orderer Service的blockchain,并且以此来更新本地的Ledger和State

好了,以上就是整个Fabric1.0的一个完整的tx的执行过程,那接下来回答那个遗留的问题,到底需要几个Endorser节点?这个实在Endorsement Policy中配置的,但至少需要一个。为什么会有这样的设计呢?比如几个公司合作,大家都公用一个账本,那如果Endorser是我公司自己的peer,那么只需要一个peer就可以了。但如果Endorser是其他合作伙伴的,那为了防止被骗,我需要4个合作伙伴中的3个来共同确认一个tx,所以就需要3个Endorser peer.

事务
在Fabric中区块链中的区块就是一组事务按照一定的顺序进行打包的过程。所以对于区块链本身来讲,他需要处理的事情就是事务。
Fabirc支持三种事务:

  • Chaincode事务:智能合约事务,比如对于一笔账户间的转账
  • Configration事务:当有新节点加入Fabric网络,或者有老节点从Fabric中去掉,都会触发Configration事务
  • Custom事务:(还不了解)

Channel
区块链应用落地的一个很大的难题在于TPS。传统的中心化系统可以做到上万的TPS,而比特币和以太坊智能做到10TPS左右,这大大限制了区块链的落地。所以Fabric有了Channel概念。要了解Channel概念首先要了解多链的概念。如下图:

多链

从上图中可以看出两条链,一条是红色连接的,另一条是蓝色连接的。
每一条链都有自己的Peer、Ledger和Ordering Channel
不同的链之间的数据是隔离的,包括Chaincode也是隔离的
一个Peer可以同时属于多个链

这里写图片描述

从图上可以看到有三个Channel,分别是Channel1、Channel2和Channel3。Channel1用红色连接,Channel2用黑色连接,Channel3用蓝色连接。每一个Channel都是一个独立的、不与外界关联的通讯链路,他将Orderer和Peer连接在一起
- Channel1包含Peer1、Peer2和PeerN
- Channel2包含Peer2、PeerN
- Channel3包含Peer1、PeerN

每个Channel都有自己的账本,用跟在每个节点后面的小方块表示账本,每个Peer包含的不同的账本,分别用红、黑、蓝表示
Fabric的区块链网络缺省包含一个系统账本和一个通道;

Ledger
这里写图片描述

Ledger的存储是分为两部分的:

文件系统:一部分是Block数据的存储,存储在文件系统中。里面存储了所有Tx的日志。
Level DB:Level DB是KV数据库的一种,存储的是一个账户当前有多少钱。
当我们把账户的当前信息和文件系统中的Tx日志合并在一起,就可以描述整个区块链网络所发生的所有事情。

以上是对整个Fabirc的一个架构的概述,希望能对你学习区块链有所帮助。

0 0
原创粉丝点击