hashicorp/raft 介绍与源代码分析(二): 领导人选举(二)

回顾

上章提到,基于节点的 keyCurrentTerm 、LastLogTerm 、 LastLogIndex 3 个持久化数据,在选举时,可以确定领导者

选择领导者的依据是哪个节点 log 最全,选谁

但是有附加条件的,该节点 log 最全,并且其他节点已经应用到状态机的 log ,该节点必须有

因此,不是所有情况下选举一定能成功的

最坏的情况下,找不到符合条件的 log 落地日志拥有者时,必须牺牲可用性(即拒绝服务),来保证整个集群状态被破坏

因为,如果有 log 已经应用到状态机, raft 协议没法处理回退状态机的状态

想弄明白,为啥可以根据 keyCurrentTerm 、LastLogTerm 、 LastLogIndex 3 字段数据,来选主

我们先了解下,正常流程中, log 数据如何从请求发起,到所有节点应用 log 到状态机的过程。再介绍 2 个关键字段

log 数据正常处理过程

见图:

在这里插入图片描述

图解说明:

  1. 客户端发起请求
  2. leader 写 log ,持久化该日志
  3. 复制 log 到所有 follower , 所有 follower 写 log ,持久化该日志
    1. leader 会顺带告诉 follower ,自己已提交的日志索引(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fananchong2

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

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

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

打赏作者

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

抵扣说明:

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

余额充值