Raft is not great?
Raft相比于paxos不好的地方有下面这些地方
1.Term
raft的逻辑时钟是通过term,和votefor来确定的,同时,raft的votefor只能是None < 有,有的话,就不可比,也就是一个偏序关系。这个不可比的特性会增加选举冲突的几率,比如下面这个例子中,candidate都给自己投票的,这个term就谁也变不成leader。
而paxos(可能说的是multi-paxos)则是一个全序关系,冲突概率就小很多
2.Server State
leader可以发起日志复制,但不能来投票,candidate可以发起vote,但不能日志复制,也就是说在raft这里日志复制和投票是不能并行来做的。但是这是可行的
优化
如果vote不成功的话,回退会follower.
单节点变更的bug
可能覆盖之前的提交。解决方法就是leader起来后先来插入一条空日志,然后提交后,再propose 新的config。也就是要保障Cu起来后不能成为leader。(也就是原来的大多数就只有一个)。
联合共识来变更有更好的容错性
多了一种组合bc
有两种配置日志生效:立即生效(没提交的话,需要做一些处理)提交生效(两个大多数的日志commit_idx不同,需要做一些处理)
prevote
就是多做一个rpc来问这个follower当前有没有leader。 也就是在follower上做一个超时时间,每次leader发送心跳给它时,重置一下。
clock-time和term mix混合起来做一个时间很糟糕,但是如果我们把lastterm, lastlog作为时间就比较好(把heartbeat也append日志)
但是有可能在一个极端的情况下,prevote到达时,heartbeat没到,然后candidate提升term,准备vote,打破本不应该打破的稳定网络。这时,我们就要下面的方法:
prevote就是要解决如果对面形成了一个稳定网络的话,我就不用提升term,来打破这个网络(leader),但是如果我们直接不打破网络(leader),直接提升leader的term的话,就可以做一个优化。
Reference
深度探究 OpenRaft |Data Infra 研究社第二期_哔哩哔哩_bilibili
Paxos算法 | Calvin's Marbles
Raft is not great?相关推荐
- MIT 6.824 Lab2A (raft) -- Leader Election
文章目录 实验要求 Leader Election流程 及详细实现介绍 基本角色 关键超时变量 关键的两个RPC实现 RequestVote RPC AppendEntries RPC Go并发编程实 ...
- 从paxos到raft zab,为何raft能够“独领风骚”
文章目录 RAFT出现的缘由 RAFT 的实现 STATE MACHINE Log Replicated State Machine Leader Election 基本角色 关键变量 基本选举过程 ...
- 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结
文章目录 前言 CAP理论 C consistency 一致性 A availability 可用性 P partition tolerance 分区容错性 一致性模型 弱一致性 强一致性 强一致性算 ...
- btf-raft共识算法_了解Raft共识算法:学术文章摘要
btf-raft共识算法 by Shubheksha 通过Shubheksha 了解Raft共识算法:学术文章摘要 (Understanding the Raft consensus algorith ...
- 超详细解析 | 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/VMW9 背景 在常见的分布式系统中, ...
- Paxos、Raft不是一致性算法/协议?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作为互联网中的一员,我们时常沉浸在"分布式"的 ...
- 图解:什么是Raft算法?
导读 在之前的文章<基于SpringCloud的微服务架构演变史?>中我们介绍了分布式注册中心Consul集群中使用了Raft这种分布式一致性算法,那么在这一篇的内容中就给大家详细介绍下什 ...
- 分布式一致性算法Raft
导语 | 对于很多工程人员来说,Paxos算法不容易理解和落地实现.因此斯坦福学者提出了一个更易理解和实现的共识算法Raft.本文主要介绍Raft的基本原理.算法流程以及和Paxos的区别. 一.Ra ...
- 用动图讲解分布式 Raft
用动图讲解分布式 Raft 一.Raft 概述 Raft 算法是分布式系统开发首选的共识算法.比如现在流行 Etcd.Consul. 如果掌握了这个算法,就可以较容易地处理绝大部分场景的容错和一致性需 ...
- 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR超详细解析
背景 在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟.丢失.重复.乱序,还有网络分区)等情况. 一致性算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地 ...
最新文章
- MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...
- zendserver的版本是怎么回事?免费版哪里去了?
- 21个深度学习调参技巧,一定要看到最后一个
- Jmeter响应内容显示乱码问题的解决办法
- ActionScript 3.0 Step By Step系列(三):学学流程控制,编编if-else switch while for
- MySQL数据库管理(二)单机环境下MySQL Cluster的安装
- java多线程编程_Java多线程编程实战指南+设计模式篇.pdf
- c++突破网关屏蔽_为什么加了屏蔽罩,测试效果反而不好?
- 通过C学Python(3)列表的常用方法
- 小猿圈之java文件重命名
- python multiprocessing 批量下载图片+tqdm
- 实习日志(1)2011-12-30
- 控制反转(IOC)入门
- 百度文库f12免费复制文章
- 番茄花园GHOST SP3无法安装IIS 信息服务的解决方法
- 计算机绘图课程选用课本,机械制图课程学习指南.doc
- html设置div大小位置不变,div大小 div固定大小设置
- sdn体系的三个平面_深入SDN(三):SDN、OpenFlow和NOS是什么?
- PowerBI自动切换中英文单位
- 学llinux的资料
热门文章
- java里remark是什么意思_remark是什么意思?
- 全球地壳模型 crust 1.0
- pdnovel.php,辰小阳很出名吗
- NISI脚本中对环境变量赋值
- 类脑神经界面研究有新进展-深圳先进院李骁健与华中科技大学罗志强合作研究将适合脑机接口应用的ECoG型传感器...
- 【stm32f103】USART TX发送实现(寄存器版)
- 2019浙大计算机考研经验贴
- 面试:浏览器内核的作用及常见浏览器内核
- 2022年最新Android面试题整理,全网都在看,史上最全面试攻略
- 针对广州这一城市,运用Python来进行数据分析房地产市场