Raft is not great?

news/2024/11/28 12:55:13/

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 


http://www.ppmy.cn/news/329155.html

相关文章

苹果手机备份有必要吗_苹果手机备份最简单方式!原来大神都这样做

iPhone备份麻烦&#xff0c;大家都知道&#xff01;到底有多麻烦呢&#xff1f;以小编的经验&#xff0c;大概是折腾一晚上都不一定能顺利完成吧&#xff01;因此&#xff0c;今天小编就要来跟大家分享一些常用靠谱的备份方法&#xff0c;学会了就再也不用担心数据意外丢失啦&a…

比较iOS和Android的优缺点,第一次安卓机优缺点总结(对比iOS系统)

这次老婆换了x,换下来的7我都没用到&#xff0c;被丈母娘用了&#xff0c;我看着手上的6p&#xff0c;狠心换了华为Mate10Pro(6g,64g)。其实在一年前就开始关注华为的手机&#xff0c;对齐的性能了解主要来自网络媒体&#xff0c;外观认识主要来自身边朋友。从iOS转变到安卓&am…

iOS和安卓各自优缺点和测试时区别

iOS和安卓各自优缺点&#xff1a; 1.运行机制&#xff1a;安卓是虚拟机运行机制&#xff0c;IOS是沙盒运行机制 安卓系统中应用程序的运行都是在虚拟的环境中运行的&#xff0c;运行方式是数据先传输到虚拟机&#xff0c;再由虚拟机传递到用户界面&#xff08;简称UI&#xf…

华为升级鸿蒙系统使用优点,华为鸿蒙系统的缺点和优点

(csdn和只说数码科技综合整理) 华为自主研发的“鸿蒙(Hong Meng)”操作系统&#xff0c;借鉴 Fuchsia 的开发思路&#xff1a;开发一款开源、微内核(鸿蒙沿用 Linux 内核)、跨平台与海量应用生态 APPs 适配的通用操作系统。 鸿蒙虽然被定位为IoT(物联网)操作系统&#xff0c;但…

54、基于51单片机饮水机温度水位控制无线蓝牙APP控制报警系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+元器件清单等)

方案的选择 方案一&#xff1a;采用51单片机作为控制核心&#xff0c;配合无线蓝牙模块、水温加热模块继电器开关、基于Dallas单线数字式的DS18B20温度传感器模块、蜂鸣器报警模块、按键模块、LCD1602液晶显示器模块、晶振电路模块、复位电路模块以及电源模块为一体构成无线水…

Virtual box安装Ubuntu1804乱码

Virtual box安装Ubuntu1804乱码 1. 首先检查编码格式 运行以下命令打开locale配置文件&#xff1a; sudo nano /etc/default/locale2. 可能缺少字体&#xff0c;打开终端&#xff0c;先执行更新 sudo apt-get update 接着进入设置&#xff0c;搜索language&#xff0c;进入…

接口自动化测试新玩法!Python构建mock服务让你的测试更加高效!

目录 引言 Flask mock接口开发示例 引言 Mock 即模拟&#xff0c;就是在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;用一个虚拟的对象来创建以便测试的测试方法&#xff0c;其最大的优势就是降级前后端耦合度&#xff0c; 使前端工程师可以不…

达梦数据库的下载与安装(Linux)

一、创建用户组 1、创建一个用户组和用户 添加分组 groupadd dinstall添加用户 useradd -g dinstall dmdba设置用户名和密码 echo "dameng123" | passwd --stdin dmdba查看操作系统中id为 dmdba 的用户的用户ID&#xff08;uid&#xff09;、组ID&#xff08;gi…