准备工作
1、阅读raft论文
2、阅读我写的raft理论与实践[1]-理论篇
3、由于我们需要模拟rpc远程调用, 因此需要查看我写的这篇文章: 模拟RPC远程过程调用
4、实验开始,我们首先需要拉取代码:
git clone git@github.com:dreamerjackson/golang-deep-distributed-lab.git
git checkout --hard 4e6446c
实验说明
此代码中labrpc 与 labgob 为模拟rpc的 package。
raft文件夹为此实验用到的代码框架。 在其中已经写好了一部分代码,还需要我们通过实验来完善它。
在本实验中,我们只需要关注raft.go文件,并实现选举逻辑和心跳检测逻辑。
本实验的目标是要保证,唯一的leader能够被选举。
当leader被选举后,如果没有任何失败,其将会保持leader。
当leader被选举后,如果leader奔溃或者to/from leader 的网络包丢失,则新的leader将