Angenommen, wir haben ein Apache Zookeeper-Quorum installiert und n Client-Knoten verbunden (mit Apache Curator). Ist es möglich, Benachrichtigungen von einem der Knoten (dem, den wir beobachten) vom Tierpfleger zu erhalten, wenn eine der anderen Knoten-Sitzungen beendet wird oder ein Timeout erreicht wird? Wenn ja, wie wird dies erreicht?Wie erkennt man, wenn Apache-Zookeeper-Sitzungen verloren gehen oder abgelaufen sind?
Antwort
Die Antwort ist ziemlich einfach und kann mit Ephemeralknoten und PathChildrenCache erreicht werden. Zookeeper erkennt, wenn ein Knoten das Zeitlimit überschreitet (in diesem Beispiel setzen wir das Timeout auf 10 s) und der zugehörige ephemere Knoten wird aus dem Baum verschwinden. Dies wird ein Ereignis auslösen, auf das wir hören können.
zuerst eine Verbindung mit dem Kurator Client aufzubauen und es startet auf allen Knoten
CuratorFramework curator =
CuratorFrameworkFactory
.newClient(zkConnectionString, 10000, 10000, retryPolicy);
curator.start();
curator.getZookeeperClient().blockUntilConnectedOrTimedOut();
Nächste Verwendung PathChildrenCache Zuhörer für zookeeper Ereignisse zuzuordnen. Zu den Ereignistypen gehören CHILD_ADDED, CHILD_UPDATED und CHILD_REMOVED. Das Ereignisobjekt in dem Rückruf enthält die relevanten Informationen (und mögliche zugehörige Nutzinformationen) des ausgefallenen Knotens.
PathChildrenCache pathCache = new PathChildrenCache(curator, "/nodes", true);
pathCache
.getListenable()
.addListener((curator, event) -> {
if (event.getType() == Type.CHILD_REMOVED) {
System.out.println("Child has been removed");
}
});
pathCache.start();
nun auf einem entfernten Knoten, fügen Sie den ephemeren Knoten (hier wir geben eine ID von 33 ohne Nutzlast)
curator
.create()
.creatingParentsIfNeeded()
.withMode(CreateMode.EPHEMERAL)
.forPath("/nodes/33");
nun den Stecker auf dem entfernten Knoten ziehen und das Ereignis sollte erkannt, wo die Listener zugewiesen wurden.
- 1. SimpleSAMLphp Statusinformationen gehen verloren
- 2. Cookies gehen verloren
- 3. Änderungen gehen verloren, wenn mehrere Entwickler an derselben Datei arbeiten
- 4. Git Änderungen verloren gehen - warum?
- 5. Kontrollwerte verloren, wenn Authentifizierungssitzung in ASP.NET abgelaufen ist
- 6. Durch Eingabetext gehen, wenn sie gefüllt oder leer sind
- 7. Alle meine Datenpunkte gehen verloren, wenn InfluxDB neu startet
- 8. Bei der Formularaktualisierung gehen mehrteilige/Formulardaten verloren
- 9. Warum gehen Sitzungsdaten mit session_set_save_handler verloren?
- 10. Wie überprüft man, ob Cookies im Cookiecontainer abgelaufen sind?
- 11. raft: Eingeräteter Eintrag kann verloren gehen?
- 12. Können in MPI_Send/MPI_Recv-Paaren Daten verloren gehen, wenn sie nicht korrekt synchronisiert sind?
- 13. Welche Art von Laufzeitoptimierungen gehen verloren, wenn wir Reflexion
- 14. Formatierung auf einem glänzenden app verloren gehen, wenn Spalte
- 15. Text (TextBox) aktualisiert verloren, wenn Gridview zur nächsten Seite gehen
- 16. CSS und JS gehen verloren, wenn ich htaccess bearbeiten
- 17. Wie erkennt PHP, dass eine Sitzung abgelaufen ist?
- 18. Zusammengesetzte WPF Eventaggregator-Subskriptionen gehen verloren
- 19. Wie erkennt man, wenn savehtml fehlschlägt?
- 20. Wie erkennt man, wenn UITextField leer wird
- 21. NodeJS lineReader appendFile - Zeilen verloren gehen irgendwo
- 22. Wie man Zeichen erkennt, sind in Englisch oder Vietnamesisch oder Myanmar Sprache geschrieben
- 23. Wie erkennt man die Zugangskontrollmaschine?
- 24. Wie man erkennt, wenn der Marker in AR.js gefunden wird
- 25. Im Falle eines Serverabsturzes gehen Warteschlangendaten verloren
- 26. Namespace Qualifier in Kompilierung verloren gehen
- 27. Binary Search Tree add Methodenreferenz verloren gehen
- 28. Wie erkennt man, wenn innerHTML abgeschlossen ist
- 29. Wie erkennt man, wenn browserify ausgeführt wird?
- 30. Wie erkennt man, wenn WiFi (re) verbindet?
Sie möchten über Sitzungsverlust von anderen Clients wissen? Jeder Sitzungsverlust? Können Sie ein Beispiel dafür geben, was Sie herausfinden wollen? – Randgalt
Antwort unten zur Verfügung gestellt – Hegemon