Hyperlydger Fabric共识算法:Solo和Kafka

  Hyperledger Fabric目前支持三种共识算法,分别是Solo,Kafka还有SBFT,SBFT还在还只存在于计划当中,下面以Solo和Kafka进行简单介绍。

  Solo是一种单中心化的共识机制,只用于Fabric开始使用时作测试用。只有一个ordering 节点向所有的客户端提供排序服务,可以说Solo称不上是“共识”,仅仅作为fabric的一种辅助支撑存在。一个典型的Solo排序服务如下:客户端通过gRPC与orderer节点建立连接,连接建立orderer收到信息后存入账簿ledger,客户端通过deliver接口获取账簿信息。

  Kafka是一种集群时序服务,支持分布式系统中存在部分失效节点,但不能容忍系统中存在恶意节点。

  Fabric 1.0的Kafka排序服务的基本工作原理是这样的:

    Client向排序服务节点OSN发送交易;

    OSN节点对交易进行相关检查,符合条件之后会将交易发送给Kafka集群;

    OSN节点从Kafka集群拉取交易消息并对交易消息进行打包将打包之后的交易batch写入本地数据库;

    OSN节点按客户端Deliver请求从本地数据库读取区块返回;

  分区,有序,容错是kafka的三个特性。这里的有序是说在一个分区中的消息被某一个消费者消费时,消息是有序的。换句话说,也就是说对于一个消费者来说,在一个分区内的所有消息是有序的。但是不保证不同分区的数据是有序的。

  也正由于这三个特性,可以使用kafka来作为一种“简单粗暴”的共识算法。这里再次强调下共识的定义,所谓的共识是指:在一个时间段内对事物的前后顺序达成共识的一种算法。

  kafka的分区有序就保证了kafka可以作为一种共识算法。从工程角度,这种共识算法的安全性较低。但是由于Fabric引入了比较强的身份管理机制,在一定程度上加强了整个系统的安全等级。

您的支持将是我最大的动力!