博客
关于我
常见的分布式协议与算法
阅读量: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/

    你可能感兴趣的文章
    Node入门之创建第一个HelloNode
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>
    npm和yarn的使用对比
    查看>>
    npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
    查看>>
    npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
    查看>>
    NR,NF,FNR
    查看>>
    nrf开发笔记一开发软件
    查看>>
    NSDateFormatter的替代方法
    查看>>
    NSOperation基本操作
    查看>>
    NSSet集合 无序的 不能重复的
    查看>>
    NT AUTHORITY\NETWORK SERVICE 权限问题
    查看>>
    ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
    查看>>
    nullnullHuge Pages
    查看>>
    numpy 用法
    查看>>
    Numpy如何使用np.umprod重写range函数中i的python
    查看>>
    oauth2-shiro 添加 redis 实现版本
    查看>>
    OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
    查看>>
    OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
    查看>>