第一题
Q:在server1、server2和server3中选一个Master。
已知:
- Proposer1的编号为2;
- Proposer2的编号为1;
- Proposer3的编号为3.
Proposer向Acceptor提交决议的顺序为Proposer1、Proposer3、Proposer2.
试分析:最终选取出的Master是哪台服务器?写出分析过程。
已知:proposer2向acceptor2和acceptor3发送编号为1的消息,
proposer1向acceptor1和accepto2发送编号为2的消息,
proposer3向acceptor2和acceptor3发送编号为3的消息。
一、第一轮
(1)proposer1发送的消息到达acceptor1和acceptor2,它们都没有接收过请求,所以接收该请求并返回{pok,null,null}给proposer1,同时acceptor1和acceptor2承诺不再接受编号小于2的请求。
(2)proposer3的消息到达acceptor2和acceptor3,acceptor2已经接受proposer1的请求并承诺不再接收编号小于2的请求,但编号3的消息大于acceptor2已接受的2,所以acceptor2接收该请求并返回{pok,null,null}给proposer3,acceptor3没有接收过请求,所以接收该请求并返回{pok,null,null}给proposer3,同时acceptor2和acceptor3承诺不再接受编号小于3的请求。
(3)proposer2的消息到达acceptor2和acceptor3,它们都接受过请求并且承诺不再接收编号小于3的消息,所以acceptor2和acceptor3都拒绝proposer2的请求。
二、第二轮
各个proposer开始统计收到的结果,proposer可能开始进入accept阶段或者重新提交。
(1)proposer1收到两个回复,超过半数,并且返回的value值是null,所以proposer1提交{2,serv1}的提案,acceptor1和acceptor2接收到proposer1的提案{2,serv1}的提案,acceptor1承诺不再接收编号小于2的请求,所以acceptor1通过该提案,并返回{pok,2&