Wie sich Rechner auf einen Leader einigen
Konsens heißt, dass mehrere Rechner sich auf einen Wert oder einen Anführer einigen, obwohl einige ausfallen oder nicht erreichbar sein können. Die Grundlage ist die Mehrheit: Mehr als die Hälfte der Rechner muss zustimmen.
Fünf Rechner halten die Daten eines Ticketshops. Fällt der Anführer aus, müssen die anderen schnell einen neuen wählen, und es darf nie zwei geben.
Am Ende dieser Lektion
Notiz
Ich kann erklären, wie Rechner sich auf einen Leader oder einen Wert einigen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Mehrheit | mehr als die Hälfte aller Rechner | 3 von 5 |
| Quorum | die Zahl der Rechner, die zustimmen müssen | |
| Leader | der Knoten, der Entscheidungen trifft (Anführer) | |
| Amtszeit | eine nummerierte Runde, in der es höchstens einen Leader gibt (Term) | |
| Split Brain | zwei Teile des Netzes glauben, sie hätten je einen Leader | |
| Konsens | die Einigung der Rechner auf einen Wert |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Mehrheit ist mehr als die Hälfte
Bei fünf Rechnern ist die Mehrheit drei. Bei vier ist sie ebenfalls drei, denn zwei von vier sind nur die Hälfte. Die Regel: ganze Hälfte, abgerundet, plus eins.
Der Grund: Zwei Mehrheiten haben immer einen gemeinsamen Rechner. Darum können nicht zwei Gruppen zugleich entscheiden.
Beispiel: Mehrheit und erlaubte Ausfälle
| Rechner | Mehrheit | Ausfälle, die das System verkraftet |
|---|---|---|
| 3 | 2 | 1 |
| 4 | 3 | 1 |
| 5 | 3 | 2 |
| 6 | 4 | 2 |
| 7 | 4 | 3 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Einen kleinen Client namens v bauen
v() ( printf '%s\r\n' "$*" | nc -w 1 valkey 6379 )Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Mehrheit bei fünf Rechnern ausrechnen
expr 5 / 2 + 1Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Mehrheit bei vier Rechnern ausrechnen
expr 4 / 2 + 1Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine Leader-Wahl braucht eine Mehrheit der Stimmen
Fällt der Leader aus, wird eine neue Amtszeit begonnen. Ein Rechner stellt sich zur Wahl und bittet die anderen um ihre Stimme. Jeder Rechner gibt je Amtszeit höchstens eine Stimme ab.
Wer eine Mehrheit hat, wird Leader. Gibt es keine, beginnt eine neue Amtszeit. So gibt es nie zwei Leader in derselben Amtszeit.
Stimmen zählen und eine Mehrheit finden
# Fünf Rechner stimmen ab. Jeder gibt in einer Amtszeit genau eine Stimme.
stimmen = {"knoten1": "b", "knoten2": "b", "knoten3": "a", "knoten4": "b", "knoten5": "a"}
zahl = {"a": 0, "b": 0}
for waehler in stimmen:
kandidat = stimmen[waehler]
zahl[kandidat] = zahl[kandidat] + 1
mehrheit = 5 // 2 + 1
print("Mehrheit:", mehrheit)
for kandidat in zahl:
if zahl[kandidat] >= mehrheit:
print(kandidat, "wird Leader mit", zahl[kandidat], "Stimmen")
# Ändern Sie zwei Stimmen so, dass niemand eine Mehrheit hat.
Setzen, wenn der Schlüssel fehlt
v SET leiter:dienst knoten2 NX EX 30Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine zweite Anfrage für denselben Schlüssel
v SET leiter:dienst knoten3 NX EX 30Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, mehr Rechner heiße immer mehr erlaubte Ausfälle. Vier Rechner verkraften aber nur einen Ausfall, genau wie drei. Darum nimmt man meist eine ungerade Zahl.
Ein Quorum für Schreiben und Lesen
Man kann auch Schreiben und Lesen an eine Zahl von Rechnern knüpfen. Ein Schreibvorgang gilt, wenn w Rechner ihn bestätigen. Ein Lesevorgang fragt r Rechner und nimmt den neuesten Wert.
Ist w plus r größer als die Zahl n aller Rechner, enthält jede Lesegruppe mindestens einen Rechner mit dem neuesten Wert.
Beispiel: fünf Rechner und drei Einstellungen
| Schreiben w | Lesen r | w plus r | Überlappung sicher? |
|---|---|---|---|
| 3 | 3 | 6 | ja, denn 6 ist größer als 5 |
| 2 | 2 | 4 | nein, denn 4 ist nicht größer als 5 |
| 5 | 1 | 6 | ja, aber ein Ausfall stoppt das Schreiben |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.