Κοινή χρήση τεχνολογίας

Η βασική αρχή του Zookeeper

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Το ZooKeeper είναι μια εξαιρετικά διαθέσιμη υπηρεσία κατανεμημένου συντονισμού που χρησιμοποιείται ευρέως σε κατανεμημένα συστήματα για την επίλυση του προβλήματος συνέπειας των κατανεμημένων συστημάτων. Τα παρακάτω θα εισαγάγουν λεπτομερώς τις βασικές αρχές του ZooKeeper, συμπεριλαμβανομένης της αρχιτεκτονικής, του μοντέλου δεδομένων, του βασικού μηχανισμού και του πρωτοκόλλου συνοχής.

1. Αρχιτεκτονική

Το ZooKeeper υιοθετεί μια αρχιτεκτονική master-slave, η οποία συνήθως αποτελείται από έναν Leader και πολλούς ακόλουθους.

  • Ηγέτης: Υπεύθυνος για το χειρισμό όλων των αιτημάτων εγγραφής (αιτήματα συναλλαγών) και τον συντονισμό του πρωτοκόλλου συνέπειας.
  • Οπαδός: Συμμετέχετε στην ψηφοφορία και συγχρονίζετε την κατάσταση Leader και επεξεργάζεστε αιτήματα ανάγνωσης.
  • Παρατηρητής: Δεν συμμετέχει στην ψηφοφορία, επεξεργάζεται μόνο αιτήματα ανάγνωσης και προωθεί αιτήματα εγγραφής από πελάτες.

2. Μοντέλο δεδομένων

Το ZooKeeper αποθηκεύει δεδομένα σε μια δομή δέντρου παρόμοια με ένα σύστημα αρχείων και κάθε κόμβος ονομάζεται znode.

  • znode: Κόμβος δεδομένων με πληροφορίες διαδρομής, δεδομένων και κατάστασης.
  • Επίμονο znode: Ένας κόμβος επιβιώνει μετά από αποσύνδεση πελάτη εκτός εάν διαγραφεί ρητά.
  • Εφήμερο znode: Ο κόμβος διαγράφεται αυτόματα όταν ο πελάτης αποσυνδεθεί.
  • Διαδοχική znode: Ο κόμβος προσαρτάται αυτόματα με έναν αύξοντα αριθμό σειράς όταν δημιουργείται.

3. Μηχανισμός πυρήνα

3.1 Διαχείριση συνεδρίας

Δημιουργείται μια περίοδος λειτουργίας μεταξύ κάθε πελάτη και του συμπλέγματος ZooKeeper για τη διατήρηση της κατάστασης σύνδεσης και τη διαχείριση των προσωρινών κόμβων. Το ZooKeeper ανιχνεύει την κατάσταση σύνδεσης του πελάτη μέσω του μηχανισμού καρδιακού παλμού Εάν δεν ληφθεί καρδιακός παλμός μέσα σε ένα συγκεκριμένο χρονικό διάστημα, η περίοδος λειτουργίας θεωρείται αποσυνδεδεμένη.

3.2 Συγχρονισμός δεδομένων

Προκειμένου να διασφαλιστεί η συνέπεια των δεδομένων κάθε κόμβου, το ZooKeeper υιοθετεί έναν μηχανισμό συγχρονισμού δεδομένων. Όταν ο κόμβος Leader επεξεργάζεται ένα αίτημα εγγραφής, θα στείλει τη λειτουργία αλλαγής σε όλους τους κόμβους ακόλουθου θα επιβεβαιώσει μετά την αποδοχή της λειτουργίας αλλαγής και ο κόμβος Leader θα αποφασίσει τελικά εάν η λειτουργία αλλαγής είναι επιτυχής.

3.3 Μηχανισμός ειδοποίησης

Το ZooKeeper υποστηρίζει τον μηχανισμό Watch Ο πελάτης μπορεί να καταχωρήσει το Watch στο καθορισμένο znode Όταν αλλάξουν τα δεδομένα ή οι θυγατρικοί κόμβοι του znode, το ZooKeeper θα ειδοποιήσει τον πελάτη.

4. Πρωτόκολλο συνέπειας

Το ZooKeeper χρησιμοποιεί ένα πρωτόκολλο συνέπειας που ονομάζεται ZAB (Zookeeper Atomic Broadcast) για να διασφαλίσει τη συνέπεια των δεδομένων. Το ZAB αποτελείται από δύο φάσεις: την εκλογική φάση και τη φάση εκπομπής.

4.1 Εκλογική φάση

Όταν ξεκινά το σύμπλεγμα ZooKeeper ή ο κόμβος Leader αποτυγχάνει, απαιτείται εκλογή για τον προσδιορισμό ενός νέου Leader. Η εκλογική φάση χωρίζεται κυρίως στα ακόλουθα στάδια:

  1. ψήφος: Όλοι οι κόμβοι ψηφίζουν για τον εαυτό τους και στέλνουν ψήφους σε άλλους κόμβους.
  2. λαμβάνουν ψήφους: Κάθε κόμβος λαμβάνει ψήφους από άλλους κόμβους και μετράει τα αποτελέσματα της ψηφοφορίας.
  3. Ενημέρωση δημοσκόπησης: Εάν υπάρχει ένας υποψήφιος με περισσότερες ψήφους από εσάς στις ληφθείσες ψήφους, ενημερώστε την ψήφο σας για αυτόν τον υποψήφιο.
  4. Καθορίστε τον ηγέτη: Όταν ένας υποψήφιος λάβει περισσότερες από τις μισές ψήφους, γίνεται ο νέος Αρχηγός.
4.2 Φάση μετάδοσης

Αφού καθοριστεί το Leader, εισέρχεται στη φάση μετάδοσης Ο Leader είναι υπεύθυνος για την επεξεργασία του αιτήματος εγγραφής του πελάτη και τη μετάδοση της λειτουργίας αλλαγής σε όλους τους κόμβους Follower. Τα συγκεκριμένα βήματα είναι τα εξής:

  1. πρόταση: Αφού λάβει το αίτημα εγγραφής, ο Leader δημιουργεί μια πρόταση και στέλνει την πρόταση σε όλους τους κόμβους ακόλουθους.
  2. επιβεβαιώνω: Μετά τη λήψη της πρότασης, ο κόμβος ακόλουθος πραγματοποιεί καταγραφή και στέλνει ένα μήνυμα επιβεβαίωσης στον Leader.
  3. υποβάλλουν: Αφού ο κόμβος Leader λάβει περισσότερα από τα μισά μηνύματα επιβεβαίωσης, υποβάλλει την πρόταση και ειδοποιεί όλους τους κόμβους ακόλουθους για το αποτέλεσμα της υποβολής.
  4. Εφαρμόστε αλλαγές: Αφού ο κόμβος ακόλουθος λάβει την ειδοποίηση δέσμευσης, εφαρμόζει τη λειτουργία αλλαγής.

5. Δείγμα κώδικα

Το παρακάτω είναι ένα απλό παράδειγμα χρησιμοποιώντας το ZooKeeper, που δείχνει πώς να δημιουργείτε κόμβους, να διαβάζετε δεδομένα κόμβων και να καταχωρείτε το Watch.

5.1 Εισαγωγή εξαρτήσεων

υπάρχει pom.xml Εισαγάγετε την εξάρτηση πελάτη ZooKeeper.

 

xmlΑντιγραφή κώδικα