谁发起了领导人选举

时间:2012-05-16 05:21:40

标签: java algorithm

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

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;
    }

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

结帐Paxos consensus algorithm。对于P2P案例,该算法本身可能过于苛刻......仍然可能是您需要解决的问题列表。

超短版 - 大多数参与者(法定人数)必须就最高版本的选举讯息{领导者,版本}达成一致。如果在大约同一时间开始多次选举,可能需要多轮。