raft算法(1)

一.多节点复制

1.为什么需要日志?为什么一致性模块不能直接管理状态机?

  • 加了log之后就可以比较方便的对一些不能达成共识的命令做回滚的操作。多节点复制的日志保证了所有状态机按相同的顺序执行相同的命令。日志可以将命令按顺序排好。帮助所有节点共同确定一个执行顺序,帮助leader确认每个follower有相同的日志。
  • 一致性模块保证了日志复制结果的正确性。复制状态机只能保证最终结果达到相同状态,但是在过程中可能会出现不一致的情况,我们并不要求每次执行命令都同步的,可以异步执行。

二.Raft动画演示

节点的三种状态:leader、follower、candidate

1.leader收到set 5命令后,什么时候才可以回复client命令执行成功了

  • leader收到set5命令后会添加命令到自己的日志,然后发送消息给follower,leader等待集群内大部分follow的回应后执行命令并且回复客户端

2.动画里面提到的election timeout是什么意思?为什么要在一个时间区间150—300ms里随机选一个值?何时重置这个timeout?

  • 一个follower节点长时间没有接受到leader的消息,不会马上变成candidate状态,而是会等待一段时间。如果这一段时间都没有收到消息就会变成candidate状态。这段过程叫做election timeout
  • 为了避免选举冲突

3.如何保证一个term最多只有一个leader当选?为什么要保证

  • 一个节点某一任期内最多只能投一票;只有获得大多数投票的节点才会成为leader
  • 系统中有多余的leader被称为脑裂,会导致数据的覆盖丢失。

4.多个candidate同时竞争选票导致选不出leader怎么办

  • 等待下一次timeout之后,其余节点参与竞选。

5.什么是log entry?动画里说的an entry is committed是什么意思?

  • entry日志数组里面的一个元素,entry里包含的一些操作叫做log entry,一个log由很多entry组成,由时间顺序排列。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值