博客
关于我
常见的分布式协议与算法
阅读量:445 次
发布时间:2019-03-06

本文共 994 字,大约阅读时间需要 3 分钟。

一致性哈希、Gossip协议、一致性共识算法及其他分布式系统关键技术解析

一致性哈希

一致性哈希是一种用于分布式系统中数据存储和路由的高效算法,通过减少数据迁移量解决节点增减带来的高负载问题。

不带虚拟节点的一致性哈希

传统哈希算法采用模运算进行路由寻址,但其迁移成本较高。一致性哈希通过将节点映射到哈希环(Hash Ring)上,实现低迁移成本。

  • 工作原理:将节点映射到哈希环上,读取目标键值时沿环定位目标节点。
  • 优势:仅需迁移部分数据,提升容灾能力和故障恢复效率。

带虚拟节点的一致性哈希

虚拟节点技术解决数据分布不均问题,通过为每个节点生成多个虚拟节点,均衡数据访问压力。

  • 实现方式:为每个节点生成若干虚拟节点,映射到实际节点上,提升数据分布均匀性。
  • 优势:减少热点节点压力,提升系统吞吐量。

Gossip协议

Gossip协议通过随机传播机制,确保系统在极端情况下的数据一致性。

数据传播方式

  • 直接邮寄:直接发送更新数据,可能导致数据丢失。
  • 反熵:定期交换数据,消除差异。
  • 谣言传播:周期性发送新数据,确保数据传播。

优势

  • 容灾性:适用于单节点运行。
  • 高效性:减少数据复制量。

Quorum NWR算法

Quorum NWR通过副本数、写一致性级别和读一致性级别实现一致性。

核心要素

  • N:副本数。

  • W:写一致性级别。

  • R:读一致性级别。

  • 一致性效果

    • 强一致性:W + R > N。
    • 最终一致性:W + R < N。

PBFT算法

PBFT通过三阶段协议实现拜占庭容错共识。

三阶段协议

  • 预准备阶段:构造预准备消息广播。
  • 准备阶段:广播准备消息,验证接收情况。
  • 提交阶段:广播提交消息,验证版本。
  • 优势

    • 容错能力:容忍至多 1/3 的恶意节点。
    • 效率:消息复杂度 O(n²),适合中小型系统。

    PoW算法

    PoW通过哈希函数证明工作量,应用于区块链。

    工作原理

    • 哈希函数:计算字符串哈希值。
    • 验证:哈希值需满足特定条件。

    区块链应用

    • 区块头:包含随机数(nonce),双重哈希验证。
    • 矿工激励:通过找矿获得奖励。

    ZAB协议

    ZAB协议通过原子广播实现分布式事务顺序性。

    核心机制

    • 主备模式:所有节点以主节点为准。
    • FIFO队列:保证消息处理顺序。
    • 日志最完备节点:选定日志最完备节点为新主节点。

    优势

    • 顺序性:保证事务原子性和顺序性。
    • 容错性:处理主节点故障,确保数据一致性。

    转载地址:http://swlyz.baihongyu.com/

    你可能感兴趣的文章
    POJ 2431 Expedition 优先队列
    查看>>
    Qt笔记——获取位置信息的相关函数
    查看>>
    POJ 2484 A Funny Game(神题!)
    查看>>
    POJ 2486 树形dp
    查看>>
    POJ 2488:A Knight&#39;s Journey
    查看>>
    SpringBoot为什么易学难精?
    查看>>
    poj 2545 Hamming Problem
    查看>>
    poj 2723
    查看>>
    poj 2763 Housewife Wind
    查看>>
    Qt笔记——模型/视图MVD 文件目录浏览器软件
    查看>>
    POJ 2892 Tunnel Warfare(树状数组+二分)
    查看>>
    poj 2965 The Pilots Brothers' refrigerator-1
    查看>>
    poj 3026( Borg Maze BFS + Prim)
    查看>>
    POJ 3041 - 最大二分匹配
    查看>>
    POJ 3041 Asteroids(二分匹配模板题)
    查看>>
    Qt笔记——标准文件对话框QFileDialog
    查看>>
    poj 3083 Children of the Candy Corn
    查看>>
    POJ 3083 Children of the Candy Corn 解题报告
    查看>>
    POJ 3253 Fence Repair C++ STL multiset 可解 (同51nod 1117 聪明的木匠)
    查看>>
    Qt笔记——控件总结
    查看>>