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
    目录

    什么是拜占庭将军问题

    拜占庭将军问题(Byzantine Generals Problem)是分布式系统领域的核心理论问题,由计算机科学家莱斯利·兰伯特(Leslie Lamport)等人于1982年提出。它描述了在存在节点故障或恶意行为(如发送虚假信息)的分布式环境中,如何确保所有诚实节点达成一致决策的挑战。以下是其核心要点:


    # ⚔️ 一、问题起源与核心比喻

    • 背景设定:
      拜占庭帝国的多个将军(类比分布式系统中的节点)各自率军包围一座城市,需通过信使(类比通信网络)传递消息,共同决定“进攻”或“撤退”。
    • 核心挑战:
      将军中可能存在叛徒(恶意节点),他们可能发送矛盾信息(如对部分将军说“进攻”,对另一部分说“撤退”),意图破坏共识。
    • 目标:
      所有忠诚将军(诚实节点)必须达成完全一致的行动决策,否则行动失败(如部分进攻、部分撤退导致全军覆没)。

    # ⚠️ 二、核心难题与数学约束

    1. 拜占庭故障(Byzantine Fault):
      与普通节点故障(如宕机)不同,拜占庭故障节点会主动伪造、篡改或选择性发送消息,模拟恶意行为。
    2. 可解性条件:
      Lamport证明:仅当系统总节点数 n ≥ 3f + 1(其中 f 为拜占庭节点数)时,问题才可能有解。
      • 例如:
        • 1个叛徒(f=1)时,至少需4个将军(n=4);
        • 2个叛徒(f=2)时,至少需7个将军(n=7)。
      • 原因:诚实节点需通过多轮消息交换(如投票、递归验证)稀释叛徒影响,确保多数意见一致。

    # 🛡️ 三、经典解决方案

    1. 口信消息协议(Oral Message):

      • 假设:消息可丢失但不可篡改,接收者知悉发送者身份。
      • 方法:进行 m+1 轮消息交换(m 为叛徒数),每个节点广播消息并递归验证来源,最终以多数意见决策。
      • 缺点:通信开销大,易网络拥堵。
    2. 签名消息协议(Signed Message):

      • 增强条件:消息需数字签名(不可伪造、篡改可检测)。
      • 优势:叛徒无法伪造他人签名,诚实节点可识别矛盾消息来源,简化共识流程。
      • 局限:依赖密码学基础设施,未解决通信延迟问题。

    # ⛓️ 四、区块链的创新解法

    比特币等区块链技术通过工作量证明(PoW) 和加密经济机制提供了新思路:

    1. 降低信息速率:矿工需完成哈希计算(工作量证明)才能广播消息,避免网络拥塞。
    2. 随机选举广播者:PoW确保一段时间内只有一个节点(首个找到有效哈希者)可广播信息。
    3. 不可伪造身份:公钥加密为交易签名(类比“印章”),确保消息来源可信。
    4. 全局一致性:所有节点验证并同步有效区块,形成不可篡改的总账(共识账本)。

    # 🌐 五、现实意义与应用

    • 分布式系统:指导设计容错算法(如PBFT共识),确保数据库、云计算网络的可靠性。
    • 区块链与加密货币:解决去中心化网络中的信任问题,支撑比特币、以太坊等系统运行。
    • 其他领域:
      适用于任何需分布式协作的场景,如物联网设备协同、军事指挥系统、跨机构投票机制等。

    # 💎 总结

    拜占庭将军问题揭示了分布式共识的核心矛盾:在缺乏中心信任和可靠通信时,如何抵御恶意节点干扰。其数学约束(n≥3f+1)和解决方案(如签名协议、区块链)为构建高容错系统提供了理论基础,成为分布式计算与密码学演进的关键推动力。

    编辑 (opens new window)
    上次更新: 2025/06/24, 00:41:57
    单体改微服务,除了分布式锁,除了分布式事务,还要注意哪些问题
    一共有哪些分布式算法

    ← 单体改微服务,除了分布式锁,除了分布式事务,还要注意哪些问题 一共有哪些分布式算法→

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