Beispiel aus der realen Welt von Paxos

9

Kann mir jemand ein realistisches Beispiel dafür geben, wie der Paxos-Algorithmus in einer verteilten Datenbank verwendet wird? Ich habe viele Artikel über Paxos gelesen, die den Algorithmus erklären, aber keiner von ihnen erklärt wirklich mit einem tatsächlichen Beispiel.

Ein einfaches Beispiel könnte eine Bankanwendung sein, bei der ein Konto durch mehrere Sitzungen modifiziert wird (d. h. eine Einzahlung bei einem Kassierer, eine Debitoperation usw.). Wird Paxos zuerst entscheiden, welche Operation zuerst stattfindet? Was bedeutet das auch für mehrere Instanzen des Paxos-Protokolls? Wie ist wann wird das verwendet? Im Grunde versuche ich alles durch ein konkretes Beispiel und nicht durch abstrakte Begriffe zu verstehen.

    
sjg 08.05.2012, 19:08
quelle

2 Antworten

5

Zum Beispiel haben wir MapReduce-System, wo Master aus 3 Hosts besteht. Einer ist Meister und andere sind Sklaven. Die Vorgehensweise bei der Auswahl von Master verwendet den Paxos-Algorithmus.

Auch Chubby von Google Big Table verwendet Paxos: Der Chubby Lock-Dienst für lose gekoppelte verteilte Systeme , < a href="http://research.google.com/archive/bigtable.html"> Bigtable: Ein verteiltes Speichersystem für strukturierte Daten

    
Alexander 08.05.2012 19:14
quelle
0

Die Clustrix -Datenbank ist eine verteilte Datenbank, die Paxos im Transaktionsmanager verwendet. Paxos wird von den Interna der Datenbank verwendet, um Nachrichten zu koordinieren und die Transaktionsatomizität in einem verteilten System zu erhalten.

  • Der Koordinator ist der Knoten, von dem die Transaktion stammt
  • Teilnehmer sind die Knoten, die die Datenbank im Auftrag von
  • geändert haben
  • die Transaktion Leser sind Knoten, die Code im Auftrag der. ausgeführt haben Transaktion, aber änderte keinen Status
  • Acceptoren sind die Knoten, die den Status der Transaktion protokollieren.

Die folgenden Schritte werden ausgeführt, wenn ein Transaktions-Commit ausgeführt wird:

  1. Der Koordinator sendet eine PREPARE-Nachricht an jeden Teilnehmer.
  2. Die Teilnehmer sperren den Transaktionszustand. Sie senden VORBEREITETE Nachrichten zurück an den Koordinator.
  3. Koordinator sendet ACCEPT-Nachrichten an Acceptors.
  4. Die Acceptors protokollieren die Mitgliedschafts-ID, die Transaktion, die Commit-ID und die Teilnehmer. Sie senden AKZEPTIERTE Nachrichten an den Koordinator zurück.
  5. Koordinator teilt dem Benutzer mit, dass die Übertragung erfolgreich war.
  6. Koordinator sendet COMMIT-Nachrichten an jeden Teilnehmer und Leser.
  7. Die Teilnehmer und Leser bestätigen die Transaktion und aktualisieren den Transaktionszustand entsprechend. Sie senden COMMITTED-Nachrichten zurück an den Koordinator.
  8. Der Koordinator entfernt den internen Status und ist nun fertig.

Dies ist für die Anwendung transparent und in den internen Daten der Datenbank implementiert. Für Ihre Banking-Anwendung müsste die Anwendungsebene also die Ausnahmebehandlung für Deadlock-Konflikte durchführen. Der andere Schlüssel für die Skalierung einer Datenbank ist die Parallelität, die im Allgemeinen über MVCC (Multi-Version Concurrency Control) unterstützt wird.

    
clieu 25.03.2013 16:53
quelle