Raft算法

Raft是一种分布式一致性算法,相比Paxos更加容易理解,易于实现。整个算法分为选举过程和复制过程。

一、选举过程(Leader Election

节点有三种角色:

Leader节点

Follower节点

Candidate节点

有两个超时时间控制选举,一个是election timeout,一个是heartbeat timeout(BroadcastTime)

当Follower节点超过election timeout时(election timeout在150ms~300ms随机生成),它会变成Candidate节点,当收到leader 的heartbeat时,会重置election timeout。

变成Candidate节点会先给自己有一票,然后会发送要求投票(RequestVote)的消息到其他节点,其他节点最多能给一个候选人投票,采用先到先服务原则。

获得超过半数投票则可称为Leader节点,若选举超时,没有任何一台服务器赢得选举,则自增当前任期(Term),重新发起选举;

二、复制过程(log replication)

Leader选出后,就开始接收客户端的请求。Leader把请求作为日志条目(Log entries)加入到它的日志中,然后并行的向其他服务器发起 AppendEntries RPC 复制日志条目。

(1)客户端提交数据,Leader节点将数据写到自己的log中

(2)Leader节点然后通过AppendEntries发送给Follower节点,Follower节点收到后回复确认。

(3)Leader节点收到超过半数的确认后先自己提交记录,然后回复客户端。

(4)Leader节点向Follower节点发送确认提交消息

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值