第五章 九析带你轻松完爆 hyperledger fabric - 网络节点介绍

本系列文章:


第一章:九析带你完爆 fabric - 快速搭建区块链

第二章:九析带你完爆 fabric - 快速搭建 GO 环境

第三章:九析带你完爆 fabric - 快速上手 first-network 样例

第四章:九析带你完爆 fabric - 系统逻辑架构篇

第五章:九析带你完爆 fabric - 网络节点介绍

目录

1 前言

2 节点分类

    2.1 CA 节点

    2.2 客户端节点

    2.3 orderer 节点

    2.4 peer 节点

        2.4.1 Anchor 节点

        2.4.2 Endorsor 节点

        2.4.3 Committer 节点

        2.4.4 peer 节点声明

3 总结


1 前言

        fabric 区块链网络是由各种不同类型的节点所组成,正是这些不同类型的节点按照各自的作用和分工进行交互,才使得整个区块链得以正常运作。


2 节点分类

        本文按照节点学习难易程度进行排序,上面最简单,下面难度依次增加。

        区块链网络中的节点大致可分为四类:CA 节点、客户端节点、orderer 节点、peer 节点。

2.1 CA 节点

        CA 节点作用是颁发证书,它为网络中的节点通信提供凭证(证书)。携带经过 CA 认证过的证书进行的交易才会被接受。CA 节点并非是区块链网络中强制性节点,即:它是可选的(optional)。此外,在 fabric 区块链网络中,你既可以选择 fabric 自身提供的 CA 认证方式,也可以选择其他第三方认证方式。

        以下举一个生活中的例子才解释 CA 节点:某小区(区块链网络),物业公司(CA 颁发机构)会给各个住户提供小区钥匙(证书),只有拥有物业公司提供的钥匙才允许在小区内部各门之间走动(交易)。当然物业公司是业主可以选择的,你既可以选择万科,也可以选择绿城,或者有些老小区根本就没有物业(CA 可选择)

2.2 客户端节点

        客户端节点是区块链的实际使用者,因此区块链网络就可以有多个客户端节点同时存在。它们既可以跟 orderer 节点进行交互创建通道(channel),也可以跟 peer 节点进行交互模拟交易执行等。大部分的区块链操作都是通过客户端节点来发起的。

2.3 orderer 节点

        orderer 节点是排序节点。它的作用类似一个管道或者过滤器。它从各个客户端节点接收发送过来的交易,接着将这些交易按照一定的规则进行排序,然后将排好序的交易按照固定的时间间隔再打包成区块,最后发送给组织的 Anchor 节点(下面会讲,这里先记住即可)。orderer 节点的排序规则目前官方只提供两种方式:solo 和 kafka。

        solo 中文翻译是“独奏”,在区块链网络中表示只有一个 orderer 节点,所以它的排序规则就是按照 orderer 节点接受交易的先后顺序来排序,也就是生活中的先来后到原则。由于 solo 模式表示区块链网络中只有一个 orderer 节点,所以很容易导致单点故障,故生产环境中并不会使用此方式。

        kafka 即消息服务器。使用此排序方式的 orderer 节点,其实是将整个排序工作交给 kafka 集群去实现。 orderer 作为 kafka 的生产者,将客户端节点发送过来的交易发送给 kafka,然后再作为 kafka 的消费者,接收从 kafka 发送回来的交易结果,根据从 kafka 接收到的消息顺序就是最终排序的结果。这种方式有一定的随机性,但是确实有点***子放屁的嫌疑。但目前生产环境大多采用这样排序方式。

2.4 peer 节点

        除了 CA、客户端、orderer 之外的其他节点之外就都是 peer 节点了,但 peer 节点又根据功能不同分为 Anchor、Endorsor 和 Committer 节点。为了理解上的方便,我们举一个技术公司的例子:

        orderer 节点相当于 CTO;客户端节点相当于产品经理;CA 节点相当于业务需求方;peer 节点则是一个统称,代表全体技术人员,但是根据分工不同,peer 会有不同的角色,比如 Anchor 节点(项目经理)、Endorsor 节点(研发人员)、Committer(实习生)。

2.4.1 Anchor 节点

        一般情况下,每个技术公司都会分多个项目组,每个项目组都会指定一个项目经理和多个开发人员。在 fabric 区块链网络中,项目组对应组织(Organization),项目经理对应 Anchor 节点(组织中的主节点或锚节点)。在组织中,只有 Anchor(项目经理)跟 Orderer 节点(CTO)唯一进行通信,假如 Anchor 节点(项目经理)生病了(宕机),该组织内部的其他 peer 成员可以选举一个新节点作为 Anchor 节点。

2.4.2 Endorsor 节点

        Endorsor 节点是背书节点(担保节点),智能合约就运行在背书节点之上。客户端发送交易提案给背书节点,背书节点模拟执行之后对执行结果进行签名背书,再将模拟执行结果返回给客户端节点。如果你对这样的定义很难理解,我们不妨接着上面的例子做一个类比。

CTO(orderer 节点)想统计每个研发人员(Endorer)的绩效,研发人员(Endorsor)的绩效是完成了多少产品经理(客户端)需求。当客户端(产品经理)提出需求后,Endorsor 节点接受需求后执行,如果有多个 Endorsor 节点,那么这几个节点都会去执行客户端的需求,执行完毕后会通知客户端,那么到底这个需求是谁完成了呢?产品经理(客户端)不做评判,它只是实事求是地把每个 endorsor 节点完成的情况告诉 CTO(orderer)节点,然后让 CTO 去判断究竟是谁的绩效(这个过程便是 fabric 网络中的共识机制)。CTO 评判确定 Endorsor 后,会把绩效同步给项目组(组织)的 Anchor(项目经理),Anchor 收到通知后,就会广播给组织内部的所有节点,所有节点收到消息后就会同步绩效结果(记账)。

2.4.3 Committer 节点

        peer 节点除了 Anchor(项目经理)、Endorsor(研发人员)之外的其他类型节点就是 Committer 节点了。它就像实习生一样(不负责实际开发任务),只被动接收绩效记录(Comitter)。

2.4.4 Peer 节点声明

        peer 节点基本介绍完了,但还需要声明一下,peer 节点的角色并不具备排他性,也就是说一个 peer 节点,它既可以是 anchor,也可以同时是 endorsor,也可以同时是 committer。就像在一个项目组中就有一个人,它既是一个实习生,也同时是项目经理和实际开发一样。


3 总结

第五章 九析带你轻松完爆 hyperledger fabric - 网络节点介绍

        上图就是整个 fabric 网络节点拓补结构图。可以结合本人上面的介绍对照加深理解。自此,fabric 区块链网络中的节点以及节点作用都介绍结束了。如果你觉得九析的介绍对你有帮助的话,麻烦你给九析点个赞哦,谢谢!^_^

上一篇:LeetCode376. 摆动序列


下一篇:某地市农行网络架构运维分析