我想从许多相同的流程中选出一个领导者。Paxos 的所有解释都说有些进程是 Proposers,有些是 Voter,有些是 Accepters。当我启动它们时,我是否需要将这些角色分配给我的进程?
如果我所有的提议者都死了怎么办?我可以将现有的学习者/投票者切换为提议者吗?
我的想法是,所有进程都作为选民出现,然后随机超时等待消息。如果他们在超时到期之前没有收到任何消息,他们将扮演提议者的角色。如果他们收到一条消息,他们会再次超时,然后如果他们在超时结束(或他们达成协议)之前没有收到任何消息,他们可以再次成为提议者。
这是一种有效的方法吗?