Heim >Java >javaLernprogramm >[Empfohlene Sammlung] Seelenfolter! Die 31-Schuss-Kanone des Tierpflegers

[Empfohlene Sammlung] Seelenfolter! Die 31-Schuss-Kanone des Tierpflegers

Java后端技术全栈
Java后端技术全栈nach vorne
2023-08-28 16:45:46872Durchsuche


Zusammenfassung des Zookeeper-Kernwissens

[Empfohlene Sammlung] Seelenfolter! Die 31-Schuss-Kanone des Tierpflegers

Bitte lesen Sie den Titel

  1. Was ist ZooKeeper?
  2. Was bietet ZooKeeper?
  3. Zookeeper-Dateisystem
  4. Wie stellt Zookeeper sicher, dass der Status von Master- und Slave-Knoten synchronisiert ist?
  5. Vier Arten von Datenknoten Znode
  6. Zookeeper Watcher-Mechanismus – Benachrichtigung über Datenänderungen
  7. Wie wird der Client-Registrierungs-Watcher implementiert?
  8. Wie implementiert man die serverseitige Verarbeitung von Watcher?
  9. Wie ruft der Kunde Watcher zurück?
  10. Sind Sie mit dem ACL-Berechtigungskontrollmechanismus vertraut?
  11. Kennen Sie die Chroot-Funktionen?
  12. Kennen Sie sich mit der Sitzungsverwaltung aus?
  13. Welche Rollen hat der Server?
  14. Server-Arbeitsstatus unter Zookeeper
  15. Wie werden die Daten synchronisiert?
  16. Wie stellt zookeeper die sequentielle Konsistenz von Transaktionen sicher?
  17. Warum gibt es einen Masterknoten in einem verteilten Cluster?
  18. zk Wie gehe ich mit Knotenausfallzeiten um?
  19. Der Unterschied zwischen Zookeeper-Lastausgleich und Nginx-Lastausgleich
  20. Was sind die Bereitstellungsmodi von Zookeeper?
  21. 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?
  22. Unterstützt der Cluster das dynamische Hinzufügen von Maschinen?
  23. Sind die Überwachungsbenachrichtigungen von Zookeeper für Knoten dauerhaft? Warum nicht dauerhaft?
  24. Was sind die Java-Clients von Zookeeper?
  25. Was ist mollig und wie vergleicht man es mit Tierpfleger?
  26. Lassen Sie uns über einige häufig verwendete Befehle von zookeeper sprechen.
  27. Was sind die Zusammenhänge und Unterschiede zwischen ZAB- und Paxos-Algorithmen?
  28. Typische Anwendungsszenarien von Zookeeper
  29. Welche Funktionen hat Zookeeper?
  30. Erzählen Sie mir etwas über den Benachrichtigungsmechanismus von Zookeeper?
  31. 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 Informationen
  • zu erhalten.
Um einen hohen Durchsatz und eine geringe Latenz zu gewährleisten, behält Zookeeper diese baumartige Verzeichnisstruktur im Speicher bei. Diese Funktion macht es Zookeeper nicht möglich, große Datenmengen für jeden Knoten zu speichern.

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

    Nach Version 3.2.0 wurde die Chroot-Funktion hinzugefügt, die es jedem Client ermöglicht, einen Namespace für sich selbst festzulegen. Wenn ein Client Chroot eingerichtet hat, sind alle Vorgänge, die der Client auf dem Server ausführt, auf seinen eigenen Namespace beschränkt. 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.

    Verteilungsprinzip: „Nächster Timeout-Zeitpunkt“ (ExpirationTime) jeder SitzungBerechnungsformel: ExpirationTime_ = currentTime + sessionTimeout

    ExpirationTime = (ExpirationTime_ / ExpirationInrerval + 1) *

    ExpirationInterval, ExpirationInterval bezieht sich auf die Zookeeper-Sitzung Timeout-Prüfintervall, Standard tickTime

    13. 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

    Der Server hat vier Status, nämlich SCHAUEN, FOLGEN, FÜHREN und BEOBACHTEN. (1) SUCHE: Auf der Suche nach dem Leader-Status. Wenn sich der Server in diesem Zustand befindet, geht er davon aus, dass es im aktuellen Cluster keinen Anführer gibt, und muss daher in den Anführerwahlstatus wechseln.

    (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

      Vollständige Synchronisierung (SNAP-Synchronisierung)

      • 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

      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;

      • 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?

      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 Zookeeper

    Zookeeper 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

    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!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:Java后端技术全栈. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen