Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 9508|Απάντηση: 2

Εφαρμογή κατανεμημένης κλειδαριάς Zookeeper

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 20/3/2018 4:23:52 μ.μ. | | | |
Σχεδιασμός κλειδαριάς

  Πάρτε την ιδέα υλοποίησης κλειδαριάς:
1. Ξεκινήστε δημιουργώντας έναν κατάλογο ως κλειδαριά (znode), ο οποίος χρησιμοποιείται συνήθως για να περιγράψει την κλειδωμένη οντότητα, που ονομάζεται :/lock_node
2. Ο πελάτης που θέλει να αποκτήσει το κλείδωμα δημιουργεί ένα znode στον κατάλογο κλειδώματος ως θυγατρικό κόμβο του lock/lock_node και ο τύπος κόμβου είναι Ordered Temporary Node (EPHEMERAL_SEQUENTIAL).
Για παράδειγμα, δύο πελάτες δημιουργούν znodes, /lock_node/lock-1 και /lock_node/lock-2
3. Ο τρέχων πελάτης καλεί το getChildren(/lock_node) για να λάβει όλους τους θυγατρικούς κόμβους του καταλόγου κλειδώματος, χωρίς να ρυθμίσει το ρολόι και, στη συνέχεια, να αποκτήσει τους αδελφούς κόμβους που είναι μικρότεροι από τον εαυτό του (δημιουργήθηκε στο βήμα 2).
4. Ο κόμβος που είναι μικρότερος από τον εαυτό του στο βήμα 3 δεν υπάρχει && ο μικρότερος κόμβος είναι ο ίδιος με αυτόν που δημιουργήθηκε στο βήμα 2, υποδεικνύοντας ότι ο τρέχων αριθμός ακολουθίας πελάτη είναι ο μικρότερος, λάβετε το κλείδωμα και τελειώστε.
5. Ο πελάτης παρακολουθεί την κατάσταση του τακτικού προσωρινού κόμβου που είναι ο επόμενος μικρότερος από τον εαυτό του
6. Εάν αλλάξει η κατάσταση του παρακολουθούμενου υποκόμβου, μεταβείτε στο βήμα 3 και συνεχίστε τις επακόλουθες λειτουργίες μέχρι να βγείτε από τον αγώνα κλειδώματος.     

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





Προηγούμενος:Λεπτομερής επεξήγηση του AutoResetEvent σε .net/c#
Επόμενος:Σχετικά με το ζήτημα ότι το Android 7.0 δεν μπορεί να εκτελέσει σύλληψη πακέτων https
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 20/3/2018 4:49:35 μ.μ. |
Ο φύλακας του ζωολογικού κήπου διένειμε τα βήματα κλειδώματος:
1. Το Zookeeper είναι ένας κόμβος με κόμβους, παρόμοιος με έναν κατάλογο αρχείων, επομένως αφαιρούμε την κλειδαριά σε έναν κατάλογο, ο φύλακας του ζωολογικού κήπου έχει έναν κόμβο EPHEMERAL_SEQUENTIAL τύπων, πολλαπλών νημάτων και όταν ο κόμβος που δημιουργήθηκε από τον φύλακα του ζωολογικού κήπου, θα μας βοηθήσει να κανονίσουμε τη σειρά που θα δημιουργήσουμε, έτσι ώστε οι κατάλογοι κάτω από αυτόν τον κόμβο να είναι διαδοχικοί.
2. Λάβετε τον μικρότερο κόμβο του τρέχοντος καταλόγου, προσδιορίστε εάν ο μικρότερος κόμβος είναι ο τρέχων κόμβος, εάν αυτό σημαίνει ότι το κλείδωμα είναι επιτυχές, εάν δεν είναι η αποτυχία απόκτησης κλειδώματος.
3. Όταν το κλείδωμα αποτύχει, για να αποφύγετε το φαινόμενο σμήνους, αυτό που πρέπει να κάνετε είναι να αποκτήσετε τον προηγούμενο κόμβο του τρέχοντος κόμβου και στη συνέχεια να ακούσετε τον κόμβο.
4. Όταν το κάνετε αυτό, όταν αφήσετε την κλειδαριά, θα ειδοποιήσετε και τον επόμενο κόμβο.
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 20/3/2018 4:54:46 μ.μ. |
Μάθετε εκ των προτέρων για την κατάσταση του φύλακα του ζωολογικού κήπου και τους τύπους συμβάντων.


Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com