-1

谁在没有领导者的点对点网络中发起领导者选举?这是我在接收消息时实现的一些代码。

if (message.startsWith(ELECTION)) {
        int recievedID = Integer.parseInt(ripMessage(ELECTION, message));
        if (processID > recievedID) {
            sendToAll(ELECTION + processID);
        } else if (processID < recievedID) {
            sendToAll(ACKNOWLEDGE);
        }
    } else if (message.startsWith(ACKNOWLEDGE)) {
        ackRecv++;
        if (connections.size() == ackRecv) {
            connection.sendMessage(LEADER + processID);
            this.isLeader = true;
            this.leaderID = processID;
            ackRecv = 0;
        }
    } else if (message.startsWith(LEADER)) {
        int recievedID = Integer.parseInt(ripMessage(LEADER, message));
        this.leaderID = recievedID;
        this.isLeader = false;
    }
4

2 回答 2

2

通常在点对点系统中,不会有领导者。

在这种情况下,领导人选举没有意义。

有各种点对点算法 - 例如Chord

于 2012-05-16T08:57:17.870 回答
2

查看Paxos 共识算法。对于 P2P 案例,算法本身可能会矫枉过正......仍然可能作为您需要解决的问题列表有用。

超短版 - 大多数参与者(法定人数)必须同意最高版本的选举消息 {leader, version}。如果多轮选举几乎同时开始,则可能需要多轮选举。

于 2012-05-16T16:40:49.470 回答