Εκλογήαρχηγού Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου Κατανεµηµένα Συστήµατα 06-
Εισαγωγή Πρόβληµα: επιλογή µίας διεργασίας από το σύνολο εν αρκεί να αυτοανακηρυχθεί µία διεργασία αρχηγός Πρέπει να συµφωνήσουν όλες στην ταυτότητά της Εκτέλεση ενός αλγορίθµου εκλογής Ο αλγόριθµος ξεκινάει από οποιαδήποτε διεργασία Συνήθως µία διεργασία που είδε ότι ο αρχηγός δεν απαντά Εφαρµογές: τι χρειάζεται ο αρχηγός; Εκτέλεση συγκεντρωτικών αλγορίθµων Ανίχνευση αδιεξόδων Αρχικοποίηση κατανεµηµένων αλγορίθµων Έκδοση κουπονιού Συντονισµός διεργασιών Αναπαραγωγή αντιγράφων Κατανεµηµένα Συστήµατα 06-2
Εισαγωγή Εκλογή αρχηγού και αµοιβαίος αποκλεισµός Παρόµοια προβλήµατα Επιλογή µίας διεργασίας συντονιστή του συστήµατος Επιλογή µίας διεργασίας που θα χρησιµοποιήσει έναν πόρο εν ταυτίζονται όµως! Ιδιαιτερότητες αµοιβαίου αποκλεισµού Αποφυγή υποσιτισµού (liveness) Τήρηση διάταξης (ordering) Τελικά όλοι πρέπει να χρησιµοποιήσουν τον πόρο Ιδιαιτερότητες εκλογής αρχηγού Σηµαντική η ταχύτητα επιλογής εν υπάρχει πρόβληµα υποσιτισµού Ενηµέρωση υπολοίπων διεργασιών για τον συντονιστή Κατανεµηµένα Συστήµατα 06-3
Εισαγωγή Αλγόριθµος πρωτόκολλοεκλογής αρχηγού Είσοδος αρχική κατάσταση Αυθαίρετο µη κενό σύνολο διεργασιών Όλες οι διεργασίες ξεκινάνε από την ίδια κατάσταση Κάθε διεργασία εκτελεί τον ίδιο τοπικό αλγόριθµο Αρκεί τελικά ο αρχηγός να γνωρίζει ότι εκλέχτηκε Ενηµέρωση των υπόλοιπων διεργασιών για τον αρχηγό Εύκολη επέκταση µόλις επιλεγεί ο αρχηγός Ο εκλεγµένος αρχηγός ενηµερώνει τις υπόλοιπες διεργασίες Τελική κατάσταση Μια και µόνο µια διεργασία είναι ο αρχηγός (leader) Όλες οι υπόλοιπες είναι στην κατάσταση του χαµένου (lost) Κατανεµηµένα Συστήµατα 06-4
Εισαγωγή Λειτουργία διεργασιών Αρχικοποιητές (Initiators) Ξεκινούν την εκτέλεση του τοπικού τους αλγορίθµου αυτόµατα Πιθανόν µε την ικανοποίηση µίας συνθήκης Tο πρώτο γεγονός τους είναι η αποστολή ενός µηνύµατος Μη-αρχικοποιητές (Non-initiators) Απλά συµµετέχουν στον αλγόριθµο Ξεκινάνε την εκτέλεση όταν λάβουν ένα µήνυµα Το πρώτο γεγονός τους είναι η λήψη ενός µηνύµατος Μοναδικό αναγνωριστικό (id) για κάθε διεργασία Γνωστό στην διεργασία που το κατέχει Μεταδίδεται στις άλλες διεργασίες υνατότητα αποστολής µηνυµάτων σε συγκεκριµένη διεργασία Κατανεµηµένα Συστήµατα 06-5
Εισαγωγή Αναγνωριστικά: στοιχεία διατεταγµένου συνόλου Π υνατότητα σύγκρισης αναγνωριστικών (π.χ.,, =) Κατηγορίες αλγορίθµων Extrema finding αλγόριθµοι Αρχηγός: η διεργασία µε το µεγαλύτερο (µικρότερο) id Αλγόριθµοι σύγκρισης (όλοι οι αλγόριθµοι που θα δούµε) Εύρεση µεγαλύτερου id ~ εύρεση µικρότερου id Ο αρχηγός δεν αντιπροσωπεύει προτιµήσεις Preference based αλγόριθµοι Η εκλογή βασίζεται σε προτιµήσεις Παράδειγµα: η πιο αξιόπιστη διεργασία Probabilistic αλγόριθµοι εν θεωρούν γνωστά τα αναγνωριστικά των διεργασιών Κατανεµηµένα Συστήµατα 06-6
Εισαγωγή Κατηγορίες αλγορίθµων εκλογής αρχηγού Υποθέτουµε κάποια δοµή / τοπολογία δικτύου Ισχυρά συνδεδεµένος γράφος Ο καθένας µπορεί να µιλήσει µε οποιονδήποτε άλλον Αλγόριθµος Garcia Molina (Bully) ακτύλιος µίας κατεύθυνσης Αλγόριθµος LeLann Αλγόριθµος Chang & Roberts ένδρο αυθαίρετου βαθµού Αλγόριθµος δένδρου Αλγόριθµοι δακτυλίου ή δένδρου Εφαρµόζονται σε οποιαδήποτε φυσική τοπολογία Αρκεί να βρεθεί επικαλυπτικός δακτύλιος ή δένδρο ιαφορετικό µοντέλο υποθέσεις για κάθε αλγόριθµο Κατανεµηµένα Συστήµατα 06-7
Ισχυράσυνδεδεµένος γράφος Αλγόριθµος του Νταή (Bully) του Garcia-Molina Εφαρµόζεται σε ισχυρά συνδεδεµένα δίκτυα Μοντέλο Κάθε διεργασία έχει ένα αναγνωριστικό (id) Κάθε διεργασία γνωρίζει τα id όλων των υπολοίπων Αρχηγός θα εκλεγεί η διεργασία µε τo µέγιστο id Μια διεργασία µπορεί να αποτυγχάνει και να επανέρχεται Initiator: ξεκινάει την εκτέλεση του αλγορίθµου ιεργασία που διαπιστώνει την έλλειψη αρχηγού Παρατηρεί ότι ο τρέχων αρχηγός δεν απαντά ιεργασία που επανέρχεται εν έχει σηµασία αν υπάρχει ήδη αρχηγός Ίσως πρέπει να γίνει αυτή αρχηγός! Κατανεµηµένα Συστήµατα 06-8
Ισχυράσυνδεδεµένος γράφος Αλγόριθµος initiator (διεργασία Ρ) Αν η Ρ έχει το µεγαλύτερο δυνατό id Ανακηρύσσεται αρχηγός Γνωστοποιεί το id της σε όλες τις άλλες διεργασίες Αν η Ρ δεν έχει το µεγαλύτερο δυνατό id Στέλνει στις διεργασίες µε µεγαλύτερο id το µήνυµα <election> // Τις ενηµερώνει ότι πρέπει να γίνει εκλογή αρχηγού Περιµένει ένα µήνυµα <OK> από κάποια τέτοια διεργασία // Κάποια άλλη διεργασία µπορεί να αναλάβει δράση Αν µέσα σε ένα συγκεκριµένο χρονικό όριο εν λάβει καµία απάντηση <OK> Ανακηρύσσεται αρχηγός Το γνωστοποιεί στις διεργασίες µε µικρότερο id Κατανεµηµένα Συστήµατα 06-9
Ισχυράσυνδεδεµένος γράφος Αλγόριθµος initiator (διεργασία Ρ) (συνέχεια) Αν µέσα σε ένα συγκεκριµένο χρονικό όριο Λάβει κάποια απάντηση <OK> // Κάποιος άλλος θα γίνει αρχηγός Περιµένει το id του αρχηγού // Αν όµως αποτύχει πριν ολοκληρωθεί η διαδικασία; Αν δεν λάβει σύντοµα το id του αρχηγού, ξαναστέλνει <election> Αλγόριθµος non-initiator Μια διεργασία λαµβάνει το µήνυµα <election> από την P Αν έχει µεγαλύτερο αναγνωριστικό από την P Στέλνει απάντηση <OK> στην Ρ Παίρνει το ρόλο του initiator Συνεχίζει µε τον παραπάνω αλγόριθµο Κατανεµηµένα Συστήµατα 06-0
Ισχυράσυνδεδεµένος γράφος Παράδειγµα 2 2 4 <election> 5 4 <OK> 5 <election> 0 <election> 7 3 6 0 7 <OK> 3 6 4 2 5 (α) (β) 4 0 2 5 <election> <election> 6 <election> 3 7 4 0 2 7 5 <OK> 3 6 0 7 3 (ε) 6 (γ) (δ) Κατανεµηµένα Συστήµατα 06-
Ισχυράσυνδεδεµένος γράφος Παράδειγµα (συνέχεια) δ. 7: ο πρώην αρχηγός που αποτυγχάνει δ. 4: ανακαλύπτει την έλλειψη αρχηγού Στέλνει <election>στις δ. µε µεγαλύτερο id, δηλαδή 5, 6, 7 δ. 5, 6: απαντάνε <ΟΚ> στην 4 δ. 7: έχει αποτύχει δ. 4: σταµατάει και περιµένει να ενηµερωθεί για το νέο αρχηγό δ. 6: στέλνει <election>στην 7 δ. 6: στέλνει <ΟΚ>στην 5 δ. 6: δεν λαµβάνει <ΟΚ> από την 7 δ. 6: ανακηρύσσεται αρχηγός δ. 6: ενηµερώνει όλες τις υπόλοιπες ότι είναι ο νέος αρχηγός Κατανεµηµένα Συστήµατα 06-2
ακτύλιοςµίας κατεύθυνσης Αλγόριθµοι LeLannκαι Chang & Roberts Μοντέλο Οργάνωση διεργασιών σε δακτύλιο Επικοινωνία προς µία κατεύθυνση FIFO κανάλια επικοινωνίας Κάθε διεργασία γνωρίζει µόνο το δικό της αναγνωριστικό εν γνωρίζει ούτε αναγνωριστικά ούτε πλήθος διεργασιών Κάθε διεργασία στέλνει µηνύµατα στην επόµενή της Κάθε διεργασία λαµβάνει µηνύµατα από την προηγούµενή της Αρχηγός: η διεργασία µε το µικρότερο αναγνωριστικό Απλή τροποποίηση για το µεγαλύτερο αναγνωριστικό Αλγόριθµος LeLann Κυκλοφορία ενός token στο δακτύλιο Κατανεµηµένα Συστήµατα 06-3
ακτύλιοςµίας κατεύθυνσης Initiators Το σύνολο των υποψήφιων διεργασιών για αρχηγία Υποσύνολο των διεργασιών του δακτυλίου Όλες ξεκινούν στέλνοντας ένα µήνυµα <tok, id> Στέλνουν το δικό του <tok, id> πριν λάβουν άλλα µηνύµατα Νοn- Initiators Το σύνολο των διεργασιών που δεν διεκδικούν την αρχηγία Αλγόριθµος Non - initiators Περιµένει να λάβει µήνυµα <tok, id> // Μηνύµατα που στέλνονται από τους initiators Προωθεί το µήνυµα <tok, id> // Καµία παρέµβαση ουσιαστικά Κατανεµηµένα Συστήµατα 06-4
ακτύλιοςµίας κατεύθυνσης Αλγόριθµος initiators Στέλνει µήνυµα <tok, id> Περιµένει να λάβει µήνυµα <tok, id> Εάν το idπου έλαβε δεν είναι το δικό του Προσθέτει το µήνυµα <tok, id> που λαµβάνει σε µια λίστα Προωθεί το µήνυµα <tok, id> και επαναλαµβάνει Εάν το idπου έλαβε είναι το δικό του // Το µήνυµα έχει κάνει έναν πλήρη κύκλο Βρίσκει το µικρότερο id στην λίστα του // Όλα τα id περιέχονται εκεί Εάν αυτό το id είναι το δικό του Ανακηρύσσεται αρχηγός Ενηµερώνει τις υπόλοιπες Κατανεµηµένα Συστήµατα 06-5
ακτύλιοςµίας κατεύθυνσης Αλγόριθµος Chang & Roberts Βελτίωση του αλγορίθµου του LeLann Μειώνει το πλήθος των µηνυµάτων Ο initiator δεν προωθεί µηνύµατα µε µεγαλύτερο id Τα id αυτά είναι σίγουρο ότι δεν θα νικήσουν! Κάθε initiator µε αναγνωριστικό p Αφαιρεί από το δακτύλιο µήνυµα <tok, q>, όταν q > p Κάθε initiator p Είναι χαµένος όταν λάβει ένα µήνυµα <tok, q> και q < p Είναι αρχηγός όταν λάβει <tok, q> όπου q = p Επιβιώνει µόνο το µήνυµα του νέου αρχηγού Όλα τα υπόλοιπα µηνύµατα αφαιρούνται εν απαιτείται λίστα id σε κάθε initiator Κατανεµηµένα Συστήµατα 06-6
ακτύλιοςµίας κατεύθυνσης Αλγόριθµος initiators Στέλνει µήνυµα <tok, id> Περιµένει να λάβει µήνυµα <tok, id> Εάν το idπου έλαβε είναι µικρότερο από το δικό του Προωθεί το µήνυµα <tok, id> Περιµένει να λάβει µήνυµα <tok, id> Εάν το idπου έλαβε είναι το δικό του Ανακηρύσσεται αρχηγός Ενηµερώνει τις υπόλοιπες Αλγόριθµος non-initiators Περιµένει να λάβει µήνυµα <tok, id> Προωθεί το µήνυµα <tok, id> Κατανεµηµένα Συστήµατα 06-7
ακτύλιοςµίας κατεύθυνσης Παράδειγµα Oι σκιασµένοι κόµβοι είναι οι initiators Τα µηνύµατα αναφέρονται µε σειρά εµφάνισης Πολυπλοκότητα: O(NlogN)κατά µέσο όρο O(N)στην καλύτερη και O(N 2 )στη χειρότερη περίπτωση <tok, > 4 <tok, 3> 3 <tok, 2> <tok, > <tok, 2> 2 <tok, > <tok, > 7 <tok, 7> 6 <tok, 7> <tok, > <tok, > Κατανεµηµένα Συστήµατα 06-8
ακτύλιοςµίας κατεύθυνσης Καλύτερηπερίπτωση: O(N) Όλες οι διεργασίες του δακτυλίου είναι initiators Σε φθίνουσα σειρά ως προς τη φορά του δακτυλίου Όλα τα µηνύµατα κάνουν ένα hop πλην ενός <tok, n> <tok, 0> n- <tok, 0> n 0 <tok, > <tok, 0> <tok, n-> <tok, 0> n-2 <tok, n-2> <tok, 0>... <tok, 2> <tok, 0> Κατανεµηµένα Συστήµατα 06-9
ακτύλιοςµίας κατεύθυνσης Χειρότερηπερίπτωση: O(N 2 ) Σε αύξουσα σειρά ως προς τη φορά του δακτυλίου Tο µήνυµα της διεργασίας i εκτελεί Ν i hops <tok, 0> <tok, n> <tok, n-> 0... n <tok, > <tok, 0> <tok, n->... <tok, > <tok, 0>... <tok, > <tok, 0> 2 <tok, 2> 3 <tok, > <tok, 0> <tok, 3> <tok, 2> <tok, > <tok, 0> Κατανεµηµένα Συστήµατα 06-20
Τοπολογίαδένδρου Μοντέλο ίκτυα µε τοπολογία δένδρου Ή επικαλυπτικό δένδρο πάνω σε δίκτυο Κάθε διεργασία γνωρίζει τα αναγνωριστικά των γειτόνων της εν γνωρίζει τα αναγνωριστικά ή το πλήθος των άλλων Αρχηγός: η διεργασία µε το µικρότερο αναγνωριστικό Initiators Τουλάχιστον το σύνολο των φύλλων του δένδρου Απαιτείται πρόσθετη φάση «ξυπνηµατος» των φύλλων Όλες ξεκινούν στέλνοντας ένα µήνυµα <tok, id> Νοn- Initiators Όλες οι υπόλοιπες διεργασίες στο δένδρο Κατανεµηµένα Συστήµατα 06-2
Τοπολογίαδένδρου Αλγόριθµος όλων των διεργασιών Αναµονή µέχρι να λάβει µηνύµατα <tok, id> Από όλους τους γείτονες εκτός (το πολύ) από έναν Έστω ότι ο µόνος που λείπει είναι ο p0 Όταν ικανοποιηθεί η συνθήκη αυτή // Αρχικά ισχύει µόνο στα φύλλα Υπολογίζει το ελάχιστο id από αυτά που γνωρίζει Συµπεριλαµβάνεται το δικό της Στέλνει µήνυµα <tok, min id > στον p0 Περιµένει µήνυµα <tok, id> από τον p0 Υπολογίζει το ελάχιστο id από αυτά που λαµβάνει Αν το δικό της είναι το ελάχιστο, ανακηρύσσεται αρχηγός Στέλνει σε όλους τους γείτονές της (εκτός του p0) µήνυµα Κατανεµηµένα Συστήµατα 06-22
Τοπολογίαδένδρου Παράδειγµα 2 6 6 7 7 9 5 3 2 9 0 0 4 5 3 4 8 8 Κατανεµηµένα Συστήµατα 06-23
Τοπολογίαδένδρου Παράδειγµα (συνέχεια) δ. 5, 8, 4,, 0: στέλνουν <tok, min id> δ. 3, 9: στέλνουν <tok, min id> δ. 2,7: στέλνουν <tok, min id> δ. : στέλνει <tok, min id> (=) δ. 6 αποφασίζει lost δ. 6:στέλνει <tok, min id> (=) στην δ. δ. : αποφασίζει leader δ. 6, 7, 9,, 2, 3 : στέλνουν <tok, >στους απογόνους Πολυπλοκότητα: O(N) Στέλνονται 2Ν 2 µηνύµατα ύο µηνύµατα ανά ζεύξη Κατανεµηµένα Συστήµατα 06-24
Τοπολογίαδένδρου Πρόβληµα Αν δεν είναι όλα τα φύλλα του δένδρου initiators? O αλγόριθµος δεν δουλεύει! Λύση Μια επιπλέον φάση (Wake Up) Ο initiator ξυπνάει όλες τις υπόλοιπες διεργασίες Τις κάνει όλες initiators Αλγόριθµος initiators Στέλνει µήνυµα <wake up> σε κάθε γείτονά του Περιµένει να λάβει <wake up> από όλους τους γείτονές του // Βεβαιώνεται ότι έχουν ξυπνήσει Αρχίζει την εκλογή Κατανεµηµένα Συστήµατα 06-25
Τοπολογίαδένδρου Αλγόριθµος non-initiators Όταν λάβει ένα µήνυµα <wake up> Γίνεται initiator Στέλνει <wake up> σε κάθε γείτονά του Περιµένει να λάβει <wake up> από όλους τους γείτονές του Εκτός από αυτόν που την έκανε initiator Αρχίζει την εκλογή Πολυπλοκότητα Wake up Κάθε κόµβος στέλνει και λαµβάνει ένα wakeup ανά γείτονα Σε κάθε ζεύξη έχουµε δύο ακριβώς µηνύµατα Συνολικά 2N -2 µηνύµατα Wake up και εκλογή 4Ν - 4 µηνύµατα ~ Ο(Ν) Κατανεµηµένα Συστήµατα 06-26
Τοπολογίαδένδρου Παράδειγµα 6 7 2 9 0 5 3 4 8 Κατανεµηµένα Συστήµατα 06-27
Τοπολογίαδένδρου Μείωση των µηνυµάτων εν χρειάζεται να περάσουµε το δένδρο 4 φορές Συνδυάζουµε ορισµένα µηνύµατα µεταξύ τους Κάθε non initiator εν χρειάζεται να στείλει <wake up> παντού Η διεργασία που του έστειλε το <wake up> είναι ξύπνια Τα φύλλα αρκούν για να ξεκινήσουν τον αλγόριθµο Αντί για <wake up> στέλνουν το µήνυµα <tok, id> Ξεκινάνε την εκλογή αµέσως µόλις ξυπνήσουνε Συνολικά 3Ν 4 + kµηνύµατα ~ Ο(Ν) k : ο αριθµός των διεργασιών που είναι initiators αλλά όχι φύλλα Κατανεµηµένα Συστήµατα 06-28