美文网首页
raft论文-选主

raft论文-选主

作者: 小跑001 | 来源:发表于2020-08-30 16:57 被阅读0次

    1、选主

    1.1 节点启动

    • 以从的身份启动
    • 接受主或者候选者的消息

    1.2 触发选主流程

    • 若没有消息, 超过一段时间则发起选举,升级为候选者
    • 增加当前term, 并且切换为候选者角色
    • 为自己投票, 并且并行的发送RequestVote消息给其它节点

    1.3 选主中断

    • 自己赢得选举
    • 其它节点赢得选举
    • 都没有赢得选举, 并且超时
    1.3.1 抢主成功
    • 在一个周期内候选者获得大多数的投票
    • 在一个周期内, 每个节点最多给一个候选者投票
    • 大多数节点确保了在一个周期内最多只有一个主被选出来
    • 一旦一个候选者赢得选举, 就会发送心跳包给其它节点来阻止新的选举
    1.3.2 抢主失败
    • 当候选者收到消息发现已经有主存在, 并且term不比自己的小, 那么切换为从的角色
    • 在超过一定时间后, 当自己和别人的没赢得选举的时候, 发起一轮新的选举
    1.3.3 如何保证快速选主
    • 利用随机时间

    1.4 选主疑问

    • 当一个节点出现分区, 触发选主, 会不会频繁导致选主, 影响可用性
      1、这个后面章节要介绍到, 为了避免发生不必要的选主, 其它节点并不是无脑的同意候选者, 也会判断主是否真的断开了

    • 当候选者知道自己被大多数投票是有一定的延迟性的, 这个时候对外宣布为主, 或者就做主的行为, 是不是有问题:
      a、raft的行为是复制日志, 只有大多数同意才算成功, 如果作为主是过时的, 那么主的行为不会成功
      b、然而不依赖大多数的行为是有问题的, 所以利用raft来选主还需要其它的机制, 比如时间租约的模式

    • 节点启动的时候都是从, 为什么不是候选者, 影响结果的正确性或者其它特性么
      1、作为候选者启动并不会影响程序的正确性
      2、然而启动就发起选主, 这个时候日志很大可能是落后的,毕竟是有一段时间服务不可用
      3、启动就发起选主, 由于日志落后, 必然不能赢得选举, 固然会浪费服务的可用性时间

    相关文章

      网友评论

          本文标题:raft论文-选主

          本文链接:https://www.haomeiwen.com/subject/saeesktx.html