丢弃commit_Raft算法会丢弃那些只在leader复制,但没提交的事务吗?

答案是不一定。

我理解你所的场景就是旧的Leader还没复制到多数派,然后切新Leader的场景了对吧?如果是这种场景,那么有一定概率仍然会commit这个log。

新的Leader在正式提供服务前有一个流程:参见raft-5.4.2,可以认为是崩溃恢复流程。新的Leader会以current term提交一个事务,这会保证previous term的log跟着被commit。

重点来了:

1)如果新主拿到多数派的vote包括旧的Leader,那么在旧Leader上写入的log,会被commit;

2)如果新主拿到多数派的vote不包括旧的Leader,那么在旧Leader上写入的log,会被abort;

所以结论是不一定。注意:这里新的Leader和旧的Leader只是逻辑上的概念,有可能旧的Leader网络分区超时,触发选举导致旧的Leader step down以后重新选主又成为新的Leader。同一个节点,但是term不同。所以,1)是有可能的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值