-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

Paxos コンセンサス アルゴリズム を確認してください。アルゴリズム自体は、P2P のケースではやり過ぎの可能性があります...それでも、対処する必要がある問題のリストとして役立つ場合があります。

スーパー ショート バージョン - ほとんどの参加者 (定足数) は、最高バージョンの選挙メッセージ {leader, version} に同意する必要があります。複数の選挙がほぼ同時に開始された場合、複数のラウンドが必要になる場合があります。

于 2012-05-16T16:40:49.470 に答える