Raft算法

Raft算法动画演示:

http://thesecretlivesofdata.com/raft/

Nacos集群的写和Leader选举遵循Raft算法。Leader和Follower的通信间隔是500ms。term是0到15000ms。代码在RaftCore中。

Raft中,写就是所有节点先预提交,比如写在日志里,返回确认给Leader,超过半数确认了,就所有节点提交。

Leader选举,就是所有节点随机term,150ms到300ms,时间到了,就投自己一票,将票据发给其它节点,其它节点先收到自己的票据,将把票投给自己,自己的票数最多,自己就是Leader,其它就是Follower。

如果票数也相同,那几个节点就再随机term。

Leader确定后,Leader和Follower建立心跳连接,如果连接没有了,而且leader下线了,Follower就会开始term,选举新的Leader。

随机term是无需所有Follower同时发起投票,有一个得票占多数即可。

脑裂时,也就是分区时,可通信的大集群,分成可独立通信的小集群,会各自选举Leader。恢复时,会选举term次数大的Leader作为大集群的Leader。

Nacos、RocketMQ、Redis的Sentinel用了Raft。

 Kafka用的是PacificA,Zookeeper的写用了Raft,选主用的Paxos。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风铃峰顶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值