raft 日志一致性的策略

raft算法中raft日志的复制流程

1) 客户端向Leader发送写请求
2) Leader将写请求解析成操作指令追加到本地日志文件中。
3) Leader 为每个Follower广播AppendEntries RPC
4) Follower 通过一致性检查,选择从那个位置开始追加Leader的日志条目。
5) 一旦日志项提交成功,Leader就将该日志条目对应的指令应用(apply)到本地状态机,并向客户端返回操作结果。
6) Leader 后续通过ApplendEntries RPC将已经成功(大多说节点上)提交的日志项告知Follower。
7) Follower收到提交的日志项之后,将其应用至本地状态机。

raft 算法设计了一下日志机制来保证不同节点上日志的一致性

1) 如果在不同的日志中有两个条目有着相同的索引和任期号,则它们所存储的命令是相同的
2) 如果在不同的日志中两个条目有着相同的索引和任期号,则它们之前的所有条目都是完全一样的。

leader 日志追加

leader的日志apply 后,会发消息告诉所有FOLLOWER进行apply
然后leader 进行commit 更改状态机的信息,leader 通过状态机的信息去确定数据的安全性(即是否达成多数派)
FOLLOWER进行commit  更改状态机的信息

VoteRequest RPC --只有候选者能调用的RPC

Append-Entries RPC --只有leader能调用的RPC

选举超时机制

候选人处于僵持阶段,会有候选人的超时设置,候选人超时后,会采用随机时间(150ms-300ms)重新发起选举,这个超时对应的是候选人

类似于选举超时时间,选举超时时间针对于Follower
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值