


[Empfohlene Sammlung] Seelenfolter! Die 31-Schuss-Kanone des Tierpflegers
Zusammenfassung des Zookeeper-Kernwissens
Bitte lesen Sie den Titel
Was ist ZooKeeper? Was bietet ZooKeeper? Zookeeper-Dateisystem Wie stellt Zookeeper sicher, dass der Status von Master- und Slave-Knoten synchronisiert ist? Vier Arten von Datenknoten Znode Zookeeper Watcher-Mechanismus – Benachrichtigung über Datenänderungen Wie wird der Client-Registrierungs-Watcher implementiert? Wie implementiert man die serverseitige Verarbeitung von Watcher? Wie ruft der Kunde Watcher zurück? Sind Sie mit dem ACL-Berechtigungskontrollmechanismus vertraut? Kennen Sie die Chroot-Funktionen? Kennen Sie sich mit der Sitzungsverwaltung aus? Welche Rollen hat der Server? Server-Arbeitsstatus unter Zookeeper Wie werden die Daten synchronisiert? Wie stellt zookeeper die sequentielle Konsistenz von Transaktionen sicher? Warum gibt es einen Masterknoten in einem verteilten Cluster? zk Wie gehe ich mit Knotenausfallzeiten um? Der Unterschied zwischen Zookeeper-Lastausgleich und Nginx-Lastausgleich Was sind die Bereitstellungsmodi von Zookeeper? Wie viele Maschinen ist für einen Cluster mindestens erforderlich? Was sind die Clusterregeln? Es gibt 3 Server im Cluster und einer der Knoten ist ausgefallen. Kann Zookeeper zu diesem Zeitpunkt noch verwendet werden? Unterstützt der Cluster das dynamische Hinzufügen von Maschinen? Sind die Überwachungsbenachrichtigungen von Zookeeper für Knoten dauerhaft? Warum nicht dauerhaft? Was sind die Java-Clients von Zookeeper? Was ist mollig und wie vergleicht man es mit Tierpfleger? Lassen Sie uns über einige häufig verwendete Befehle von zookeeper sprechen. Was sind die Zusammenhänge und Unterschiede zwischen ZAB- und Paxos-Algorithmen? Typische Anwendungsszenarien von Zookeeper Welche Funktionen hat Zookeeper? Erzählen Sie mir etwas über den Benachrichtigungsmechanismus von Zookeeper? Die Beziehung zwischen Zookeeper und Dubbo?
Wie viele Antworten kannst du geben?
1. Was ist ZooKeeper?
ZooKeeper ist ein verteilter Open-Source-Koordinierungsdienst. Es handelt sich um eine Software, die Konsistenzdienste für verteilte Anwendungen bereitstellt. Verteilte Anwendungen können Aufgaben wie Datenveröffentlichung/-abonnement, Lastausgleich, Benennungsdienst, verteilte Koordination/Benachrichtigung, Clusterverwaltung, Master-Wahl, verteilte Sperren und verteilte Warteschlangen sowie andere Funktionen implementieren.
Das Ziel von ZooKeeper besteht darin, komplexe und fehleranfällige Schlüsseldienste zu kapseln und Benutzern einfache und benutzerfreundliche Schnittstellen sowie ein System mit effizienter Leistung und stabilen Funktionen bereitzustellen.
Zookeeper garantiert die folgenden verteilten Konsistenzfunktionen:
Sequentielle Konsistenz Atomizität Einzelansicht Zuverlässigkeit Echtzeit (eventuelle Konsistenz). )
Die Lektüre des Kunden Die Anfrage kann von jedem Computer im Cluster verarbeitet werden. Wenn für die Leseanforderung ein Listener auf dem Knoten registriert ist, wird dieser Listener auch vom verbundenen Zookeeper-Computer verarbeitet. Bei Schreibanfragen werden diese Anfragen gleichzeitig an andere Zookeeper-Maschinen gesendet und erst nach Erreichen eines Konsenses wird die Anfrage erfolgreich zurückgegeben. Wenn daher die Anzahl der Zookeeper-Cluster-Maschinen zunimmt, steigt der Durchsatz der Leseanforderungen, der Durchsatz der Schreibanforderungen nimmt jedoch ab.
Ordnung ist eine sehr wichtige Funktion in Zookeeper. Alle Updates werden global geordnet. Dieser Zeitstempel heißt zxid (Zookeeper-Transaktions-ID). Die Leseanforderung ist nur in der Reihenfolge der Aktualisierung, das heißt, das Rückgabeergebnis der Leseanforderung enthält die neueste ZXID des Zookeepers.
2. Was bietet ZooKeeper? 3. Zookeeper-Dateisystem Knoten ). Anders als im Dateisystem können diese Knoten zugehörige Daten festlegen. Im Dateisystem können nur die Dateiknoten Daten speichern, nicht jedoch die Verzeichnisknoten. Willkommen bei der"
- Interview-Kolumne
", um weitere Interview- trockene Informationenzu erhalten.
4. Wie stellt Zookeeper die Statussynchronisation von Master- und Slave-Knoten sicher?
Der Kern von Zookeeper ist der atomare Broadcast-Mechanismus, der die Synchronisierung zwischen Servern gewährleistet. Das Protokoll, das diesen Mechanismus implementiert, wird Zab-Protokoll genannt. Das Zab-Protokoll verfügt über zwei Modi, nämlich den Wiederherstellungsmodus und den Broadcast-Modus.
Wiederherstellungsmodus
Wenn der Dienst startet oder nachdem der Anführer abstürzt, wechselt Zab in den Wiederherstellungsmodus. Wenn der Anführer ausgewählt wird und die meisten Server die Statussynchronisierung mit dem Anführer abschließen, endet der Wiederherstellungsmodus. Durch die Statussynchronisierung wird sichergestellt, dass Leader und Server denselben Systemstatus haben.
Broadcast-Modus
Sobald der Anführer seinen Status mit der Mehrheit der Follower synchronisiert hat, kann er mit dem Senden von Nachrichten beginnen, d. h. er wechselt in den Broadcast-Status. Wenn zu diesem Zeitpunkt ein Server dem ZooKeeper-Dienst beitritt, startet er im Wiederherstellungsmodus, erkennt den Anführer und synchronisiert seinen Status mit dem Anführer. Wenn die Synchronisierung abgeschlossen ist, nimmt es auch an der Nachrichtenübertragung teil. Der ZooKeeper-Dienst bleibt im Broadcast-Status, bis der Anführer abstürzt oder der Anführer den größten Teil seiner Follower-Unterstützung verliert.
5. Lassen Sie uns darüber sprechen, welche Datenknoten Zookeeper hat EPHE MERAL – vorübergehend Knoten
- Der Lebenszyklus temporärer Knoten ist an die Client-Sitzung gebunden (die Trennung zwischen Client und Zookeeper bedeutet nicht unbedingt, dass die Sitzung abläuft), dann werden alle von diesem Client erstellten temporären Knoten ablaufen entfernt werden.
-
PERSISTENT_SEQUENTIAL – Persistenter sequenzieller Knoten
- Die Grundfunktionen sind die gleichen wie beim persistenten Knoten, außer dass das Sequenzattribut hinzugefügt wird, das vom übergeordneten Knoten verwaltet wird Knotenname.
- EPHEMERAL_SEQUENTIAL – Temporärer sequentieller Knoten
- Grundlegende Funktionen sind die gleichen wie bei temporären Knoten, mit dem Zusatz von Sequenzattributen, die vom übergeordneten Knoten verwaltet werden und an den Knotennamen angehängt werden.
-
6. Lassen Sie uns über den Zookeeper-Watcher-Mechanismus sprechen
Zookeeper ermöglicht es dem Client, einen Watcher bei einem Znode auf dem Server zu registrieren. Wenn bestimmte Ereignisse auf dem Server diesen Watcher auslösen, sendet der Server eine Nachricht An den angegebenen Client wird eine Ereignisbenachrichtigung verwendet, um die verteilte Benachrichtigungsfunktion zu implementieren. Anschließend nimmt der Client Geschäftsänderungen basierend auf dem Watcher-Benachrichtigungsstatus und dem Ereignistyp vor. Folgen Sie gerne der „Interview-Kolumne“, um weitere Tipps für Vorstellungsgespräche zu erhalten.
Arbeitsmechanismus:
(1) Client registriert Beobachter
(2) Server verarbeitet Beobachter
(3) Client ruft Beobachter zurück
Beobachter Funktionsübersicht:
(1) Einmalig
Ganz egal ein Dienst Egal, ob es sich um den Client oder den Client handelt: Sobald ein Watcher ausgelöst wird, entfernt Zookeeper ihn aus dem entsprechenden Speicher. Dieses Design reduziert effektiv den Druck auf den Server. Andernfalls sendet der Server bei Knoten, die sehr häufig aktualisiert werden, kontinuierlich Ereignisbenachrichtigungen an den Client, was sowohl das Netzwerk als auch den Server stark belastet.
(2) Serielle Client-Ausführung
Der Prozess des Client-Watcher-Rückrufs ist ein serieller Synchronisationsprozess.
(3) Lightweight
3.1. Die Watcher-Benachrichtigung ist sehr einfach. Sie teilt dem Kunden nur mit, dass ein Ereignis aufgetreten ist, erklärt jedoch nicht den spezifischen Inhalt des Ereignisses.
3.2. Wenn der Client einen Watcher beim Server registriert, übergibt er die tatsächliche Watcher-Objektentität des Clients nicht an den Server. Sie wird in der Clientanforderung nur mit einem booleschen Typattribut gekennzeichnet.
(4) Watcher-Ereignis wird asynchron gesendet
Das Watcher-Benachrichtigungsereignis wird asynchron vom Server an den Client gesendet. Dies führt zu einem Problem, das durch Netzwerkverzögerungen oder andere Faktoren verursacht werden kann. Der Client überwacht Ereignisse zu nicht verfügbaren Zeiten, da Zookeeper selbst eine Bestellgarantie bietet, d. h. erst nachdem der Client das Ereignis überwacht hat, erkennt er Änderungen im überwachten Znode. Wenn wir Zookeeper verwenden, können wir daher nicht erwarten, jede Änderung des Knotens überwachen zu können. Zookeeper kann nur eine letztendliche Konsistenz garantieren, jedoch keine starke Konsistenz.
(5) Watcher „getData“ registrieren, existiert, „getChildren“
(6) Watcher „erstellen, löschen, setData“ auslösen
(7) Wenn ein Client eine Verbindung zu einem neuen Server herstellt, wird die Überwachung durch jedes Sitzungsereignis ausgelöst. Wenn die Verbindung zu einem Server unterbrochen wird, können keine Uhren empfangen werden. Wenn sich der Client erneut verbindet, werden bei Bedarf alle zuvor registrierten Uhren erneut registriert. Normalerweise ist dies völlig transparent. Es gibt nur einen Sonderfall, in dem eine Überwachung verloren gehen kann: Bei einer vorhandenen Überwachung auf einem nicht erstellten Knoten kann dieses Überwachungsereignis verloren gehen, wenn sie erstellt wurde, während die Verbindung zum Client getrennt und anschließend gelöscht wurde.
7. Wie der Client die Watcher-Implementierung registriert
(1) Rufen Sie die drei APIs getData()/getChildren()/exist() auf und übergeben Sie das Watcher-Objekt
(2) Markieren Sie die Anfrage Anfrage, kapseln Sie den Watcher in WatchRegistration
(3) Kapseln Sie ihn in ein Packet-Objekt, senden Sie die Anfrage an den Server
(4) Nachdem Sie die Antwort vom Server erhalten haben, registrieren Sie den Watcher bei ZKWatcherManager zur Verwaltung
(5) Die Anfrage wird zurückgegeben und die Registrierung ist abgeschlossen.
8. Wie der Server die Watcher-Implementierung handhabt
(1) Der Server empfängt den Watcher und speichert ihn
Empfängt die Client-Anfrage, verarbeitet die Anfrage, um festzustellen, ob der Watcher registriert werden muss, und Bei Bedarf werden der Datenknotenknotenpfad und ServerCnxn (ServerCnxn stellt eine Verbindung zwischen Client und Server dar, implementiert die Prozessschnittstelle von Watcher und kann zu diesem Zeitpunkt als Watcher-Objekt betrachtet werden) in WatchTable und watch2Paths von WatcherManager gespeichert . 2) Watcher-Trigger Pfad zu einem WatchedEvent-Objekt
2.4 Suchen; extrahieren und löschen Sie den entsprechenden Watcher aus WatchTable und Watch2Paths (hier ist ersichtlich, dass der Watcher einmalig auf der Serverseite ist und nach einmaligem Auslösen ungültig wird)
(3) Rufen Sie die Prozessmethode auf Den Watcher auslösen
Hier ist der Prozess. Der Hauptzweck besteht darin, Watcher-Ereignisbenachrichtigungen über die TCP-Verbindung zu senden, die ServerCnxn entspricht.
9. Wie der Client den Watcher zurückruft
Der SendThread-Thread des Clients empfängt die Ereignisbenachrichtigung und der EventThread-Thread ruft den Watcher zurück.
Der Watcher-Mechanismus des Clients ist ebenfalls einmalig. Sobald er ausgelöst wird, wird der Watcher ungültig.
10. Sind Sie mit dem ACL-Berechtigungskontrollmechanismus vertraut?
UGO (Benutzer/Gruppe/Andere)
wird derzeit in Linux/Unix-Dateisystemen verwendet und ist auch die am weitesten verbreitete Methode zur Berechtigungskontrolle. Es handelt sich um einen grobkörnigen Dateisystem-Berechtigungskontrollmodus.
ACL (Access Control List) Zugriffskontrollliste
umfasst drei Aspekte:
Berechtigungsmodus (Schema)
(1) IP: Berechtigungskontrolle anhand der IP-Adressgranularität
(2) Digest: Am häufigsten Verwendet werden Berechtigungen mithilfe von Berechtigungskennungen ähnlich wie Benutzername:Passwort konfiguriert, was zur Unterscheidung verschiedener Anwendungen zur Berechtigungskontrolle geeignet ist
(3) Welt: Die offenste Berechtigungskontrollmethode, ein spezieller Digest-Modus mit nur einer Berechtigungsidentifikation „Welt: Jeder“
(4) Super: Superuser
Autorisierungsobjekt
Das Autorisierungsobjekt bezieht sich auf den Benutzer oder eine bestimmte Entität, der die Berechtigung erteilt wurde, beispielsweise eine IP-Adresse oder eine Maschinenleuchte.
Berechtigung
(1) CREATE: Berechtigung zum Erstellen von Datenknoten, die es autorisierten Objekten erlaubt, unter diesem Znode untergeordnete Knoten zu erstellen
(2) DELETE: Berechtigung zum Löschen von untergeordneten Knoten, die es autorisierten Objekten erlaubt, die untergeordneten Knoten dieser Daten zu löschen Knoten Knoten
(3) LESEN: Leseberechtigung des Datenknotens, wodurch das autorisierte Objekt auf den Datenknoten zugreifen und dessen Dateninhalt oder Unterknotenliste usw. lesen kann.
(4) SCHREIBEN: Aktualisierungsberechtigung der Daten Knoten, der es dem autorisierten Objekt ermöglicht, Aktualisierungsvorgänge durchzuführen Feature
Durch die Einrichtung von Chroot kann ein Client auf einen Teilbaum des Zookeeper-Servers angewendet werden. In Szenarien, in denen mehrere Anwendungen einen Zookeeper in der Gruppe teilen, ist es sehr hilfreich, eine gegenseitige Isolierung zwischen verschiedenen Anwendungen zu erreichen.
12. Kennen Sie sich mit der Sitzungsverwaltung aus?
Bucketing-Strategie: Legen Sie ähnliche Sitzungen zur Verwaltung in den gleichen Block, damit Zookeeper Sitzungen in verschiedenen Blöcken und im gleichen Block isolieren kann.Berechnungsformel: ExpirationTime_ = currentTime + sessionTimeout
ExpirationTime = (ExpirationTime_ / ExpirationInrerval + 1) *ExpirationInterval, ExpirationInterval bezieht sich auf die Zookeeper-Sitzung Timeout-Prüfintervall, Standard tickTime13. Welche Rollen hat der Server? Leiter
(1) Der einzige Planer und Prozessor von Transaktionsanforderungen, der die Reihenfolge der Cluster-Transaktionsverarbeitung sicherstellt. (2) Der Planer jedes Dienstes innerhalb des Clusters
Follower
(1) Nicht-Transaktionsanfragen von Clients verarbeiten und Transaktionsanfragen an den Leader-Server weiterleiten
(2) An der Abstimmung von Transaktionsanforderungsvorschlägen teilnehmen
(3) An der Leader-Wahlabstimmung teilnehmen
Observer
(1) Version 3.0 Eine Serverrolle wird später eingeführt, um die Nicht-Transaktionsverarbeitungsfunktionen des Clusters zu verbessern, ohne die Transaktionsverarbeitungsfunktionen des Clusters zu beeinträchtigen
(2) Verarbeiten Sie die Nicht-Transaktionsanforderungen des Clients und leiten Sie Transaktionsanforderungen an den weiter Leader-Server
(3) Nehmen Sie an keiner Form der Abstimmung teil
14. Server-Arbeitsstatus unter Zookeeper(2) FOLGEND: Follower-Status. Zeigt an, dass die aktuelle Serverrolle „Follower“ ist.
(3) FÜHREND: Führungsstatus. Zeigt an, dass die aktuelle Serverrolle Leader ist.
(4) BEOBACHTEN: Beobachterstatus. Gibt an, dass die aktuelle Serverrolle Beobachter ist.
15. Können Sie mir sagen, wie die Daten synchronisiert werden?
Nachdem der gesamte Cluster die Leader-Wahl abgeschlossen hat, registriert sich der Lernende (der Sammelname von Follower und Observer) wieder beim Leader-Server. Nachdem der Learner-Server die Registrierung beim Leader-Server abgeschlossen hat, tritt er in die Datensynchronisierungsphase ein.
Datensynchronisationsprozess: (alles wird durch Messaging durchgeführt)
Lerner registriert sich bei Learder
Datensynchronisation
Synchronisationsbestätigung
Die Datensynchronisation von Zookeeper ist normalerweise in vier Kategorien unterteilt:
(1) Direkte differenzielle Synchronisation (DIFF-Synchronisation)
(2) Zuerst Rollback und dann differenzielle Synchronisierung (TRUNC+DIFF-Synchronisierung)
(3) Nur Rollback-Synchronisierung (TRUNC-Synchronisierung)
(4) Vollständige Synchronisierung (SNAP-Synchronisierung)
In Bearbeitung Vor der Datensynchronisierung der Leader Der Server vervollständigt die Initialisierung der Datensynchronisation:
PeerLastzxid:
extract lastzxid (der letzte vom Lernerverfahren verarbeitete ZXID) aus der ACKEPOCH in der Vorschlags-Cache-Warteschlange des Leader-Servers commitedLog maxCommittedLog:
Maximale ZXID in der Vorschlags-Cache-Warteschlange des Leader-Servers commitedLog Direkte differenzielle Synchronisation (DIFF-Synchronisation)
Szenario: peerLastZxid liegt zwischen minCommittedLog und maxCommittedLog, zuerst Rollback und dann differenzielle Synchronisation ( (TRUNC+DIFF-Synchronisierung) -
Szenario: Wenn der neue Leader-Server feststellt, dass ein Learner-Server einen Transaktionsdatensatz enthält, den er nicht hat, muss er den Learner-Server veranlassen, ein Transaktions-Rollback durchzuführen – Rollback zum Leader ZXID, die auf dem Server vorhanden ist und peerLastZxid am nächsten kommt, setzt nur die Synchronisierung zurück (TRUNC-Synchronisierung) Szenario: peerLastZxid ist größer als maxCommittedLog Szenario 1: peerLastZxid ist kleiner als minCommittedLog Szenario 2: Es gibt keinen Vorschlagscache Warteschlange auf dem Leader-Server und peerLastZ xid ist nicht gleich lastProcessZxid - Cluster-Bereitstellung: Ausführung auf mehreren Clustern;
- Pseudo-Cluster-Bereitstellung: Starten mehrerer Cluster auf Ein Cluster Die Zookeeper-Instanz wird ausgeführt.
- 21. Wie viele Maschinen sind mindestens für einen Cluster erforderlich? Es gibt 3 Server im Cluster und einer der Knoten ist ausgefallen. Kann Zookeeper zu diesem Zeitpunkt noch verwendet werden?
Vollständige Synchronisierung (SNAP-Synchronisierung)
16 Wie stellt zookeeper die sequentielle Konsistenz von Transaktionen sicher?
zookeeper verwendet eine global inkrementelle Transaktions-ID, um sie zu identifizieren. Wenn sie vorgeschlagen werden, handelt es sich bei zxid um eine 64-Bit-Zahl, und die oberen 32 Bits sind Epoche; ; neue Ära) wird verwendet, um den Leader-Zyklus zu identifizieren. Wenn ein neuer Leader generiert wird, wird die Epoche automatisch erhöht und die unteren 32 Bits werden zum Erhöhen der Anzahl verwendet. Wenn ein neuer Vorschlag generiert wird, wird basierend auf dem zweistufigen Prozess der Datenbank zunächst eine Transaktionsausführungsanforderung an andere Server ausgegeben. Wenn mehr als die Hälfte der Maschinen ihn erfolgreich ausführen können, beginnt die Ausführung.
17. Warum gibt es einen Masterknoten in einem verteilten Cluster?
In einer verteilten Umgebung müssen einige Geschäftslogiken nur von einer bestimmten Maschine im Cluster ausgeführt werden, und andere Maschinen können die Ergebnisse teilen, was wiederholte Berechnungen erheblich reduzieren und die Leistung verbessern kann, sodass eine Wahl des Leiters erforderlich ist. .
18. Wie gehe ich mit Ausfallzeiten des ZK-Knotens um?
Zookeeper selbst ist ebenfalls ein Cluster und es wird empfohlen, nicht weniger als 3 Server zu konfigurieren. Zookeeper selbst muss auch sicherstellen, dass andere Knoten weiterhin Dienste bereitstellen, wenn ein Knoten ausfällt.
Wenn ein Follower ausfällt, gibt es immer noch 2 Server, die den Zugriff ermöglichen. Da es mehrere Kopien der Daten auf Zookeeper gibt, gehen die Daten nicht verloren.
Wenn ein Leader ausfällt, wählt Zookeeper einen neuen Leader.
Der Mechanismus des ZK-Clusters besteht darin, dass der Cluster Dienste normal bereitstellen kann, solange mehr als die Hälfte der Knoten normal sind. Der Cluster schlägt nur dann fehl, wenn zu viele ZK-Knoten vorhanden sind und nur die Hälfte oder weniger als die Hälfte der Knoten funktionieren kann.
Also
Ein Cluster aus 3 Knoten kann 1 Knoten scheitern lassen (Anführer kann 2 Stimmen>1,5 erhalten)
Ein Cluster aus 2 Knoten kann keinen Knoten scheitern lassen (Anführer kann 1 Stimme erhalten<=1)
19 Der Lastausgleich von Zookeeper und Nginx kann angepasst werden. Nginx kann nur die Gewichte anpassen zk ist viel größer. Es sollte gesagt werden, dass Sie die zu verwendende Methode entsprechend dem Unternehmen auswählen.
20. Welche Einsatzmodi gibt es von Zookeeper?
Zookeeper verfügt über drei Bereitstellungsmodi:
Bereitstellung auf einer Maschine: Ausführung auf einem Cluster;Die Clusterregel lautet 2N+1 Einheiten, N>0, also 3 Einheiten. Sie können die ungeraden Server weiterhin verwenden, solange nicht mehr als die Hälfte der Server ausgefallen ist.
22. Unterstützt der Cluster das dynamische Hinzufügen von Maschinen?
Tatsächlich ist Zookeeper in dieser Hinsicht nicht sehr gut. Zwei Möglichkeiten:
Alle neu starten: Schließen Sie alle Zookeeper-Dienste, ändern Sie die Konfiguration und starten Sie sie. Hat keinen Einfluss auf frühere Client-Sitzungen.
Einen nach dem anderen neu starten: Unter dem Grundsatz, dass mehr als die Hälfte der Maschinen aktiv und verfügbar sind, hat der Neustart einer Maschine keine Auswirkungen auf die externen Dienste des gesamten Clusters. Dies ist die am häufigsten verwendete Methode.
Version 3.5 beginnt mit der Unterstützung der dynamischen Erweiterung.
23. Sind die Überwachungsbenachrichtigungen von Zookeeper für Knoten dauerhaft?
Nein. Offizielle Aussage: Ein Watch-Ereignis ist ein einmaliger Auslöser. Wenn sich die Daten, für die die Watch eingestellt ist, ändern, sendet der Server die Änderung an den Client, für den die Watch eingestellt ist, um ihn zu benachrichtigen.
Warum ist es nicht dauerhaft? Wenn sich beispielsweise der Server häufig ändert und die Überwachungsclients in vielen Fällen alle Clients über jede Änderung benachrichtigt werden, was eine große Belastung für das Netzwerk und den Server darstellt.
Im Allgemeinen führt der Client getData("/node A", true) aus. Wenn Knoten A geändert oder gelöscht wird, erhält der Client sein Überwachungsereignis, aber dann ändert sich Knoten A erneut und der Client Wenn das Überwachungsereignis nicht erfolgt gesetzt, wird es nicht mehr an den Client gesendet.
In praktischen Anwendungen muss unser Client in vielen Fällen nicht jede Änderung auf dem Server kennen, ich benötige nur die neuesten Daten.
24. Was sind die Java-Clients von Zookeeper?
Java-Client: zks eigener zkclient und Apaches Open-Source-Curator.
25. Was ist mollig und wie vergleicht man es mit Tierpfleger?
chubby stammt von Google, implementiert den Paxos-Algorithmus vollständig und ist kein Open Source. Zookeeper ist eine Open-Source-Implementierung von Chubby, die das ZAB-Protokoll verwendet, eine Variante des Paxos-Algorithmus.
26. Lassen Sie uns über einige häufig verwendete Befehle von zookeeper sprechen.
Allgemeine Befehle: ls get set create delete usw.
27. Was sind die Zusammenhänge und Unterschiede zwischen ZAB- und Paxos-Algorithmen?
Gleiche Punkte:
(1) Beide haben eine ähnliche Rolle wie der Leader-Prozess, der für die Koordinierung der Ausführung mehrerer Follower-Prozesse verantwortlich ist
(2) Der Leader-Prozess wartet mehr als die Hälfte davon Follower müssen eine Entscheidung treffen. Erst nach korrektem Feedback wird ein Vorschlag eingereicht. (3) Im ZAB-Protokoll enthält jeder Vorschlag einen Epochenwert, der den aktuellen Leader-Zyklus darstellt. Der Name in Paxos lautet Ballot Es wird zum Aufbau eines hochverfügbaren verteilten Datenmaster- und Backup-Systems (Zookeeper) verwendet, und Paxos wird zum Aufbau eines verteilten Konsistenzzustandsmaschinensystems verwendet.
28. Typische Anwendungsszenarien von ZookeeperZookeeper ist ein typisches Publish/Subscribe-Modell für die Verwaltung und Koordination verteilter Daten, mit dem Entwickler verteilte Daten veröffentlichen und abonnieren können. Durch die übergreifende Nutzung der umfangreichen Datenknoten in Zookeeper und die Zusammenarbeit mit dem Watcher-Ereignisbenachrichtigungsmechanismus ist es sehr praktisch, eine Reihe von Kernfunktionen zu erstellen, die an verteilten Anwendungen beteiligt sind, wie zum Beispiel: (1) Datenveröffentlichung/ Abonnement
(2) Lastausgleich
(3) Benennungsdienst
(4) Verteilte Koordination/Benachrichtigung
(5) Clusterverwaltung
(6) Masterwahl
(7) Verteilte Sperre
(8) Verteilte Warteschlange
29. Welche Funktionen hat Zookeeper?
Cluster-Verwaltung: Überwachen Sie den Knotenüberlebensstatus, die Ausführung von Anforderungen usw.;
Master-Knotenwahl: Nachdem der Masterknoten aufgelegt hat, können Sie eine neue Runde der Leiterwahl vom Backup-Knoten aus starten Bei der Wahl des Master-Knotens kann die Verwendung von Zookeeper bei der Vervollständigung dieses Prozesses hilfreich sein.
Verteilte Sperre: Zookeeper bietet zwei Arten von Sperren: exklusive Sperren und gemeinsame Sperren. Eine exklusive Sperre bedeutet, dass jeweils nur ein Thread die Ressource verwenden kann. Eine gemeinsame Sperre bedeutet, dass Lesesperren gemeinsam genutzt werden und sich Lese- und Schreibsperren gegenseitig ausschließen, dh mehrere Threads können gleichzeitig dieselbe Ressource lesen Wird eine Schreibsperre verwendet, kann diese nur von einem Thread verwendet werden. Zookeeper kann verteilte Sperren steuern.
Namensdienst: In einem verteilten System kann die Clientanwendung mithilfe des Namensdienstes die Adresse, den Anbieter und andere Informationen der Ressource oder des Dienstes basierend auf dem angegebenen Namen abrufen.
30. Erzählen Sie mir etwas über den Benachrichtigungsmechanismus von Zookeeper?
Der Client erstellt ein Watcher-Ereignis für einen bestimmten Znode. Wenn sich der Znode ändert, erhalten diese Clients ZK-Benachrichtigungen, und dann kann der Client geschäftliche Änderungen basierend auf den Znode-Änderungen vornehmen.
31. Welche Beziehung besteht zwischen Zookeeper und Dubbo?
Die Rolle von Zookeeper
zookeeper dient der Registrierung von Diensten und der Durchführung des Lastausgleichs, dem Anrufer muss bekannt sein, welche IP-Adressen vorhanden sind Adresse und der Dienstname. Natürlich kann diese Korrespondenz auch durch Hartcodierung in den Geschäftscode des Anrufers implementiert werden. Wenn der Dienstanbieter jedoch auflegt, hat der Anrufer keine Möglichkeit, dies zu erfahren. Wenn der Code nicht geändert wird, wird er weiterhin anfragen die tote Maschine, um Dienste bereitzustellen. Zookeeper kann den hängenden Computer über den Heartbeat-Mechanismus erkennen und die entsprechende Beziehung zwischen der IP und dem Dienst des hängenden Computers aus der Liste löschen. Was die Unterstützung hoher Parallelität betrifft, bedeutet dies einfach ausgedrückt eine horizontale Erweiterung, also eine Erhöhung der Rechenleistung durch Hinzufügen von Maschinen, ohne den Code zu ändern. Durch das Hinzufügen neuer Maschinen zur Registrierung von Diensten bei ZooKeeper gilt: Je mehr Dienstanbieter vorhanden sind, desto mehr Kunden können sie bedienen.
dubbo
ist ein Tool zur Verwaltung der mittleren Schicht und des Data Warehouse. Es gibt viele Servicezugänge und Serviceanbieter, die einen Rahmen zur Lösung dieses Problems bereitstellen müssen.
Beachten Sie, dass es sich bei dem Dubbo hier nur um einen Rahmen handelt. Was Sie ins Regal stellen, liegt ganz bei Ihnen, genau wie bei einem Autogerüst müssen Sie zu Ihrem Radmotor passen. Um die Planung in diesem Framework abzuschließen, muss ein verteiltes Registrierungszentrum vorhanden sein, in dem die Metadaten aller Dienste gespeichert werden. Sie können zk oder andere verwenden, aber jeder verwendet zk.
Die Beziehung zwischen Zookeeper und Dubbo:
Dubbo abstrahiert das Registrierungszentrum und kann verschiedene Speichermedien extern verbinden, um Dienste für das Registrierungszentrum bereitzustellen, einschließlich ZooKeeper, Memcached, Redis usw.
Die Einführung von ZooKeeper als Speichermedium führt auch die Funktionen von ZooKeeper ein. Der erste ist der Lastausgleich, der durch eine ZooKeeper-Gruppe erreicht werden kann, wenn der Datenverkehr ein bestimmtes Niveau erreicht Die entsprechende Webanwendung reicht nicht aus, der Lastausgleich reicht nicht aus, Daten und Ressourcen zwischen Knoten müssen synchronisiert werden, und ZooKeeper-Cluster verfügen natürlich über eine solche Funktion, die eine Baumstruktur verwendet, um eine globale Dienstadressliste zu verwalten. Dienstanbieter Schreiben Sie beim Start Ihre eigene URL-Adresse in das Verzeichnis /dubbo/${serviceName}/providers des angegebenen Knotens auf ZooKeeper. Dieser Vorgang schließt die Freigabe des Dienstes ab. Weitere Funktionen sind Mastwahl, verteilte Sperren usw.
![[Empfohlene Sammlung] Seelenfolter! Die 31-Schuss-Kanone des Tierpflegers](https://img.php.cn/upload/article/001/273/727/d1c2498c21060c678324dd90c83125e4-1.jpg)
Das obige ist der detaillierte Inhalt von[Empfohlene Sammlung] Seelenfolter! Die 31-Schuss-Kanone des Tierpflegers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Da sich moderne Anwendungen ständig weiterentwickeln und der Bedarf an Hochverfügbarkeit und Parallelität wächst, werden verteilte Systemarchitekturen immer häufiger eingesetzt. In einem verteilten System laufen mehrere Prozesse oder Knoten gleichzeitig und erledigen Aufgaben gemeinsam, wobei die Synchronisierung zwischen Prozessen besonders wichtig wird. Da viele Knoten in einer verteilten Umgebung gleichzeitig auf gemeinsam genutzte Ressourcen zugreifen können, ist der Umgang mit Parallelitäts- und Synchronisierungsproblemen zu einer wichtigen Aufgabe in einem verteilten System geworden. In dieser Hinsicht hat sich ZooKeeper zu einer sehr beliebten Lösung entwickelt. ZooKee

Mit der rasanten Entwicklung des Internets sind verteilte Systeme zu einer der Infrastrukturen in vielen Unternehmen und Organisationen geworden. Damit ein verteiltes System ordnungsgemäß funktioniert, muss es koordiniert und verwaltet werden. In dieser Hinsicht sind ZooKeeper und Curator zwei lohnenswerte Tools. ZooKeeper ist ein sehr beliebter verteilter Koordinationsdienst, der uns dabei helfen kann, den Status und die Daten zwischen Knoten in einem Cluster zu koordinieren. Curator ist eine Kapselung von ZooKeeper

PHP ist eine sehr beliebte Programmiersprache, die häufig in Webanwendungen und serverseitiger Entwicklung verwendet wird. Zookeeper ist ein verteilter Koordinierungsdienst zur Verwaltung, Koordinierung und Überwachung verteilter Anwendungen und Dienste. Die Verwendung von Zookeeper in PHP-Anwendungen kann die Leistung und Zuverlässigkeit Ihrer Anwendung verbessern. In diesem Artikel wird die Verwendung der Zookeeper-Erweiterung für PHP vorgestellt. 1. Installieren Sie die Zookeeper-Erweiterung. Um die Zookeeper-Erweiterung verwenden zu können, müssen Sie Zookeeper installieren.

Verteilte Sperren werden normalerweise auf folgende Weise implementiert: Datenbank, Cache (z. B. Redis), Zookeeper usw. In der tatsächlichen Entwicklung werden am häufigsten Redis und Zookeeper verwendet, daher wird in diesem Artikel nur auf diese beiden eingegangen.
![[Empfohlene Sammlung] Seelenfolter! Die 31-Schuss-Kanone des Tierpflegers](https://img.php.cn/upload/article/202308/28/2023082816453271532.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
ZooKeeper ist ein verteilter Open-Source-Koordinierungsdienst. Es handelt sich um eine Software, die Konsistenzdienste für verteilte Anwendungen bereitstellt. Verteilte Anwendungen können Aufgaben wie Datenveröffentlichung/-abonnement, Lastausgleich, Benennungsdienst, verteilte Koordination/Benachrichtigung, Clusterverwaltung, Master-Wahl, verteilte Sperren und verteilte Warteschlangen sowie andere Funktionen implementieren.

Mit der rasanten Entwicklung der Internet-Technologie sind verteilte Systeme in modernen Anwendungen weit verbreitet, insbesondere in großen Internetunternehmen. In einem verteilten System ist es jedoch sehr schwierig, die Konsistenz zwischen Knoten aufrechtzuerhalten. Daher ist der verteilte Sperrmechanismus zu einer der Grundlagen zur Lösung dieses Problems geworden. Bei der Implementierung verteilter Sperren sind Redis und ZooKeeper beliebte Tools. In diesem Artikel werden sie verglichen und analysiert. Redis implementiert verteilte Sperren. Redis ist ein Open-Source-Speicherdatenspeicher

In der Microservice-Architektur ist die Registrierung und Erkennung von Diensten ein sehr wichtiges Thema. Um dieses Problem zu lösen, können wir ZooKeeper als Service-Registrierungscenter verwenden. In diesem Artikel stellen wir vor, wie Sie ZooKeeper im Beego-Framework verwenden, um die Registrierung und Erkennung von Diensten zu implementieren. 1. Einführung in ZooKeeper ZooKeeper ist ein verteilter Open-Source-Koordinierungsdienst. Es ist eines der Unterprojekte von Apache Hadoop. Die Hauptrolle von ZooKeeper

dockerpullzookeeperdockerrun --namezk01-p2181:2181--restartalways-d2e30cac00aca zeigt an, dass zookeeper Zookeeper und Dubbo erfolgreich gestartet hat. • ZooKeeperZooKeeper ist ein verteilter Open-Source-Koordinierungsdienst für verteilte Anwendungen. Es handelt sich um eine Software, die konsistente Dienste für verteilte Anwendungen bereitstellt. Zu den bereitgestellten Funktionen gehören: Konfigurationswartung, Domänennamendienste, verteilte Synchronisierung, Gruppendienste usw. DubboDubbo ist Alibabas Open-Source-Framework für verteilte Dienste. Sein größtes Merkmal ist seine mehrschichtige Struktur.
