You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Hyperledger Fabric中客户端交易提交:发送至全部还是部分Orderer节点?

Hyperledger Fabric 客户端交易提交的Orderer节点选择

这个问题问得很到位!刚好可以对比下Fabric和PBFT的差异,给你理清楚:

首先明确:默认情况下,客户端只会把交易发送给单个Orderer节点,而非全部节点。背后的原因和Fabric采用的共识机制直接相关:

  • 现在Fabric主流用的是Raft共识(基于Kafka的排序已经被弃用了),Raft是典型的主从架构——集群里会选举出一个Leader节点,所有的写操作(比如交易排序)都由Leader处理。Leader会自动把交易日志同步给集群里的其他Follower节点,客户端完全不用操心给所有节点发交易的事。
  • 就算客户端不小心连到了Follower节点也没关系,Follower会自动把请求转发给当前的Leader,最终还是能正常完成交易提交,只是多了一步转发而已。

当然,你也可以根据需求配置客户端,让它把交易发送给多个Orderer节点(比如做负载均衡,或者在Leader故障时提升可用性),但这属于可选的自定义配置,不是默认行为。

对比你提到的PBFT:PBFT要求客户端给所有节点发请求,因为协议本身依赖全节点的点对点验证;而Fabric的Raft模型通过Leader统一处理写操作,把集群内部的同步工作交给Orderer自己完成,自然不需要像PBFT那样全节点发送。

内容的提问来源于stack exchange,提问作者Deepak Yadav

火山引擎 最新活动