作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬
学习必须往深处挖,挖的越深,基础越扎实!
如上图所示,Server 2在宕机前正在对log7 、log8 、log9 进行Paxos,并且自身已经完成赋值过程(但是其它节点都还没有完成赋值过程,没有形成多数派)。这时Server 2由于某些原因下线了。Server 3通过选主过程拿到了Proposer Leader,但是它能获取到的最大log id为log6(因为现在存活的各个节点上最大的log id都是log6嘛),所以自己start working的log id 位置就是log7。就在这个时候,Server 2节点又恢复了工作,且技术人员人工命令从新授予Server 2 节点Proposer Leader身份。
这时在其上原有的log7、log8、log9虽然有值,但是也不能再使用了,需要重新进行恢复。那么Server 2依据什么来判断存储在自身节点的log7、log8、log9的值已经失效必须进行恢复的呢?那就是在start working的时候,记录了一个创建时间T1,在随后的工作中,节点每写入一条日志信息就要写入同时写入这个T1。当进行数据恢复时,如果发现