概述

Gossip 协议可以翻译为流言协议。它是在 1987 年发表在 ACM 上的论文 《Epidemic Algorithms for Replicated Database Maintenance》中被提出的。论文中给 Gossip 协议的定义是一个以流行病传播的方式为基础的计算机点对点通信程序或过程(a procedure or process of computer peer-to-peer communication that is based on the way epidemics spread)。主要是一些分布式系统用来确保对等节点之间的数据同步。基于 Gossip 协议去传递公共数据的方法就是依靠每个节点来将数据传递给其“邻居”,类似于生物中病毒的传播形式,所以 Gossip 协议有的时候也会被称为流行病协议(epidemic protocol)。

传播演示

我们去理解 Gossip 协议的传播时可以直观地理解为谣言的传播,一个谣言由某一个人发起后,谣言会不停地散步到每一个人的身边人,这个过程是一个异步的过程,可以用一个图来感受一下。

假设谣言由一个人发起,之后每一个人最多传播两个人,可以看到 16 个人最终在五个阶段内谣言传播完成。从图中可以看出 Gossip 协议的传播是有着异步的优点,而且最终所有节点都会接收到信息。不过也可以看出比较明显的缺点,一是没有办法确定一个准确的时间来保证所有节点都接收到了消息,二是从第四阶段、第五阶段可以看出消息传播过程中出现了消息冗余的情况,第五阶段尤为明显。

类型

•传播协议(Dissemination Protocols)或者又称为谣言散播协议(Rumor-mongering Protocols)。此类协议通常是利用 gossip 来传播信息,但在一个事务从发生到提交的过程中存在潜在的高延迟,但该缺点在对操作一些比较陈旧的数据时不会有太严重的损失。
计算聚合协议(Protocols that compute aggregates)。此类协议通过在网络中的节点处采样信息,并将这些值组合以得到一个系统范围的值(某些测量节点的最大值,最小值等等)来计算整个网络范围的集合。关键的要求是集合必须可以通过固定大小的成对信息交换来计算;这些通常在系统大小对数的若干轮信息交换之后终止,到那时,一个全对全的信息流模式将已经建立。

优势

有极强的扩展性。可以允许任意节点的添加或删除,并且新添加的节点状态可以和其他节点保持一致。
有比较好的容错。任何一个节点的宕机或重启都不会影响到 Gossip 消息的传播。
一致性收敛。Gossip 协议的消息是以指数级的速度进行传播的,系统的不一致性会在短时间内收敛一致。
去中心化。所有节点都是对等的,每个节点都不需要知道现在整个集群的状态,只要网络联通就能通过 gossip 把消息传播出去。

以上为基于Gossip协议的去中心服务,「分布式技术专题」是国产数据库hubble团队精心整编,专题会持续更新,欢迎大家保持关注。

「分布式技术专题」基于Gossip协议的去中心服务相关推荐

  1. 星际迷航(FILE)基于 IPFS 协议的去中心化游戏生态

    随着 5G 通信技术的快速发展及终端电子设备的更新迭代,网络游戏载体.类型不断丰富, 电子竞技行业的资本涌入和人才发展,游戏这项"第九艺术"的受众群体在以指数级增长的方式不断扩大, ...

  2. 【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(上篇)

    背景介绍 最近大家都相比遇到了就业瓶颈了,很多公司要不就是不招人了,要不就是把门槛抬的很高,所以针对于一些分布式角度而言的技术知识点,更是必备条件以及重中之重了.那么今天笔者就针对于分布式协议以及一些 ...

  3. 【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(Paxos篇)

    概念简介 Paxos是一种基于消息传递具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一. 发展历史 Paxos算法的发展历史追溯到古希腊,当时有一个名为"Pax ...

  4. 「RocketMQ技术专题」帮你梳理RocketMQ/Kafka的选择理由及二者PK

    前提背景 大家都知道,市面上有许多开源的MQ,例如,RocketMQ.Kafka.RabbitMQ等等,现在Pulsar也开始发光,今天我们谈谈笔者最常用的RocketMQ和Kafka,想必大家早就知 ...

  5. 「架构技术专题」如何构建网站高可用架构(详细分析篇)?(6)

    网站的可用性(Avaliability)描述网站可有效访问的特性. 1.网站可用性的度量与考核 网站不可用时间(故障时间)=故障修复时间点-故障发现(报告)时间点 网站年度不可用时间=(1-网站不可用 ...

  6. 一致 先验分布 后验分布_「分布式技术」分布式事务最终一致性解决方案,下篇...

    各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题 上 ...

  7. 「分布式技术」分布式锁的最佳实践

    「分布式技术」分布式锁的最佳实践 参考&鸣谢 分布式最佳实践:分布式锁 几种分布式锁的实现方式 分布式锁的几种实现方式~ 文章目录 「分布式技术」分布式锁的最佳实践 一.为什么需要分布式锁 二 ...

  8. [转] 年终回顾,为你汇总一份「前端技术清单」

    记得年初的时候我给自己制定了一个学习计划,现在回顾来看完成度还不错.但仍有些遗憾,一些技术点没有时间去好好学习. 在学习中我发现,像文章这样的知识往往是碎片化的,而前端涉及到的面很多,如果不将这些知识 ...

  9. dw上按钮事件 pb_「React TS3 专题」使用 TS 的方式在类组件里定义事件

    在「React TS3 专题」亲自动手创建一个类组件,我们一起学习了如何用 TS 的方式在React 里定义类组件(class component)以及了解了什么是 JSX.本篇文章,笔者将带着大家一 ...

最新文章

  1. Vmware下Centos7安装预览
  2. centos7中输入ifconfig出现ens33,没有eth0
  3. Servlet--06--解决乱码问题; 请求转发; 重定向;
  4. 网络工程师面试:简要回答一下故障排除的过程?
  5. [转]浅谈浏览器插件检测 和自定义协议的支持
  6. Spark 个人实战系列(1)--Spark 集群安装
  7. c调用python第三方库_用 Python ctypes 来调用 C/C++ 编写的第三方库
  8. ImmuniWeb 推出暗网数据泄露免费查询工具,使用超简单
  9. 阿里云CentOS 7中zabbix4.2配置shell脚本邮件报警
  10. 42.翻转单词顺序 VS 左旋转字符串(C++版本)
  11. OpenGL ES 送显 YUV NV12
  12. zbbz加载成功用不了_cad加载应用程序不能加载
  13. webssh docker 镜像制作及其应用
  14. 解决python osdir() 函数 文件夹排序问题
  15. 肇庆学院计算机选修旷课,化学化工学院考查课管理办法(试行)
  16. 一元三次方程求根公式详细逐步推导
  17. 阿里云RDS数据库外网连接和内网连接有什么不同?
  18. C#基础编程——简介及基础语法
  19. Cordova app 检查更新 ----JS进行调用(二)
  20. 斩获数亿元B轮融资,这家Tier 1抢跑「L2/L2+」主战场

热门文章

  1. 【Uniapp框架】快速开发自己一款APP应用,如何将Uniapp项目快速打包成APP应用
  2. windows用虚拟机vmWare安装黑苹果及注意事项
  3. 收藏随身查,光纤光缆60条必备知识!
  4. 4th 【最小生成树并查集】征兵
  5. MapReduce处理两个文件内不同行信息
  6. 在内核中之获取HKEY_CURRENT_USER对应路径
  7. 很「佛系」的商用本 — ThinkPad S2 2020 长测
  8. Microsoft Orleans 之 入门指南
  9. 华为云PB级数据库GaussDB(for Redis)揭秘第八期:用高斯 Redis 进行计数
  10. Tesseract怎么识别中文