Raft协议简介

Raft的名字并没有特殊的含义,其目的是将分布式一致协议(主流的Paxos)进行简化和工程化应用。Raft由于其简单和可靠,被越来越多的公司采用(PingCAP tidb, InfluxDB, CoreOS etcd,hasicorp consul等)。Raft通过三个主要模块:选主,日志复制和安全实现了一个完整的分布式系统。其可以用来实现分布式锁服务,分布式存储系统,高可靠元信息管理和解决系统单点问题。

在raft的选主中,将节点划分为3种角色:leader,follower和candicate(如下图所示)。 所有节点启动时都是Follower状态,内部有一个随机的timer(50-100ms),当timer触发时,发起投票,进行candidate状态。在candidate状态时,节点收集从其他节点返回的投票,当获取到多数(超过一半)即转换为leader。节点直接也定期发送心跳以获得集群整体状态。处于candidate状态的节点在得知非自己的主节点的信息时或者在一个新的周期(自己不是leader),即进入follower状态。

Raft的节点具有如下约束:

1. 只有Leader才能接受写和读请求(强一致性保证);

2. 只有candidate才能发起选举;

3. 成为Leader的节点必须包含最多的日志;

4. 每个节点的term的定时周期使用随机值;

5. Candidate节点收到超过一半以上的投票才能成为主节点;

6. 主节点同步日志到从节点;

7. 日志采用append模式;

8. 节点间的心跳时间不能小于选举超时时间;

9. 一个周期内最多只有一个leader;

通过以上的约束,Raft能够很好的解决分区一致性,避免双主的出现。日志同步能够保值节点间数据的一致性,日志同步的内容在后续的学习中进行分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天读点书学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值