常见集群算法解析
创始人
2024-02-11 16:53:35

Gossip协议

Gossip协议简介

在这里插入图片描述

定义

Gossip protocol,又叫 Epidemic Protocol (流行病协议),也叫“流言算法” 、 “疫情传播算法”等。其名称已经形象的说明了算法的原理和工作方式

应用场景

  1. 分布式网络,无集中管理节点
  2. 节点间点对点传播信息

典型应用

  1. P2P
  2. Bitcoin
  3. Apache Cassandra、Redis cluster

Gossip协议优缺点

优点

简单

  1. 扩展性:网络节点可随意增加和修改
  2. 容错性:无中心节点,任意节点宕机不影响协议运行
  3. 去中心化:任意节点都可以发送消息

缺点

最终一致性

  1. 需要花费一定时间达到最终一致性
  2. 消息冗余
  3. 不适合超大规模集群(超过1000)
  4. 恶意节点传播垃圾信息

Gossip模式

模式1-Direct Mail

直邮模式:通知所有邻居更新信息,邻居节点收到消息后不会转发

在这里插入图片描述

优点

简单

缺点

  1. 难以达到最终一致性
  2. 节点消息可能丢失(图中黄色节点)
  3. 节点可能并没有连接(图中深红色节点)
  4. 容错性低
  5. 需要缓存发送失败的消息
  6. 种子节点压力大

应用场景

社交网络(朋友的朋友并不一定是你的朋友)

模式2-Anti-Entropy

反馈模式:集群中的节点,每隔一段时间随机选择1个节点,互相交换所有数据,然后进行同步,消除数据不一致

在这里插入图片描述

优点

最终一致性

缺点

  1. 信息同步的成本高
  2. checksum
  3. updated list
  4. 达到最终一致性的耗时较长

应用场景

节点数量不多,实现最终一致性,例如存储系统多副本一致性

模式3-Rumor mongering

谣言传播:收到更新消息后,自己成为“受感染节点”,周期性的传播更新消息,如果发现其他节点已经知道了消息,则按照一定概率将自己变为removed,不再传播消息

在这里插入图片描述

优点

  1. 最终一致性
  2. 传播信息少
  3. 达到一致性所需时间少

缺点

  1. 有一定概率可能不一致
  2. 节点数量不能太多,Redis官方文档最大1000

应用场景

节点经常变化的集群

Bully选举算法

Bully算法简介

Bully算法

当一个进程发现协调者(或 Leader)不再响应请求时,就判定其出现故障,于是它就发起选举,选出新的协调者,即当前活动进程中进程号最大者

Bully 的中文意思是“霸凌” ,但实际实现的时候,找最小的节点也可以,关键点在于“

关键假设

  1. 系统是同步的
  2. 进程在任何时候都可能失败,包括算法在执行的过程中
  3. 进程失败后停止工作,重启后重新工作
  4. 有失败监控者,它可以发现失败的进程
  5. 进程之间消息传递是可靠的
  6. 每一个进程知道自己和其他每一个进程的 ID 以及地址

Bully算法选举过程

在这里插入图片描述

step0:初始状态,P6为Leader

step1:P6故障

step2:P3 检测到 P6 故障,发起选举,向 P4、P5、P6 发送 Election 消息

step3:P4、P5 回复 P3 Alive 消息,说明自己还活着,P3 退出选举,等待 Victory 消息

在这里插入图片描述

step4:P4向P5、P6发送 Election 消息

step5:P5回复P4 Alive 消息,P4退出选举,等待 Victory 消息

step6:P5向P6发送 Election 消息

step7:P5未收到 Alive 消息,成功当选,向所有节点发送 Victory 消息,选举结束

Raft选举算法

Raft算法简介

Raft算法

Raft is a consensus algorithm that is designed to be easy to understand. It’s equivalent to Paxos in fault-tolerance and performance. The difference is that it’s decomposed into relatively independent subproblems, and it cleanly addresses all major pieces needed for practical systems

关键点

  1. 容易理解
  2. 算法明确划分为选举、复制、安全三个子问题

Raft实现

实现1-leader选举

在这里插入图片描述

  1. The client of the application makes requests only to and gets responses only from the leader server
  2. only be available when a leader has been successfully elected and is alive

实现2-日志复制

在这里插入图片描述

State machine replication:复制状态机,复制的是命令而不是数据,典型代表:Raft

Primary-backup system:主备复制,复制的是命令执行后的数据,典型代表:Zookeeper的ZAB

两者差别:是否能够容忍“非拜占庭错误”

在这里插入图片描述

Raft的实现

每个节点都有一个状态机和一致性模块,由一致性模块保证分布式一致性,节点之间复制的是 client 发送的命令,无论读写请求都需要进行一致性处理,因此可以容忍非拜占庭故障

Raft vs ZAB vs Paxos

RaftZABPaxos
分布式一致性弱于Paxos弱于Paxos最强
复制方式State machine replicationPrimary-backup systemState machine replication
读写方式读写leader,follower不接受请求读写leader,读follower任意节点都可以读写
是否有leader是,强leader是,强leader无,部分变种有Leader,但只是协调作用
复杂度比Paxos简单比Paxos简单复杂
特殊场景选举期间不能服务选举期间不能服务Livelock

Raft vs Zookeeper

  1. 如果你想内嵌分布式选举或者一致性功能,或者基于业务特性做一些小调整,选择Raft,例如MongoDB、etcd等
  2. 如果你想实现分布式选举或者一致性,但是不想自己去实现协议代码,选择Zookeeper,例如HDFS、Cassandra等
  3. 如果你不确定,请选择Zookeeper

Raft的资源

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...