投票给自己重置选举定时器发送RequestVote RPC给所有其他server如果接收到大多数server的投票:成为leader如果接收到新leader发出的AppendEntries RPC:成为follower如果举定时器超时:开始新一轮选举leader- 一旦成为领导人:发送第一个AppendEntries RPC(心跳)给每一个server;空闲时间重复发送防止选举定时器超时
- 如果接收到客户端的命令:添加记录到本地日志后面,在完全应用到状态机后再响应客户端
- 如果最新的记录索引 >= 某个follower的nextIndex:发送AppendEntries RPC,包含了从nextIndex开始的记录
- 如果成功:更新follower的nextIndex和matchIndex
- 如果因为日志不一致导致的失败:自减nextIndex并重试
- 如果存在N > commitIndex,大多数的matchIndex[i] ≥ N并且log[N].term == currentTerm:设置commitIndex = N
算法不变量
- Election Safety:每个任期足以多只有一个leader被选举出来
- Leader Append-Only:leader不会覆盖或者删除自己的日志的记录;他只会在后面添加新的记录
- Log Matching:如果两个日志包含一个相同索引和任期的记录,那么我们认为这个索引的记录以及之前的记录的内容完全一致
- Leader Completeness:如果一个记录在一个任期内被提交,那么更高任期的leader的日志都会包含这个记录
- State Machine Safety:如果一个server应用了一个给定索引的记录到状态机,不存在其他server在相同的索引位置应用不同的记录
参考:https://github.com/maemual/raft-zh_cn
经验总结扩展阅读
-
元旦如何对女孩子送祝福 有哪些表达元旦祝福的句子呢
-
-
|请你好好生活,用好脾气换福气!学会不生气,才是最大的赢家!
-
肉放冰箱冷冻一年还可以吃吗 肉放冰箱冷冻一年还能不能吃
-
写在开始:有一句歌词...|男人若认定了你,他就会沉得住气,不想要“轰轰烈烈”
-
-
-
2023年10月8日适合装修屋顶吗 2023年农历八月廿四宜装修屋顶吗
-
-
|陈美玲终于爆发!控诉艾威酒瘾大控制欲强,性格比张婉婷还强势
-
-
国庆假期刚结束,中小学生就有望迎来6天小长假,个别地区已落实
-
-
-
-
-
火锅的碗怎么能清洗干净 吃火锅怎么快速洗碗又快又干净
-
-
-
河南两女子做34年闺蜜后,突发奇想做DNA,才知道是双胞胎姐妹