raft协议 java_图解分布式协议-RAFT

RAFT是一个通俗易懂,更容易落地的分布式协议。分布式协议一般都比较难懂,但是看了几个协议之后发现画PPT是理解一个协议比较好的办法,如果喜欢欢迎转发,后续会补充其他协议的PPT。

节点的状态

每个节点有三个状态,他们会在这三个状态之间进行变换。客户端只能从主节点写数据,从节点里读数据。

5dc2e4a15972d23e2db87e2772a8d012.png

选主流程

​初始是Follwer状态节点,等100-300MS没有收到LEADER节点的心跳就变候选人。候选人给大家发选票,候选人获得大多数节点的选票就变成了LEADER节点。

cebbe3362abfcddf5d1f175c08ad8be8.png

日志复制流程

每次改变数据先记录日志,日志未提交不能改节点的数值。然后LEADER会复制数据给其他follower节点,并等大多数节点写日志成功再提交数据。

25d16df7a642a9e6d82c0a118dddd67d.png

选举超时

每个节点随机等150到300MS,如果时间到了就开始发选票,因为有的节点等的时间短,所以它会先发选票,从而当选成主节点。但是如果两个候选人获得的票一样多,它们之间就要打加时赛,这个时候又会重新随机等150到300MS,然后发选票,直到获得最多票当选成主节点。

d6bcb0d16ac8fb63ea5501c1d97d5d8c.png

心跳超时

每个节点会记录主节点是谁,并且和主节点之间维持一个心跳超时时间,如果没有收到主节点回复,从节点就要重新选举候选人节点。

2eeb95a479e7de2f123a3506e2f288f1.png

集群中断

当集群之间的部分节点失去通讯时,主节点的日志不能复制给多个从节点就不能进行提交。

ed676d77274003771abadcb60ee9d153.png

集群恢复

当集群恢复之后,原来的主节点发现自己不是选票最多的节点,就会变成从节点,并回滚自己的日志,最后主节点会同步日志给从节点,保持主从数据的一致性。

4840e30714bbd35358f2d6f841b065d8.png

d0c1501a6d8bb921cf36400dc89de69f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值