MIT 6.824(2021) Lab 2A-2C

这篇博客详细介绍了MIT 6.824课程中Lab 2A到2C的Raft共识机制实现。内容涵盖了选举过程中的关键点,如RequestVoteRPC的实现、超时机制、状态转换和问题排查。在Lab 2B中,博主讨论了日志追加、匹配索引和提交索引的管理,以及并发控制问题。Lab 2C则关注了状态的持久化和优化策略。整个实验强调了对Figure 2的严格遵循和故障处理能力。
摘要由CSDN通过智能技术生成

Lab 2A

A1.简介

根据Figure 2的思路,实现RequestVoteRPC以及其Handler,实现Raft的选举机制。

需要注意的点主要包括:
1)必须严格遵循Figure 2的逻辑
2)VotedFor和CurrentTerm这两个变量是一组变量
3)我的做法是通过维护一个时间变量lastHeartbeatEverSeen来实现超时机制,但可能可以通过go的Timer来实现
4)reset timer的时机有必要进行一番考虑。总体而言,当一个raft接收到某条信息,该认为有必要乐观地假设自己是follower状态的时候,它就可以reset timer

A2.一些可能的问题/踩坑情况

基本都是基于实现不佳所导致的!…

A00
问题:不断进行选举。
分析:debug后发现接收到自己的心跳的时候把自己设置为follower
结论:接收到heartbeat之后判断我自己是否为heartbeat发送者,如果是,不修改为follower
A01
问题:不断进行选举
分析:debug后发现某一个follower掉线之后,自己不断增长term,回来之后term远远在其他raft之上,但由于其log远远落后,导致不断分票。
结论:根据Figure 2对currentTerm的描述(last term ever seen),在每个RPC中都判断并更新自身的term
A02
问题:不断进行选举

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值