Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 设计模式

  • Java

  • Spring

  • SpringCloud

  • MySQL

  • Redis

  • 分布式

    • 理论等

    • 分布式算法

      • 什么是拜占庭将军问题
      • 一共有哪些分布式算法
      • 主流分布式系统的核心分布式算法
      • Java后端开发中常见的分布式组件及其核心分布式算法
      • 实际搭建节点数
      • 节点和集群的关系
      • 非拜占庭容错算法和拜占庭容错算法各有哪些
      • 分布式事务

      • 分布式锁

      • SpringCloud

    • Zookeeper

    • Dubbo

    • Kafka

    • 数据结构

    • 算法

    • OJ

    • 从道家哲学看计算机?
    • 后端
    • 分布式
    • 分布式算法
    plantre
    2025-06-19
    目录

    非拜占庭容错算法和拜占庭容错算法各有哪些

    根据分布式系统对节点错误类型的容忍能力,共识算法可分为非拜占庭容错(CFT)和拜占庭容错(BFT)两大类。以下是两类算法的核心代表及其特性对比:


    # ⚙️ 一、非拜占庭容错算法(CFT)

    适用于节点可能故障(如宕机、网络中断),但无恶意行为的场景。特点是性能高、实现简单,容错上限为节点总数的 1/2。

    算法 核心机制 应用场景 特点
    Paxos 两阶段提交(Prepare + Accept) Google Spanner、ZooKeeper 理论严谨但难实现;依赖多数派投票;需全局唯一提案编号
    Raft 领导者选举 + 日志复制 etcd、Consul 易理解实现;强一致性;Leader故障后选举新Leader(心跳超时触发)
    ZAB 类Paxos优化(恢复模式 + 广播模式) ZooKeeper 为ZooKeeper定制;优先保证顺序一致性;快速故障恢复

    适用场景:企业内部集群、可信网络环境(如数据库主从同步、配置中心)。


    # ⛓️ 二、拜占庭容错算法(BFT)

    容忍节点恶意行为(如伪造数据、拒绝响应),容错上限为节点总数的 1/3,性能较低但安全性更高。

    算法 核心机制 应用场景 特点
    PBFT 三阶段广播(Pre-Prepare→Prepare→Commit) Hyperledger Fabric、Ripple 需已知节点身份;通信复杂度O(n²);容忍≤1/3恶意节点
    PoW 计算哈希难题竞争记账权 Bitcoin 高能耗低吞吐;完全去中心化;概率性最终一致(6区块确认)
    PoS 按持币量/时长选举验证者 Ethereum 2.0、Cardano 节能;但可能富者愈富;需结合惩罚机制防恶意
    FBA 分联邦小组投票(信任圈) Stellar 动态节点准入;去中心化程度高;适合公有链
    dBFT 委托记账人投票(权益加权) Neo 快速确认(无分叉);需代币质押;代表节点轮流提案

    适用场景:公有链、金融系统、跨组织联盟链(需抗恶意攻击)。


    # 📊 两类算法核心差异对比

    特性 CFT算法 BFT算法
    容错类型 节点故障(无恶意) 节点故障 + 恶意行为
    最大容错节点 ≤ 50%(如3节点容1故障) ≤ 33.3%(如4节点容1恶意)
    性能 高吞吐(万级TPS) 较低(PBFT千级TPS,PoW更低)
    网络要求 低延迟可信网络 抗网络攻击,允许异步通信
    典型应用 ZooKeeper、etcd 比特币、联盟链、跨链协议

    # 💎 选型建议

    • 非拜占庭场景(CFT):
      • 企业内网数据库同步 → Raft(易维护)
      • 高吞吐服务发现 → ZAB(快速恢复)
    • 拜占庭场景(BFT):
      • 公有链抗攻击 → PoW/PoS(完全去中心)
      • 联盟链高效共识 → PBFT/dBFT(快速确认)
      • 低信任跨组织协作 → FBA(动态信任圈)

    未来趋势:混合算法(如HoneyBadgerBFT异步容错)及AI动态调整参数,以平衡安全性与效率。

    编辑 (opens new window)
    上次更新: 2025/06/24, 00:41:57
    节点和集群的关系
    Seata支持几种分布式事务

    ← 节点和集群的关系 Seata支持几种分布式事务→

    最近更新
    01
    集成loki
    07-04
    02
    TCP的ESTABLISHED是什么意思
    06-24
    03
    安装1panel
    06-24
    更多文章>
    Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式