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

    一共有哪些分布式算法

    分布式算法是分布式系统实现协调、容错、数据一致性的核心技术,根据其功能和应用场景,可分为以下几类:


    # ⚙️ 一、共识算法(Consensus Algorithms)

    用于在分布式节点间达成一致决策,是分布式系统的核心基础。

    • Paxos:首个理论化共识算法,通过提案(Propose)、承诺(Promise)、接受(Accept)多阶段达成一致,容错性强但实现复杂。
    • Raft:Paxos的工程简化版,通过领导者选举(Leader Election) 和日志复制(Log Replication) 实现共识,易于理解(如Etcd、TiDB)。
    • ZAB(ZooKeeper Atomic Broadcast):专为ZooKeeper设计,结合崩溃恢复与消息广播,保证事务顺序一致性。
    • PBFT(拜占庭容错算法):容忍恶意节点(拜占庭故障),适用于区块链(如Hyperledger Fabric)。
    • PoW/PoS:区块链特有共识,PoW依赖算力竞争(比特币),PoS依赖代币质押(以太坊2.0)。

    # 🔒 二、分布式一致性算法(Consistency Algorithms)

    确保数据在多个副本间的状态同步,分强一致性与最终一致性。

    • 强一致性协议:
      • 2PC(两阶段提交):通过“准备-提交”保证事务原子性,但存在单点阻塞风险。
      • 3PC(三阶段提交):增加预提交阶段减少阻塞,仍可能因网络分区导致数据不一致。
    • 最终一致性协议:
      • Gossip协议:节点随机交换信息(如疫情传播),实现最终一致(Cassandra、Consul)。
      • CRDTs(无冲突复制数据类型):数据结构级冲突解决,适用于协同编辑、分布式缓存。

    # 📦 三、分布式存储算法(Storage Algorithms)

    解决数据分片、冗余与恢复问题。

    • 一致性哈希(Consistent Hashing):动态扩缩容时最小化数据迁移,用于Redis Cluster、DynamoDB。
    • Quorum NWR模型:读写需多数节点成功(如NWR配置:N副本数,W写成功数,R读成功数)。
    • 纠删码(Erasure Coding):分片存储+冗余校验,降低存储成本(Ceph、HDFS)。
    • 分布式哈希表(DHT):如Chord算法,环形拓扑定位数据节点(IPFS)。

    # ⏱️ 四、分布式事务算法(Transaction Algorithms)

    保障跨节点事务的原子性。

    • TCC(Try-Confirm-Cancel):业务补偿型,分尝试、确认、取消三阶段(电商订单)。
    • Saga:长事务拆分为子事务,失败时触发补偿操作(微服务架构)。
    • Seata:开源框架,支持AT(自动补偿)、TCC等模式。

    # 🎯 五、分布式选举算法(Leader Election)

    动态选举主节点,确保系统高可用。

    • Bully算法:高ID节点竞争胜出(Elasticsearch旧版)。
    • Raft Leader Election:基于随机超时和投票机制(Kubernetes Etcd)。

    # 🆔 六、分布式ID生成算法(ID Generation)

    生成全局唯一、有序ID。

    • 雪花算法(Snowflake):时间戳+机器ID+序列号(时钟回拨是核心挑战)。
    • Leaf-Segment:数据库号段预分配(美团)。
    • MongoDB ObjectId:时间戳+随机值+递增计数器。

    # ⏰ 七、时钟同步算法(Clock Synchronization)

    解决节点间时间偏差问题。

    • NTP(Network Time Protocol):分层时间服务器同步。
    • TrueTime API(Google Spanner):原子钟+GPS实现纳秒级精度。

    # 🔑 八、分布式锁算法(Distributed Lock)

    实现共享资源互斥访问。

    • Redis RedLock:多实例加锁防单点故障。
    • ZooKeeper临时有序节点:通过节点顺序和监听机制实现锁。

    # 📊 九、任务调度与分片算法(Task Scheduling)

    优化任务分配与执行效率。

    • MapReduce:分片处理(Map)、数据分发(Shuffle)、聚合(Reduce)(Hadoop)。
    • 流处理算法:如Kafka的ISR(In-Sync Replicas),副本同步保消息不丢。

    # 💎 总结

    分布式算法体系庞大,实际应用中需根据业务需求(强一致/最终一致)、故障类型(宕机/恶意节点)、规模(节点数量)综合选择。例如:

    • 金融系统需强一致:选Raft/PBFT;
    • 物联网设备协同:Gossip协议更轻量;
    • 区块链防篡改:PoW/PoS/PBFT。

    注:以上分类基于功能场景,部分算法可能跨类别(如Raft同时涵盖共识与选举)。

    编辑 (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
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式