Konsul - Architektur
Das Architekturdiagramm für Konsul, der in einem Rechenzentrum arbeitet, kann am besten wie folgt beschrieben werden:
Wie wir beobachten können, gibt es drei verschiedene Server, die vom Konsul verwaltet werden. Die Arbeitsarchitektur arbeitet mit dem Raft-Algorithmus, der uns hilft, einen Leader aus den drei verschiedenen Servern auszuwählen. Diese Server werden dann entsprechend den Tags wie gekennzeichnetFollower und Leader. Wie der Name schon sagt, ist der Anhänger dafür verantwortlich, die Entscheidungen des Führers zu befolgen. Alle diese drei Server sind für jede Kommunikation miteinander verbunden.
Jeder Server interagiert mit seinem eigenen Client unter Verwendung des RPC-Konzepts. Die Kommunikation zwischen den Kunden ist aufgrund von möglichGossip Protocolwie unten erwähnt. Die Kommunikation mit der Interneteinrichtung kann über TCP oder die Klatschmethode der Kommunikation bereitgestellt werden. Diese Kommunikation steht in direktem Kontakt mit einem der drei Server.
Floß-Algorithmus
Raft ist ein Konsensalgorithmus zum Verwalten eines replizierten Protokolls. Es beruht auf dem Prinzip vonCAP TheoremDies besagt, dass bei Vorhandensein einer Netzwerkpartition zwischen Konsistenz und Verfügbarkeit gewählt werden muss. Nicht alle drei Grundlagen des GAP-Theorems können zu einem bestimmten Zeitpunkt erreicht werden. Man muss bestenfalls zwei davon abwägen.
EIN Raft Clusterenthält mehrere Server, normalerweise in der ungeraden Anzahl. Wenn wir beispielsweise fünf Server haben, kann das System zwei Fehler tolerieren. Jeder Server befindet sich zu einem bestimmten Zeitpunkt in einem der drei folgenden Zustände:Leader, Follower, oder Candidate. In einem normalen Betrieb gibt es genau einen Leader und alle anderen Server sind Follower. Diese Anhänger befinden sich in einem passiven Zustand, dh sie stellen keine eigenen Anfragen, sondern antworten einfach auf Anfragen von Führungskräften und Kandidaten.
Die folgende Abbildung beschreibt das Workflow-Modell, mit dem der Raft-Algorithmus funktioniert.
Schlüsselwertdaten
Seit der Version 0.7.1 des Konsuls wurden separate Schlüsselwertdaten eingeführt. Der KV-Befehl wird verwendet, um über die Befehlszeile mit dem Schlüsselwertspeicher des Konsuls zu interagieren. Es macht Befehle der obersten Ebene für verfügbarInserting, Updating, Reading und Deletingaus dem Laden. Um den Schlüssel / Wert-Objektspeicher zu erhalten, rufen wir die KV-Methode auf, die für den Konsul-Client verfügbar ist.
kv := consul.KV()
Das KVPair Structurewird verwendet, um einen einzelnen Schlüssel- / Werteintrag darzustellen. Wir können die Struktur von Consul KV Pair im folgenden Programm sehen.
type KVPair struct {
Key string
CreateIndex uint64
ModifyIndex uint64
LockIndex uint64
Flags uint64
Value []byte
Session string
}
Hier können die verschiedenen im obigen Code erwähnten Strukturen wie folgt definiert werden:
Key- Es ist ein Schrägstrich-URL-Name. Zum Beispiel - sites / 1 / domain.
CreateIndex - Indexnummer, die beim ersten Erstellen des Schlüssels vergeben wurde.
ModifyIndex - Indexnummer, die bei der letzten Aktualisierung des Schlüssels vergeben wurde.
LockIndex - Indexnummer, die erstellt wird, wenn ein neues Schloss für die Schlüssel- / Werteingabe erworben wurde
Flags - Es kann von der App verwendet werden, um den benutzerdefinierten Wert festzulegen.
Value - Es handelt sich um ein Byte-Array mit maximal 512 KB.
Session - Sie kann nach dem Erstellen eines Sitzungsobjekts festgelegt werden.
Arten von Protokollen
In Consul gibt es zwei Arten von Protokollen, die als - bezeichnet werden.
- Konsensprotokoll und
- Klatschprotokoll
Lassen Sie uns sie jetzt im Detail verstehen.
Konsensprotokoll
Das Konsensprotokoll wird vom Konsul verwendet, um Konsistenz zu gewährleisten, wie im CAP-Theorem beschrieben. Dieses Protokoll basiert auf dem Raft-Algorithmus. Bei der Implementierung des Konsensprotokolls wird der Floßalgorithmus verwendet, bei dem sich Floßknoten immer in einem der drei Zustände befinden: Follower, Kandidat oder Leader.
Klatschprotokoll
Das Klatschprotokoll kann verwendet werden, um die Mitgliedschaft zu verwalten, Nachrichten im gesamten Cluster zu senden und zu empfangen. Im Konsul erfolgt die Verwendung des Klatschprotokolls auf zwei Arten:WAN (Wireless Area Network) und LAN(Lokales Netzwerk). Es sind drei Bibliotheken bekannt, die einen Gossip-Algorithmus implementieren können, um Knoten in einem Peer-to-Peer-Netzwerk zu erkennen.
teknek-gossip - Es funktioniert mit UDP und ist in Java geschrieben.
gossip-python - Es verwendet den TCP-Stack und es ist auch möglich, Daten über das aufgebaute Netzwerk zu teilen.
Smudge - Es ist in Go geschrieben und verwendet UDP zum Austausch von Statusinformationen.
Klatschprotokolle wurden auch verwendet, um eine verteilte Datenbankkonsistenz oder mit anderen Datentypen in konsistenten Zuständen zu erreichen und aufrechtzuerhalten, die Anzahl der Knoten in einem Netzwerk unbekannter Größe zu zählen, Nachrichten robust zu verbreiten, Knoten zu organisieren usw.
Remote Procedure Calls
Der RPC kann als Kurzform für Remote Procedure Calls bezeichnet werden. Es ist ein Protokoll, mit dem ein Programm einen Dienst von einem anderen Programm anfordert. Dieses Protokoll kann sich auf einem anderen Computer in einem Netzwerk befinden, ohne dass die Netzwerkdetails bestätigt werden müssen.
Das Schöne an der Verwendung von RPC in Consul ist, dass es uns hilft, die Latenzprobleme zu vermeiden, die die meisten Discovery Service-Tools vor einiger Zeit hatten. Vor RPC hatte Consul nurTCP und UDPbasierte Verbindungen, die mit den meisten Systemen gut waren, aber nicht mit verteilten Systemen. RPC löst solche Probleme, indem die Zeitdauer der Übertragung von Paketinformationen von einem Ort zu einem anderen verkürzt wird. In diesem Bereich ist GRPC von Google ein großartiges Tool, um sich auf den Fall zu freuen, dass man Benchmarks beobachten und die Leistung vergleichen möchte.