远方的灯塔 - 专注于服务端技术分享 远方的灯塔 - 专注于服务端技术分享
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)

Terwer Green

一个后端老菜鸟
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)
  • JavaSE

  • 开源框架

  • Linux

  • Struts2

  • Hibernate

  • Webservice

  • 分布式

    • RPC架构设计及IO模型
    • NIO编程及其三大核心原理
    • NIO三大核心之缓冲区(Buffer)
    • NIO三大核心之通道(Channel)
    • NIO三大核心之选择器(Selector)
    • Netty核心原理
    • 线程模型以及传统IO阻塞模型
    • Reactor模型
    • Netty线程模型
    • Netty核心API介绍
    • Netty入门与异步模型
    • Netty高级进阶之Netty编解码器
    • Netty高级进阶之基于Netty的群聊天室案例
    • Netty高级进阶之基于Netty的HTTP服务器开发
    • Netty高级进阶之基于Netty的Websocket开发网页聊天室
    • Netty高级进阶之Netty中的粘包和拆包的解决方案
    • Nety源码剖析
    • 自定义RPC框架之分布式架构网络通信理论
    • 自定义RPC框架之基于Netty实现RPC框架
    • 分布式架构理论
    • 分布式理论之数据一致性
    • 分布式理论之CAP定理
    • 分布式理论之BASE定理
    • 分布式一致性协议之两阶段提交协议(2PC)
    • 分布式一致性协议之三阶段提交协议(3PC)
    • 分布式一致性协议之NWR协议
    • 分布式一致性协议之Gossip协议
      • 分布式一致性协议之Paxos协议
      • 分布式一致性协议之Raft协议
      • 分布式一致性协议之Lease机制
      • 分布式系统设计策略之心跳检测
      • 分布式系统设计策略之高可用
      • 分布式系统设计策略之容错性
      • 分布式系统设计策略之负载均衡
      • 分布式架构服务调用
      • 分布式服务治理之服务协调
      • 分布式服务治理之服务削峰
      • 分布式服务治理之服务降级
      • 分布式服务治理之服务限流
      • 分布式服务治理之服务熔断
      • 分布式服务治理之服务链路追踪
      • 架构设计基本原则之开闭原则(OCP)
      • 架构设计基本原则之单一职责原则(SRP)
      • 架构设计基本原则之接口隔离原则(ISP)
      • 架构设计基本原则之里式替换原则(LSP)
      • 架构设计基本原则之依赖倒置原则(DIP)
      • 架构设计基本原则知识扩展
      • 分布式架构知识拓展与总结
    • 分布式框架

    • 后端开发
    • 分布式
    terwer
    2022-05-04
    目录

    分布式一致性协议之Gossip协议

    # Gossip协议

    # 什么是Gossip协议

    Gossip协议,也叫 Epidemic协议(流行病协议)。原本用于分布式数据库中节点同步数据使用,后来被广泛应用于数据库复制、信息扩散、集群成员身份确认、故障探测等。

    Gossip协议利用随机方式将信息传播到整个网络,并在一定时间内,使系统内所有节点的数据一致。

    Gossip协议是一种去中心化的分布式协议,解决状态在集群中的传播和状态一致性保证两个问题。

    image-20220329233850817

    Gossip协议的传播方式有两种:反熵传播和谣言传播

    1、反熵传播

    以固定概率传播随机数据。

    所有参与节点只有两种状态:Suspective(病原)和Infective(感染)。过程是种子节点会把所有数据,都跟其他节点共享,以便消除节点之间的数据不一致,他可以保证节点的最终、完全一致性。

    缺点是消息数量非常庞大,且无限制,通常用于新加入节点的数据初始化。

    2、谣言传播

    以固定概率只传播新到达的数据。所有参与节点有三种状态:Suspective(病原)、Infective(感染)、Removed(愈除)。

    消息只包含最新update,谣言节点在某个消息之后被标记为removed,并且不再被传播。

    缺点是系统有一定的概率会不一致,通常用于节点之间的增量同步。

    # 通信方式

    1. push

      节点A将数据以及对应的版本(key,value,version)推送到B节点,B节点更新A节点中比自己新的数据。

      image-20220401214621955

    2. pull

      A仅将key,version推送给B,B将本地比A新的数据(key,value,version)推送给A,A更新本地数据。

      image-20220401215002274

    3. push/pull

      与pull类似,多了一步,A再将本地比B新的数据推送给B,B更新本地数据

    # 优缺点

    1. 优点

      • 扩展性:允许节点的任意增加或者减少,新增节点的状态最终会与其他节点一致
      • 容错:任意节点的宕机和重启都不会影响Gossip消息的传播,具有天然的分布式系统容错性
      • 去中心化:无需中心节点,所有节点都是对等的,任意节点无需知道整个网络状况,只要网络联通,任意节点可把消息散播到全网
      • 最终一致性:Gossip协议实现消息的指数级传播,因此,在有新消息传播时,消息可以快速发送到全局节点,在有限时间内能够做到所有节点拥有最新数据
    2. 缺点

      • 消息延迟:节点随机向少数几个节点发送消息,消息最终通过多个轮次的散播而到达全网,不可避免造成消息延迟

      • 消息冗余:节点定期随机选择周围节点发送消息,而收到消息的节点也会重复该步骤,不可避免引起同一节点消息被多次接收,增加消息处理压力

    Gossip是一种去中心化的分布式协议,数据通过节点像病毒一样传播。

    因为是指数级传播,所以传播速度非常快。

    Gossip协议适用于 AP 场景的数据一致性处理,常见的应用有:P2P网络通信、Redis Cluster、Consul

    编辑 (opens new window)
    #rpc#gossip
    上次更新: 2023/02/22, 13:47:25
    分布式一致性协议之NWR协议
    分布式一致性协议之Paxos协议

    ← 分布式一致性协议之NWR协议 分布式一致性协议之Paxos协议→

    最近更新
    01
    解决css部分border被圆角切掉之后圆角的边框消失问题
    03-18
    02
    使用TypeScript开发一个自定义的Node-js前端开发脚手架
    03-08
    03
    Github-Actions使用release-please实现自动发版
    03-06
    更多文章>
    Theme by Vdoing | Copyright © 2011-2023 Terwer Green | MIT License | 粤ICP备2022020721号-1 | 百度统计
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式