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.
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.
Wikipedia ist ein gutes Beispiel für die Erklärung der GAP: http://en.wikipedia.org/wiki/CAP_theorem
Ich habe eine Tabelle erstellt , um den Effekt von Arbiter-Knoten in einem Replikatssatz besser zu veranschaulichen.
Im Grunde kommt es auf diese Punkte an:
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.
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.
Es ist aus den folgenden Gründen erforderlich, einen Schiedsrichter in einer Replikation zu haben:
Hoffe das hilft !!!