Hyperledger Fabric 使用什么样的共识?

NUR*_*FAN 4 consensus hyperledger hyperledger-fabric

我不知道这个问题是否有意义,我知道Raft是共识算法并使用etcd来分发数据,并且我知道Raft订购服务中的etcd与Kafka订购服务中的zookeeper有类似的工作,但我不知道了解的是,Kafka排序服务使用什么样的共识?

目前排序服务可以使用 Raft 或 Kafka(已弃用),但 Raft 是共识算法,而 Kafka 不是。或者实际上两者都只是共识排序阶段的一部分?那么这是否意味着现在 Fabric 使用共识算法作为共识的一部分???那么Fabric中使用了什么样的共识呢?我在某处读到 Fabric 还不是 PBFT。

小智 6

让我们把它当作排序和共识来讨论,并引入 Kafka 和 Raft。

在分布式系统中,消息发送到多个节点,这些节点需要一种方法来知道哪条消息首先到达,哪条消息第二次到达,等等。将其视为您银行帐户上的交易。如果你的账户里有 20 美元,有人付给你 30 美元,那么你的账户就变成了 50 美元,你付给我 50 美元,你的账户就变成了 0 美元,这是一个有效的序列。但如果你的银行搞乱了订单,你从 20 美元开始,然后以 50 美元转账给我,那么这张支票就会被退回。

因此,顺序(也称为顺序)很重要,在 Fabric 中,这是由顺序节点完成的。

为了冗余、为了减少恶意意图、为了去中心化和其他原因,您可能不希望只有一个节点提供订单。但是,如果您有 n 个排序节点,您如何确保它们得出一种消息顺序,而不是该顺序的 n 个变体?您可以在这些节点之间就这些消息的顺序达成共识。正如一位回复者所发布的——您可以使用 RAFT 或 Kafka 达成共识。两者都是崩溃容错 (CFT) 共识算法,这意味着理论上只要大多数排序节点都良好(3 中 2 或 5 中 3 等),您就处于良好状态。

你是对的,RAFT 确实使用了 etcd,但我认为这是一个实现细节,与概念上的共识无关。Etcd 是一个开源键值存储,用于保存和管理分布式系统保持运行所需的信息。它被 Fabric 中的 RAFT 使用,但它也被其他项目使用,比如我认为 kubernetes 使用它来管理所有配置和元数据等

我还不知道 Hyperledger Fabric 可以使用拜占庭容错库(我认为其中 2/3 或更少的排序节点可能会出现故障,系统仍然可以正常工作),尽管已经并将继续对其进行讨论,并且Fabric 文档指出,RAFT CFT 是未来 Fabric 通向 BFT 共识库的垫脚石。

我还要重申查看另一张海报发布的订购服务文档的链接,作为查看更多信息的好材料。

我也非常喜欢这个关于 RAFT 的视频介绍,它与 Fabric 无关,但是如果您感兴趣的话,它很好地解释了 RAFT 的总体情况。