在Fabric网络中,数据是由Peer节点提交到Orderer排序服务,而Orderer相对于Kafka来说相当于上游模块,且Orderer还兼具提供了对数据进行排序及生成符合配置规范及要求的区块。而使用上游模块的数据计算、统计、分析,这个时候就可以使用类似于Kafka这样的分布式消息系统来协助业务流程。
Kafka是一种共识模式,也就是说平等信任(同步复制),所有的HyperLedger Fabric网络加盟方都是可信方,因为消息总是均匀地分布在各处。但具体生产使用的时候是依赖于背书来做到确权,相对而言,Kafka应该是一种启动Fabric网络的模式或类型。
7、Zookeeper
Zookeeper是一种在分布式系统中被广泛用来作为分布式状态管理、分布式协调管理、分布式配置管理和分布式锁服务的集群。
Kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件,Kafka系统会捕获这些事件,进行新一轮的负载均衡,客户端也会捕获这些事件来进行新一轮的处理。
8、SDK(Java/Node.js)
HyperLedger Fabric最终还是要落地于实际应用,那么相对于HyperLedger Fabric的应用层则会直接提供接口给其他各客户端并对区块链网络进行操作。目前基于HyperLedger Fabric的SDK方案有很多,但相对较成熟的主要还是Java和Node.js的。所以这两门语言应当是学习HyperLedger Fabric平台工程师的主力语言,建议熟练使用其中之一。
如果正好这两门语言都不是目前学习Hyperledger Fabric工程师的主力语言,那么可以考虑用其他被gRPC所支持的编程语言自行实现,或者使用fabric-sdk-container所提供的解决方案。
学习思路:
Hyperledger Fabric的入门其实不能说难,只是很麻烦,很多知识点并不需要开发人员熟练掌握,但必须有所了解。当只想基于Hyperledger Fabric平台落地一个区块链项目,却不清楚哪些知识点是必须深入学习的时候,就需要一个简单明确的引导来帮助完成这件事。
我从接触HyperLedger Fabric项目以来,经历了其0.6版本到1.1版本的数次迭代。因为早期中文资料稀缺,并且0.6版本到1.0版本是一个跨度非常大的迭代,导致早期的大部分部署和应用经验失去作用,不得已再次从1.0版本开始从头学习。当时中文资料极为有限,且大多数都是单篇翻译或纯粹的概念讲解,导致我一直没有找到入门的头绪,只能不断地从官方文档中汲取知识。
现在网上已经有了大量的HyperLedger Fabric教学博客和视频资料,也有很多书籍辅助开发人员学习,国内的HyperLedger Fabric项目实操氛围也不错,大部分关于区块链的招聘都要求应聘人员对HyperLedger Fabric的架构和具体应用有一定的经验。
我根据自己的实践经验撰写了Hyperledger Fabric 1.0 从零开始系列博文。后来在宋亚东老师的建议下,再次从头梳理了所有内容,并结合自己实际学习和开发的过程整理了一条学习线路,如下图所示。开发人员可以按照图中序号顺序进行学习。
这本名为《HyperLedger Fabric开发实战——快速掌握区块链技术》的书没有花费篇章讲述区块链的编年史,也没有横向对比各大区块链平台的优缺点,也不是纯粹的翻译注解。更多的是对初学HyperLedger Fabric的指南,书中有大量的代码介绍和讲解,并且也提供了源码下载地址,减少手动敲代码及调试的烦恼。同时,以HyperLedger Fabric案例为引,层层深入,从单机单节点到Solo多机部署再到Kafka集群部署,其中结合穿插文档讲解加深理解。特别是对于一些常犯错误,本书均一一进行了提醒并给出了解决方案,希望能通过本书帮助开发人员少走弯路,尽快实现基于HyperLedger Fabric的区块链实践落地。
当然,每个人都有各自的学习方案和思路,上图中的路线并非适合所有人,有一定基础的读者可以跳过其中的部分节点选择性阅读。所以,它适合正在寻求HyperLedger Fabric入门的新人,也适合这方面的中、高级开发人员选择性学习。
最后,介绍下本书的架构组成:
第1章是基本环境部署,包括内网和外网的不同方案,以及内核处理等。
第2章是HyperLedger Fabric及环境部署,先是用文档讲述了Fabric相关的介绍和主要功能点,接着分析了源码部署和镜像处理方面的问题。
第3章带着读者一步步跑通官方的e2e_cli案例,并在随后对该案例进行了分析。
第4章开始,手动部署一次单机多节点网络。
第5章跟随前章的脚步,手动部署一次Solo多机网络环境。
第6章继续深入,搭建基于Kafka的集群网络。
第7章以文档为主,着重讲解如何编写智能合约及有关智能合约的用法。
第8章详细介绍CouchDB的使用,并推荐使用CouchDB。
第9章讲解在Fabric发布1.0版之后的对外客户端调用方式、客户端对SDK的使用和相关源码。
第10章以一个简单的案例做演练,在数据链上用到了智能合约,对数据提取则提供了另一种思路。
书中配套源码地址:HyperLedger Fabric 开发实战源码