webentwicklung-frage-antwort-db.com.de

Warum brauchen wir einen "Arbiter" in der MongoDB-Replikation?

Angenommen, wir richten eine MongoDB-Replikation ohne Arbiter ein. Wenn die primäre nicht verfügbar ist, wählt der Replikatsatz eine sekundäre zur primären. Also ich denke, es ist eine Art von implizit Arbiter, da das Replikat eine primäre automatisch wählt.

Ich frage mich also, warum wir einen dedizierten Arbiter-Knoten benötigen. Vielen Dank!

Dies hängt wirklich mit dem CAP-Theorem zusammen, wonach angegeben wird, dass die Datenbank bei gleicher Anzahl von Servern auf beiden Seiten der Partition kein CAP (Konsistenz, Verfügbarkeit und Partitionstoleranz) verwalten kann. Ein Schiedsrichter ist speziell so konzipiert, dass auf einer Seite ein "Ungleichgewicht" oder eine Mehrheit entsteht, so dass in diesem Fall ein Primarbereich gewählt werden kann.

Wenn Sie auf beiden Seiten eine gerade Anzahl von Knoten erhalten, wählt MongoDB keine primäre und Ihr Set akzeptiert keine Schreibvorgänge.

Bearbeiten

Mit jeder Seite meine ich zum Beispiel 2 auf der einen und 2 auf der anderen Seite. Mein Englisch war dort nicht leicht zu verstehen.

Also meine ich wirklich beide Seiten.

Bearbeiten

Wikipedia ist ein gutes Beispiel für die Erklärung der GAP: http://en.wikipedia.org/wiki/CAP_theorem

7
Sammaye

Ich habe eine Tabelle erstellt , um den Effekt von Arbiter-Knoten in einem Replikatssatz besser zu veranschaulichen.

 enter image description here

Im Grunde kommt es auf diese Punkte an:

  1. Mit einem RS von 2 Datenknoten, wenn Sie 1 Server verlieren, unterschreiten Sie Ihr Abstimmungsminimum (das "größer als N/2" ist). Ein Schiedsrichter löst dieses Problem.
  2. Mit einem RS von gerade nummerierte Datenknoten, erhöht das Hinzufügen eines Arbiters Ihre Fehlertoleranz um 1, ohne dass aufgrund einer Aufteilung 2 Abstimmungscluster möglich sind.
  3. Mit einem RS von ungeradzahlige Datenknoten, würde das Hinzufügen eines Arbiters ermöglichen, dass ein Split 2 isolierte Cluster mit "mehr als N/2" Stimmen und daher einem Split-Brain-Szenario erzeugt.

Wahlen werden [schlecht] ausführlich erklärt hier . In diesem Dokument ist es Staatendass eine RS 50 Mitglieder (gerade Zahl) und 7 stimmberechtigte Mitglieder haben kann. Ich betone "Staaten", weil es nicht erklärenwie es funktioniert. Mir scheint, dass wenn Sie Wenn eine Aufteilung mit 4 Mitgliedern (alle Stimmen) auf der einen Seite und 46 Mitgliedern (3 Stimmen) auf der anderen Seite stattfindet, ist es besser, wenn die 46 eine primäre und die 4 eine Nur-Lese-Gruppe auswählen In dieser Situation haben Sie einen Cluster mit 4 Mitgliedern, einem primären Cluster und einem Cluster mit 46 Mitgliedern, die nur lesbar sind. Es liegt außerhalb des Rahmens dieser Frage und meines Wissens, zu erklären, wie sinnvoll dies ist.

6
Bruno Bronosky

Schiedsrichter sind ein optional Mechanismus, der eine erfolgreiche Abstimmung ermöglicht, wenn eine gerade Anzahl von Mongods in einem Replikatsatz bereitgestellt ist. Schiedsrichter sind leichtgewichtig und sollen auf einem Server bereitgestellt werden, der KEIN dediziertes Mongo-Replikat ist, d. H. Die Hauptaufgabe des Servers ist eine andere Aufgabe, wie z. Da sie leicht sind, beeinträchtigen sie die Ressourcen des Systems nicht (merklich).

Aus den Dokumenten:

Ein Arbiter verfügt nicht über eine Kopie des Datensatzes und kann kein primärer Arbiter werden. Replikatsätze können über Schiedsrichter verfügen, die bei Wahlen für die Primarstufe eine Stimme hinzufügen. Arbiter ermöglichen, dass Replikatsätze eine ungerade Anzahl von Mitgliedern haben, ohne den Overhead eines Mitglieds, das Daten repliziert.

2
Adil

Es ist aus den folgenden Gründen erforderlich, einen Schiedsrichter in einer Replikation zu haben:

  • Die Replikation ist zuverlässiger, wenn die Anzahl der Replikatsätze ungerade ist. In dem Fall, dass es eine gerade Anzahl von Replikatsätzen gibt, ist es besser, der Replikation einen Arbiter hinzuzufügen.
  • In den Schiedsrichtern sind Daten enthalten, und sie müssen nur bei der Wahl abstimmen, wenn ein Knoten ausfällt.
  • Arbiter ist ein leichter Prozess, bei dem nicht viel Hardware verbraucht wird.
  • Die Schiedsrichter tauschen lediglich die Benutzeranmeldeinformationen zwischen den Replikatsätzen aus, die verschlüsselt sind.
  • Abstimmungen während Wahlen, Hearbeats und Konfigurationsdaten werden bei der Kommunikation zwischen den Replikatsätzen nicht verschlüsselt.
  • Es ist besser, den Arbiter auf einem separaten Computer auszuführen, als zusammen mit einem der Replikatsätze, um die hohe Verfügbarkeit beizubehalten.

Hoffe das hilft !!!

1
JERRY