文档章节

总结:Raft协议

浮躁的码农
 浮躁的码农
发布于 09/17 19:34
字数 531
阅读 18
收藏 0

一、Raft协议是什么?

分布式一致性算法。即解决分布式系统中各个副本数据一致性问题。Raft论文《In Search of an Understandable Consensus Algorithm》发表于2013 年,由于发表较晚,因此很多分布式系统都没有采用,比如kafka

二、Raft的日志广播过程

  1. 发送日志到所有Followers(Raft中将非Leader节点称为Follower)。

  2. Followers收到日志后,应答收到日志。

  3. 当半数以上的Followers应答后,Leader通知Followers日志广播成功。

三、随机超时机制(Paxos也有此机制)

多个Candidate同时发送投票请求,而导致谁都不能够得到多数赞成票的情况,有可能永远也选不出Leader。为了保证Leader选举的效率(长时间选不出leader会导致长时间不可用),Raft在投票选举中使用了随机超时的机制:

  1. 在每个Followers上设定的Leader超时时间是在一个范围内随机的。这样可以尽量让Followers不在同一时间发起Leader选举。

  2. 每个Candidate发起投票后,如果在一段时间内没有任何Candidate称为Leader则,需要重新发起Leader选举。这段等待的时间,在每个Candidate上也是随机的。从而保证不会有多个Candidate同时重新发起Leader选举。

虽说是随机的超时时间,但是也有个范围,太小或者太大都会影响系统的可用性。太小会导致过多的选举冲突,太大又会影响系统的平滑运行。在Raft的论文中,作者将这个超时时间称为electionTimeout,并给出了合理的范围,公式如下:

broadcastTime ≪ electionTimeout ≪ MTBF

“≪”代表数量级上的差异(10倍以上)。

 

 

 

参考链接:

https://www.jianshu.com/p/aa77c8f4cb5c

https://my.oschina.net/weiweiblog/blog/1928574

© 著作权归作者所有

浮躁的码农

浮躁的码农

粉丝 76
博文 916
码字总数 179921
作品 0
松江
程序员
私信 提问
Raft 为什么是更易理解的分布式一致性算法

一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前。 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文《拜占庭将军问题》(参考[1])。 拜占庭位于如...

cccyb
2016/10/11
11
0
阿里云InfluxDB® Raft HybridStorage实现方案

阿里云InfluxDB®Raft HybridStorage实现方案 背景 阿里云InfluxDB®是阿里云基于开源版InfluxDB打造的一款时序数据库产品,提供更稳定的持续运行状态、更丰富强大的时序数据计算能力。在现有...

德施
07/09
0
0
etcd raft如何实现Linearizable Read

Linearizable Read通俗来讲,就是读请求需要读到最新的已经commit的数据,不会读到老数据。 对于使用raft协议来保证多副本强一致的系统中,读写请求都可以通过走一次raft协议来满足。然后,现...

sshpp
2017/07/20
0
0
深入浅出分布式系统Raft协议

一、Raft协议和Paxos的因缘 读过Raft论文《In Search of an Understandable Consensus Algorithm》的同学都知道,Raft是因为Paxos而产生的。Paxos协议是出了名的难懂,而且不够详细,紧紧依据...

HOT_POT
2018/07/26
119
0
蚂蚁金服服务注册中心 MetaServer 功能介绍和实现剖析 | SOFARegistry 解析

SOFAStack (Scalable Open Financial Architecture Stack) 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 SOFA...

SOFAStack
09/12
28
0

没有更多内容

加载失败,请刷新页面

加载更多

JDBC 连接数据库的流程?

加载 JDBC 驱动程序 利用 url,user,password 创建数据库连接 创建 statement 对象执行 sql 语句 返回查询结果 resultset 关闭连接,释放 JDBC 资源。关闭的顺序与开启的顺序相反:resultset...

happywe
32分钟前
2
0
如何让视频加速播放

当下的视频工作者越来越多,很多人在闲暇时间也会制作一些好玩有趣的短视频上传一些社交媒体。下面分享一个让视频加速播放的软件以及制作方法,学会这个方法后,可以制作一些有趣的加速视频啦...

白米稀饭2019
39分钟前
2
0
生成带图片的二维码

1,pom.xml 中 <!-- ZXing --><dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version></dependency><dependency......

简小姐
48分钟前
3
0
可能是国内第一篇全面解读 Java 现状及趋势的文章

作者 | 张晓楠 Dragonwell JDK 最新版本 8.1.1-GA 发布,包括全新特性和更新! **导读:**InfoQ 发布《2019 中国 Java 发展趋势报告》,反映 Java 在中国发展的独特性,同时也希望大家对 Ja...

阿里巴巴云原生
今天
3
0
Mybatis 配置详解

完整配置 mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.......

xiaolyuh
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部