MIT 6.824 Lab2, part1小结
关于MIT 6.824课程的Lab 2, part 1
从昨晚在宾馆到今天飞机上,都在过这几个test case,终于最后有点讨巧的过了。
View service是MIT介绍paxos之前用来入门的,它的原理是以时间先后的顺序确定主备服务器,由定期的心跳更新此关系。之所以放在单独的service里获取主备关系,是为了将主备关系从K-V系统中解耦,从而K-V系统不用关心键值操作之外的事情,让更加上层的系统进行处理。
遇到的问题:
- view service当前的view,和下一个未确认的view在哪些时间点更新?
- 怎么认为这个服务器作为主,又怎么确认其为Backup,Idle?
- 什么时候能将这些认识更新到服务器当前view上?
- 服务器看到的view service的当前view是怎样的?
- 不同服务器查询当前view状态,获得的结果是一样的吗?
我用复杂难看的if-else语句最后实现这些逻辑,但不可否认,实现的漏洞很多,我理想的解决方案还是使用状态机,可以更加清晰容易更新(用图表展现)。