Ομαδική Επικοινωνία (Group Communication) Κατανεμημένα Συστήματα 1

Σχετικά έγγραφα
Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Αμοιβαίος αποκλεισμός με ασύγχρονη επικοινωνία (ανταλλαγή μηνυμάτων) Ταυτόχρονος Προγραμματισμός 1

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Συνεπής παρατήρηση εκτέλεσης & συνεπείς καθολικές καταστάσεις. Κατανεμημένα Συστήματα 1

Συνεπείς καθολικές καταστάσεις & επιβεβαίωση ιδιοτήτων. Κατανεμημένα Συστήματα 1

Εντοπισμός αδιεξόδου. Κατανεμημένα Συστήματα 1

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Εντοπισμός τερματισμού. Κατανεμημένα Συστήματα 1

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Μετακινούμενος Κώδικας (Mobile Code) Κατανεμημένα Συστήματα 1

Φυσικά και λογικά ρολόγια. Κατανεμημένα Συστήματα 1

Κατανεμημένη συμφωνία (distributed consensus) Κατανεμημένα Συστήματα 1

Διάλεξη 12: Διάχυση Μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Επικοινωνία αίτησης-απάντησης. Κατανεμημένα Συστήματα 1

Ανοχή βλαβών με καταγραφή κατάστασης και οπισθοδρόμηση (checkpoints & rollback) Κατανεμημένα Συστήματα 1

Καθολικέςκαταστάσεις. Ορισµοί Κατασκευή καθολικών καταστάσεων Παθητική στρατηγική Ενεργητική στρατηγική. Κατανεµηµένα Συστήµατα 04-1

Κατανεμημένα Συστήματα με Java. Ενότητα # 2: Διάταξη συμβάντων, καθολικές καταστάσεις Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Επικοινωνία αίτησης-απάντησης. Κατανεμημένα Συστήματα 1

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

Κατανεμημένα Συστήματα Ασκήσεις.

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

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

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Κατανεμημένα Συστήματα Ι

Εκλογήαρχηγού. Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου. Κατανεµηµένα Συστήµατα 06-1

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Εγγυημένη ποιότητα υπηρεσίας

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

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

Συντονισμός και συμφωνία

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τεχνολογία Πολυμέσων. Ενότητα # 16: Πολυεκπομπή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Διάλεξη 16: Πρόβλημα Συμφωνίας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Κατανεμημένα Συστήματα Ι

Μετρικές & Επιδόσεις. Κεφάλαιο V

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

Εκλογή αρχηγού σε σύγχρονο δακτύλιο: Οι αλγόριθμοι LCR και HS. 1 Ο αλγόριθμος LCR (Le Lann, Chang, and Roberts)

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

Κατανεμημένα Συστήματα. Ενότητα # 2: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τρίτη Σειρά Ασκήσεων ΑΣΚΗΣΗ 1 ΑΣΚΗΣΗ 1 ΛΥΣΗ ΑΣΚΗΣΗ 2

Consensus and related problems

Κινητά και Διάχυτα Συστήματα. Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Δίκτυα Απευθείας Ζεύξης. Επικοινωνία µεταξύ δύο υπολογιστών οι οποίοι είναι απευθείας συνδεδεµένοι.

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

a. b. c. d ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 5: Ανοχή βλαβών Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

Κατανεμημένα Συστήματα Ι

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Κατανεμημένα Συστήματα Ι

CSMA/CA στο Κατανεμημένα Ενσωματωμένα Συστήματα Πραγματικού Χρόνου

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 3: Καθολικά κατηγορήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κινητά και Διάχυτα Συστήματα. Ενότητα # 8: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένες δοσοληψίες

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο Φροντιστήριο Ασκήσεις στο TCP

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα

Πρωτόκολλα Ελέγχου προσπέλασης μέσου

Διάλεξη 11: Αιτιότητα Διάταξη Γεγονότων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Δρομολόγηση (Routing)

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Πρωτόκολλο ARP. Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

Διάλεξη 6: Εκλογή Προέδρου σε Σύγχρονους Δακτύλιους. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Λύση: Λύση: Λύση: Λύση:

Επαλήθευση Πρωτοκόλλων

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα. λ από τον ρυθμό μετάδοσής της. Υποθέτοντας ότι ο κόμβος A

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

οµήτης παρουσίασης Marzullo και Neiger αλγόριθµος Παράδειγµα Distributed Debugging Εισαγωγικά

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Δίκτυα Θεωρία

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Κρυπτογραφία. Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι)

Δροµολόγηση (Routing)

ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ. Οδηγίες προς τις Συνεργαζόμενες Τράπεζες

Η πιθανότητα επομένως που ζητείται να υπολογίσουμε, είναι η P(A 1 M 2 ). Η πιθανότητα αυτή μπορεί να γραφεί ως εξής:

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Απαντήσεις. Απάντηση. Απάντηση

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Transcript:

Ομαδική Επικοινωνία (Group Communication) Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr

Ομαδική επικοινωνία Σαφής διαχωρισμός ανάμεσα στις διεργασίες που είναι και σε αυτές που δεν είναι μέλη της ομάδας Ανοιχτή ομαδική επικοινωνία: ο αποστολέας δεν χρειάζεται να είναι απαραίτητα μέλος της ομάδας Κλειστή ομαδική επικοινωνία: ο αποστολέας πρέπει να είναι απαραίτητα μέλος της ομάδας Θα εξετάσουμε την κλειστή ομαδική επικοινωνία, με την μορφή μιας μεσοστρωματικής υπηρεσίας, εστιάζοντας στα πιο βασικά θέματα που προκύπτουν Αξιοπιστία μετάδοσης μηνυμάτων Διαχείριση σύνθεσης ομάδας Σειρά παράδοσης μηνυμάτων Κατανεμημένα Συστήματα 2 lalis@inf.uth.gr

Μοντέλο/υποθέσεις εργασίας Υπηρεσία δικτύου/μεταφοράς send: αποστολή μηνύματος (top-down) deliver: παράδοση μηνύματος (bottom-up) Υπηρεσία ομαδικής επικοινωνίας send: αποστολή ομαδικού μηνύματος deliver: παράδοση ομαδικού μηνύματος Βλάβες fail-stop: η διεργασία σταματά να λειτουργεί και (κάπως) ενημερώνονται όλες οι υπόλοιπες Το δίκτυο είναι αξιόπιστο: δεν χάνει μηνύματα, ούτε δημιουργεί από μόνο του διπλότυπα Κατανεμημένα Συστήματα 3 lalis@inf.uth.gr

Application Application Application send deliver Group Communication send deliver Network Network Network Κατανεμημένα Συστήματα 4 lalis@inf.uth.gr

Basic multicast (BM) Κάθε ομαδικό μήνυμα παραδίδεται το πολύ μια φορά σε κάθε διεργασία/κόμβο που είναι μέλος της ομάδας Αν ο αποστολέας δεν παρουσιάσει βλάβη, το μήνυμα θα παραδοθεί σε όλα τα μέλη (που δεν έχουν βλάβη) Αν ο αποστολέας παρουσιάσει βλάβη (κατά την διαδικασία της αποστολής), δεν δίνεται καμία εγγύηση αναφορικά με τη παράδοση του μηνύματος στα μέλη το μήνυμα μπορεί τελικά να παραδοθεί σε όλα τα μέλη, σε κάποια μέλη ή σε κανένα μέλος της ομάδας Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr

(1) p1 p2 p3 p4 (2) p1 p2 p3 p4 (3) p1 p2 p3 p4 (4) p1 p2 p3 p4 send deliver Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr

application BM-send BM-deliver BM-init B-multicast net-send net-deliver reliable network Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr

BM-Init(procs): grp=procs; BM-send(m): for-each p in grp: net-send(p,<βμ-msg,m>); net-deliver(<βμ-msg,m>): BM-deliver(m); Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr

Παρατηρήσεις Η επανειλημμένη αποστολή προφανώς αποτελεί μη βέλτιστη λύση για μια πραγματική υλοποίηση Μπορεί να γίνουν διάφορες βελτιστοποιήσεις βλέπε επικοινωνία 1->Ν Αν το δίκτυο δεν είναι αξιόπιστο, το πρωτόκολλο πρέπει να επεκταθεί κατάλληλα επιβεβαιώσεις, επανεκπομπές, αναγνώριση διπλοτύπων Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr

Reliable (atomic) multicast (RM) Αν υπάρχει τουλάχιστον ένα μέλος της ομάδας που δεν παρουσιάζει βλάβη και έλαβε το μήνυμα, το μήνυμα θα παραδοθεί τελικά σε όλα τα μέλη της ομάδας (που δεν παρουσιάζουν βλάβη) Η προώθηση μηνυμάτων γίνεται κοινή ευθύνη όλων όχι μόνο του αρχικού αποστολέα Απλή υλοποίηση: κάθε μέλος στο οποίο φτάνει ένα (νέο) ομαδικό μήνυμα, το ξαναστέλνει σε όλους μπορεί να γίνουν διάφορες βελτιστοποιήσεις Κατανεμημένα Συστήματα 10 lalis@inf.uth.gr

(1) reliable multicast p1 p2 p3 p4 (2) ΝΟΤ reliable multicast p1 p2 p3 p4 (3) reliable multicast p1 p2 p3 p4 (4) ΝΟΤ reliable multicast p1 p2 p3 p4 send deliver Κατανεμημένα Συστήματα 11 lalis@inf.uth.gr

application RΜ-send RM-deliver RM-init R-multicast BM-send BM-deliver B-multicast Κατανεμημένα Συστήματα 12 lalis@inf.uth.gr

RM-Init(procs): BM-Init(procs); n=0; ids={}; RM-send(m): n++; BM-send(<RM-MSG,myid.n,m>); BM-deliver(<RM-MSG,pid.k,m>): if (pid.k not in ids) { ids = ids + pid.k; if (pid!= myid) { BM-send(<RM-MSG,pid.k,m>); } RM-deliver(m); } Κατανεμημένα Συστήματα 13 lalis@inf.uth.gr

Παρατηρήσεις Αφού ένα μήνυμα ξαναστέλνεται σε πιο ψηλό επίπεδο, πρέπει να υπάρχει αντίστοιχος εντοπισμός διπλοτύπων Αντί κάθε νέο μήνυμα να ξαναστέλνεται στα «τυφλά» σε όλα τα μέλη της ομάδας, μπορεί να στέλνεται μόνο στα μέλη που (πιθανώς) δεν το έχουν λάβει (ακόμα) απαιτείται κατάλληλη επέκταση Κατανεμημένα Συστήματα 14 lalis@inf.uth.gr

Αντιμετώπιση βλαβών Υποθέτουμε fail-stop, ότι δηλαδή υπάρχει μηχανισμός εντοπισμού βλαβών και ειδοποίησης των διεργασιών Τα προηγούμενα πρωτόκολλα πρέπει να επεκταθούν για να γίνει κατάλληλος χειρισμός βλάβης ενός μέλους Η διεργασία πρέπει να αφαιρείται από την ομάδα, και να μην λαμβάνεται πλέον υπ όψη για την αποστολή μηνυμάτων και παραλαβή επιβεβαιώσεων αν εξακολουθούν να εκκρεμούν επιβεβαιώσεις από την διεργασία που παρουσίασε βλάβη, αυτές απλά αγνοούνται Κατανεμημένα Συστήματα 15 lalis@inf.uth.gr

Uniform reliable multicast Ένα μήνυμα παραδίδεται στην εφαρμογή μόνο όταν πλέον έχει φτάσει, σε επίπεδο υπηρεσίας, σε όλα τα (υφιστάμενα) μέλη της ομάδας Η διαφορά σε σχέση με το απλό RM είναι πως ένα μέλος της ομάδας δεν μπορεί να «χάσει» μηνύματα που έχουν ήδη παραδοθεί σε μέλη που στην συνέχεια παρουσιάζουν βλάβη Αυξημένη «λογική συνέπεια» το αν αυτή είναι χρήσιμη, εξαρτάται από την εφαρμογή Κατανεμημένα Συστήματα 16 lalis@inf.uth.gr

(1) uniform reliable multicast p1 p2 p3 p4 (3) uniform reliable multicast p1 p2 p3 (2) NOT uniform reliable multicast p1 p2 p3 p4 (4) NOT uniform reliable multicast p1 p2 p3 p4 p4 send deliver Κατανεμημένα Συστήματα 17 lalis@inf.uth.gr

Υλοποίηση URM Εξαρτάται από την σημασιολογία/λειτουργικότητα της υπηρεσίας επικοινωνίας που χρησιμοποιούμε Αν η λειτουργία BM-send είναι ημι-σύγχρονη (επιστρέφει όταν το μήνυμα φτάσει σε όλα τα υφιστάμενα μέλη της ομάδας), τότε η υλοποίηση του URM είναι παρόμοια με αυτήν του απλού RM Αν η BM-send είναι ασύγχρονη, τότε χρειάζεται ρητή αναμονή για επιβεβαίωση της άφιξης του μηνύματος η επανεκπομπή ενός μηνύματος, μπορεί να χρησιμεύσει και ως επιβεβαίωση ότι ο αποστολέας έχει λάβει το μήνυμα Κατανεμημένα Συστήματα 18 lalis@inf.uth.gr

URM-Init(procs): BM-Init(procs); grp=procs; n=0; ids ={}; buf={}; acks = {}; URM-send(m): n++; BM-send(<URM-MSG,myid,myid.n,m>); BM-deliver(<URM-MSG,pid2,pid.k,m>): if (pid.k not in ids) { ids = ids + pid.k; buf = buf + <pid.k,m>; acks = acks + <pid.k,myid>; if (pid2!= myid) { BM-send(<URM-MSG,myid,pid.k,m>); } } acks = acks + <pid.k,pid2>; if (for-each pid3 in grp: <pid.k,pid3> in acks) buf = buf - <pid.k,m>; URM-deliver(m); } Κατανεμημένα Συστήματα 19 lalis@inf.uth.gr

Διαχείριση σύνθεσης ομάδας Τι γίνεται αν η σύνθεση της ομάδας αλλάζει; Απομάκρυνση μέλους (λόγω βλάβης) Αποχώρηση μέλους (εθελοντικά) Προσθήκη μέλους Απαιτείται μηχανισμός διαχείρισης (σύνθεσης) ομάδας Ανανέωση σύνθεσης σε επίπεδο εφαρμογής Συνεπής παράδοση μηνυμάτων Κατανεμημένα Συστήματα 20 lalis@inf.uth.gr

p2 p1 group-level communication p3 leave join p4 Κατανεμημένα Συστήματα 21 lalis@inf.uth.gr

Εικόνα τρέχουσας σύνθεσης Ιδανικό: όλα τα μέλη έχουν ανά πάσα στιγμή την ίδια εικόνα για την σύνθεση της ομάδας P 1,P 2 g : view(p 1,t) = view(p 2,t) Σύγχρονο σύστημα: μπορεί να επιτευχθεί μερικώς, με άνω όριο στην καθυστέρηση/απόκλιση ενημέρωσης για αλλαγές σύνθεσης της ομάδας ανάμεσα στα μέλη Ασύγχρονο σύστημα: πρακτικά ανέφικτο Εφικτό: ενημέρωση των μελών με κοινή σειρά Κατανεμημένα Συστήματα 22 lalis@inf.uth.gr

Μηνύματα (αλλαγής) σύνθεσης Ο μηχανισμός διαχείρισης σύνθεσης ενημερώνει τα μέλη στέλνοντας τους την τρέχουσα σύνθεση της ομάδας (view) κάθε φορά που αυτή αλλάζει V={P 1,P 2,,P Ν } P 1 g P 2 g P Ν g Ενημέρωση σύνθεσης V στην P την χρονική στιγμή t update(p,v,t) Αποστολή μηνύματος και παραλαβή μηνύματος στην P στο πλαίσιο της τρέχουσας σύνθεσης V send(m)@p V, recv(m)@p V Κατανεμημένα Συστήματα 23 lalis@inf.uth.gr

Ιδιότητες ενημέρωσης σύνθεσης Πρόοδος ενημέρωσης: αν P 1 λάβει την σύνθεση V, κάθε άλλο μέλος P 2 της ομάδας (εφόσον υφίσταται) έχει/θα λάβει την σύνθεση V update(p 1,V,t) P 2 g : update(p 2,V,t') Συνέπεια ενημέρωσης: τα μέλη ενημερώνονται για τις αλλαγές σύνθεσης της ομάδας με την ίδια σειρά update(p 1,V 1,t 1 ) update(p 1,V 2,t 2 ) t 1 <t 2 P 2 g : update(p 2,V 1,t' 1 ) update(p 2,V 2,t' 2 ) t' 1 <t' 2 Κατανεμημένα Συστήματα 24 lalis@inf.uth.gr

View-synchronous group multicast Συνέπεια παράδοσης μηνυμάτων: αν το μήνυμα m σταλεί στο πλαίσιο της σύνθεσης V, θα παραδοθεί σε όλες τις διεργασίες που εξακολουθούν να είναι μέλη της ομάδας στο πλαίσιο της σύνθεσης V send(m)@p 1 V P 2 g : recv(m)@p 2 V Απαιτείται συντονισμός ανάμεσα στην διαχείριση σύνθεσης και την παράδοση μηνυμάτων εφαρμογής Προτού γίνει μετάβαση στην επόμενη σύνθεση, πρέπει να μεταδοθούν/παραδοθούν όλα τα μηνύματα που «ανήκουν» στο πλαίσιο της προηγούμενης σύνθεσης Η συνέπεια παράδοσης αφορά τόσο στην μείωση όσο και στην αύξηση της σύνθεσης της ομάδας μπορεί να γίνει διαφοροποίηση Κατανεμημένα Συστήματα 25 lalis@inf.uth.gr

(1) view synchronous (2) NOT view synchronous p1 p1 p2 p2 p3 p3 {p1,p2,p3} {p2,p3} {p1,p2,p3} {p2,p3} (3) NOT view synchronous p1 p2 p3 (4) view synchronous p1 p2 p3 {p1,p2,p3} {p2,p3} {p1,p2,p3} {p1,p2} send deliver Κατανεμημένα Συστήματα 26 lalis@inf.uth.gr

(1) view synchronous p1 p2 p3 (2) NOT view synchronous p1 p2 p3 {p1,p2} {p1,p2,p3} {p1,p2} {p1,p2,p3} (3) NOT view synchronous p1 p2 p3 (4) ΝΟΤ view synchronous p1 p2 p3 {p1,p2} {p1,p2,p3} {p1,p2} {p1,p2,p3} send deliver Κατανεμημένα Συστήματα 27 lalis@inf.uth.gr

V view change in progress V' application send delivered delivered group com. network έναρξη διαδικασίας αλλαγής σύνθεσης αναμονή για μηνύματα προς παράδοση στο πλαίσιο της σύνθεσης V ανακοίνωση της νέας σύνθεσης V' Κατανεμημένα Συστήματα 28 lalis@inf.uth.gr

application RVSM-send RVSM-deliver View Manager view-change RVS-multicast buf ενδιάμεση αποθήκη για μηνύματα που φτάνουν εκτός πλαισίου της τρέχουσας σύνθεσης RM-send RM-deliver R-multicast Κατανεμημένα Συστήματα 29 lalis@inf.uth.gr

RVSM-Init(procs): RM-Init(procs); view=procs; vnο=1; n=0; buf={}; ids={}; vids={}; RVSM-send(m): n++; vids = vids + myid.n; RM-send(<RVSM-MSG,myid.n,vnο,m>); RM-deliver(<RVSM-MSG,pid.k,mvnο,m>): if (mvno!= vno) { buf = buf + <pid.k,mvnο,m>; } else { ids = ids + pid.k; vids = vids + pid.k; RVSM-deliver(m); } View-Change(newview): RSVM-view-change-started(); // block calls to RVSM-send RM-send(<RVSM-VSYNC,myid,vnο,vids>); for-each pid in view: { RM-receive(<RVSM-VSYNC,pid,vnο,pvids>); vids = vids + pvids; } while {ids!= vids) {} /* wait to deliver all msgs in old view */ ids = {}; vids = {}; view = newview; vnο++; RSVM-view-change-completed(view); // unblock calls to RVSM-send while (exists <pid.k,mvno,m> in buf: mvnο == vnο) { buf = buf <pid.k,mvno,m>; ids = ids + pid.k; RVSM-deliver(m); } Κατανεμημένα Συστήματα 30 lalis@inf.uth.gr

Υλοποίηση διαχείρισης σύνθεσης Κεντρικοποιημένη: μια διακεκριμένη διεργασία «εγκρίνει» τις αλλαγές, και ενημερώνει όλα τα μέλη Συμμετρική: η «έγκριση» των αλλαγών σύνθεσης συναποφασίζεται από όλα τα μέλη της ομάδας, μέσα από κατάλληλο συγχρονισμό (πρωτόκολλο) Μπορεί να γίνει συνδυασμός του πρωτοκόλλου απόφασης αλλαγής σύνθεσης και του πρωτοκόλλου μετάδοσης/παράδοσης μηνυμάτων στην ομάδα Κατανεμημένα Συστήματα 31 lalis@inf.uth.gr

Επιπλέον θέματα υλοποίησης Ποια οντότητα/διεργασία «εκπροσωπεί» την ομάδα; Τι γίνεται αν η ομάδα είναι «κενή»; Πως ανακαλύπτει μια νεοεισερχόμενη διεργασία την ομάδα, και σε ποια διεργασία να στείλει την αίτηση; βλέπε γνωστές λύσεις: υπηρεσία καταλόγου, πολυεκπομπή Κατάλληλος χειρισμός βλαβών κατά τη διάρκεια της διαδικασίας αλλαγής/ενημέρωσης σύνθεσης η βλάβη ισοδυναμεί με αυτόματη αποχώρηση από την ομάδα πότε γίνεται η σχετική ανακοίνωση της αλλαγής σύνθεσης; Κατανεμημένα Συστήματα 32 lalis@inf.uth.gr

Σειρά παράδοσης μηνυμάτων FIFO order: τα μηνύματα παραδίδονται σε κάθε μέλος με την σειρά με την οποία τα έστειλε ο αποστολέας Αιτιολογική σειρά (causal order): τα μηνύματα παραδίδονται σε κάθε μέλος της ομάδας σύμφωνα με την (αιτιο)λογική σειρά τους Καθολική σειρά (total order): όλα τα μηνύματα παραδίδονται σε κάθε μέλος με την ίδια σειρά Κατανεμημένα Συστήματα 33 lalis@inf.uth.gr

Βασική αρχή λειτουργίας Κάθε μήνυμα που φτάνει από το δίκτυο (κάτω στρώμα επικοινωνίας/μεταφοράς) τοποθετείται σε μια ενδιάμεση αποθήκη Ένα μήνυμα βγαίνει από την αποθήκη και παραδίδεται στην εφαρμογή όταν είναι σίγουρο πως έχουν ήδη παραδοθεί όλα τα «προηγούμενα» μηνύματα Λέμε ότι το μήνυμα είναι πλέον σταθερό (stable) Οι απαιτήσεις για την σειρά παράδοσης εξαρτώνται από το είδος της επιθυμητής σειριοποίησης Κατανεμημένα Συστήματα 34 lalis@inf.uth.gr

FIFO order FIFO-Multicast NOT FIFO-Multicast p1 p2 p3 p4 m1 m2 p1 p2 p3 p4 m1 m2 send(m1) send(m2) deliver(m1) deliver(m2) Κατανεμημένα Συστήματα 35 lalis@inf.uth.gr

Reliable FIFO multicast (R-FIFO) Στο d[pid] αποθηκεύονται οι σειριακοί αριθμοί του τελευταίου μηνύματος που έστειλε η διεργασία pid και έχει ήδη παραδοθεί στην εφαρμογή Αρχικά, d[pid] = 0 Τα μηνύματα που καταφθάνουν από το δίκτυο τοποθετούνται σε ενδιάμεση αποθήκη, μέχρι να μπορεί να παραδοθούν με την σωστή σειρά Η αποθήκη ελέγχεται για το αν υπάρχει μήνυμα m με αποστολέα pid και σειριακό αριθμό k == d[pid]+1 Τότε το m απομακρύνεται από την αποθήκη, παραδίδεται στην εφαρμογή, και d[pid] = d[pid]+1 Κατανεμημένα Συστήματα 36 lalis@inf.uth.gr

application RFM-send RFM-deliver RFM-init RF-multicast buf ενδιάμεση αποθήκη για μηνύματα που φτάνουν εκτός σειράς αποστολής RM-send RM-deliver R-multicast Κατανεμημένα Συστήματα 37 lalis@inf.uth.gr

RFM-Init(procs): RM-Init(procs); n=0; buf={}; d[]={0,,0}; RFM-send(m): n++; RM-send(<RFM-MSG,myid.n,m>); RM-deliver(<RFM-MSG,pid.k,m>): buf = buf + <pid.k,m>; checkbuffer(); checkbuffer: while (exists <pid.k,m> in buf: k == d[pid]+1) { buf = buf - <pid.k,m>; d[pid] = d[pid] + 1; RFM-deliver(m); } Κατανεμημένα Συστήματα 38 lalis@inf.uth.gr

Causal order Causal-Multicast NOT Causal-Multicast p1 m1 p1 m1 p2 p2 p3 m2 p3 m2 p4 p4 send(m1) send(m2) deliver(m1) deliver(m2) Κατανεμημένα Συστήματα 39 lalis@inf.uth.gr

Causal multicast Τα μηνύματα που καταφθάνουν από το δίκτυο τοποθετούνται σε ενδιάμεση αποθήκη, μέχρι να μπορεί να παραδοθούν με την σωστή σειρά Πως καταγράφεται η λογική σειρά των μηνυμάτων; Επισυνάπτεται ο σειριακός αριθμός (για FIFO) και τα αναγνωριστικά όσων μηνυμάτων είχαν παραδοθεί στην εφαρμογή όταν δημιουργήθηκε το μήνυμα (ως «λογική προϊστορία» του μηνύματος) Κατανεμημένα Συστήματα 40 lalis@inf.uth.gr

Application CM-init CM-send RM-send CM-deliver Causal multicast buf RM-deliver κάθε μήνυμα κρατείται σε ενδιάμεση αποθήκη μέχρι να είναι σίγουρο πως έχουν παραδοθεί στην εφαρμογή όλα τα (λογικά) προηγούμενα μηνύματα που έχουν σταλεί στην ομάδα Reliable multicast Κατανεμημένα Συστήματα 41 lalis@inf.uth.gr

{} {} {} {} {} {} {} {} αναγνωριστικά μηνυμάτων που έχουν παραδοθεί στην εφαρμογή αποθήκη μηνυμάτων Κατανεμημένα Συστήματα 42 lalis@inf.uth.gr

{} {} <m1,{}> {} {} {} {} {} {} Κατανεμημένα Συστήματα 43 lalis@inf.uth.gr

{m1 {} } {} {m1 {} } {} {m1 {} } {m1 {} } {} {} Κατανεμημένα Συστήματα 44 lalis@inf.uth.gr

{}->m1 {1} {}->m1 {1} {}->m1 {1} {}->m1 {1} Κατανεμημένα Συστήματα 45 lalis@inf.uth.gr

{} {1} {} {1} {} {} {1} {1} Κατανεμημένα Συστήματα 46 lalis@inf.uth.gr

{} {1} <m2,{1}> {} {1} {} {} {1} {1} Κατανεμημένα Συστήματα 47 lalis@inf.uth.gr

{m2 {1} } {1} {} {1} <m2,{1}> {m2 {1} } {m2 {1} } {1} {1} Κατανεμημένα Συστήματα 48 lalis@inf.uth.gr

{}->m2 {1,2} {} {1} <m2,{1}> {}->m2 {1,2} {}->m2 {1,2} Κατανεμημένα Συστήματα 49 lalis@inf.uth.gr

{} {1,2} {} {1} <m2,{1}> {} {} {1,2} {1,2} Κατανεμημένα Συστήματα 50 lalis@inf.uth.gr

{} {1,2} <m3,{1,2}> {} {1} <m2,{1}> {} {} {1,2} {1,2} Κατανεμημένα Συστήματα 51 lalis@inf.uth.gr

{m3 {1,2} } {1,2} <m2,{1}> {m3 {1,2} } {1} {m3 {1,2} } {m3 {1,2} } {1,2} {1,2} Κατανεμημένα Συστήματα 52 lalis@inf.uth.gr

{}->m3 {1,2,3} <m2,{1}> {m3 {1,2} } {1} {}->m3 {1,2,3} {}->m3 {1,2,3} Κατανεμημένα Συστήματα 53 lalis@inf.uth.gr

{} {1,2,3} <m2,{1}> {m3 {1,2} } {1} {} {} {1,2,3} {1,2,3} Κατανεμημένα Συστήματα 54 lalis@inf.uth.gr

{} {1,2,3} {m3 {1,2},m2 {1} } {1} {} {} {1,2,3} {1,2,3} Κατανεμημένα Συστήματα 55 lalis@inf.uth.gr

{} {1,2,3} {m3 {1,2} }->m2 {1,2} {} {} {1,2,3} {1,2,3} Κατανεμημένα Συστήματα 56 lalis@inf.uth.gr

{} {1,2,3} {m3 {1,2} } {1,2} {} {} {1,2,3} {1,2,3} Κατανεμημένα Συστήματα 57 lalis@inf.uth.gr

{} {1,2,3} {}->m3 {1,2,3} {} {} {1,2,3} {1,2,3} Κατανεμημένα Συστήματα 58 lalis@inf.uth.gr

{} {1,2,3} {} {1,2,3} {} {} {1,2,3} {1,2,3} Κατανεμημένα Συστήματα 59 lalis@inf.uth.gr

CM-Init(procs): RM-Init(procs); n=0; buf={}; d[]={0,,0}; ids={}; CM-send(m): n++; RM-send(<CM-MSG,myid.n,ids,m>); On RM-deliver(<CM-MSG,pid.k,mids,m>): buf = buf + <pid.k,mids,m>; checkbuffer(); checkbuffer: while (exists <pid.k,mids,m> in buf: k == d[pid]+1 && mids ids) { buf = buf - <pid.k,mids,m>; d[pid] = d[pid] + 1; ids = ids + pid.k; CM-deliver(m); } Κατανεμημένα Συστήματα 60 lalis@inf.uth.gr

Βελτιστοποίηση Ο αριθμός των μηνυμάτων που παραδίδονται στην εφαρμογή, και άρα ο αριθμός των αναγνωριστικών που επισυνάπτονται σε κάθε μήνυμα μεγαλώνει συνεχώς Η περισσότερη πληροφορία είναι περιττή καθώς η σχέση λογικής εξάρτησης είναι μεταβατική Αν το m1 προηγείται του m2, και το m2 προηγείται του m3, αρκεί στο m3 να επισυναφθεί το αναγνωριστικό του m2 (δεν χρειάζεται και το αναγνωριστικό του m1) Επισυνάπτονται μόνο τα αναγνωριστικά των πιο πρόσφατων λογικά προηγούμενων μηνυμάτων Το πολύ Ν αναγνωριστικά, ένα από κάθε διεργασία Κατανεμημένα Συστήματα 61 lalis@inf.uth.gr

Total order Total-Multicast NOT Total-Multicast p1 m1 p1 m1 p2 p2 p3 m2 p3 m2 p4 p4 send(m1) send(m2) delivered(m1) delivered(m2) Κατανεμημένα Συστήματα 62 lalis@inf.uth.gr

Application TM-send TM-deliver TM-init Total multicast buf κάθε μήνυμα κρατείται σε ενδιάμεση αποθήκη μέχρι να είναι σίγουρο πως έχει έρθει η σειρά του RM-send RM-deliver Reliable multicast Κατανεμημένα Συστήματα 63 lalis@inf.uth.gr

Πρωτόκολλο με συντονιστή Κάθε μήνυμα στέλνεται σε όλα τα μέλη της ομάδας Τα μηνύματα που καταφθάνουν από το δίκτυο τοποθετούνται σε ενδιάμεση αποθήκη Μια διακεκριμένη διεργασία (συντονιστής) αναθέτει σε κάθε μήνυμα που λαμβάνει έναν σειριακό αριθμό και τον στέλνει/ανακοινώνει στα μέλη (και στην ίδια) Τα μηνύματα αφαιρούνται από την αποθήκη και παραδίδονται στην εφαρμογή με βάση τον σειριακό αριθμό που τους αναθέτει ο συντονιστής Αφού οι σειριακοί αριθμοί δίνονται από την ίδια διεργασία, επιτυγχάνεται κοινή σειρά παράδοσης Κατανεμημένα Συστήματα 64 lalis@inf.uth.gr

1: ένα νέο μήνυμα στέλνεται σε όλα τα μέλη της ομάδας <m> 2: ο συντονιστής στέλνει τον σειριακό αριθμό παράδοσης για αυτό το μήνυμα σε όλα τα μέλη <n> 3: κάθε μέλος παραδίδει τα μηνύματα που λαμβάνει στην τοπική εφαρμογή σύμφωνα με τους σειριακούς αριθμούς που στέλνει ο συντονιστής deliver m as n th message Κατανεμημένα Συστήματα 65 lalis@inf.uth.gr

0 0,{} σειριακός αριθμός που ανατέθηκε στο τελευταίο μήνυμα της ομάδας 0,{} 0,{} 0,{} σειριακός αριθμός μηνύματος που παραδόθηκε τελευταίο αποθήκη μηνυμάτων Κατανεμημένα Συστήματα 66 lalis@inf.uth.gr

0 0,{} <m1> 0,{} 0,{} 0,{} Κατανεμημένα Συστήματα 67 lalis@inf.uth.gr

0 0,{m1? } 0,{m1? } 0,{m1? } 0,{m1? } Κατανεμημένα Συστήματα 68 lalis@inf.uth.gr

1 0,{m1? } <m1,1> 0,{m1? } 0,{m1? } 0,{m1? } Κατανεμημένα Συστήματα 69 lalis@inf.uth.gr

1 0,{m1 1 } 0,{m1 1 } 0,{m1 1 } 0,{m1 1 } Κατανεμημένα Συστήματα 70 lalis@inf.uth.gr

1 1,{}->m1 1,{}->m1 1,{}->m1 1,{}->m1 Κατανεμημένα Συστήματα 71 lalis@inf.uth.gr

1 1,{} 1,{} 1,{} 1,{} Κατανεμημένα Συστήματα 72 lalis@inf.uth.gr

1 1,{} <m2> 1,{} 1,{} 1,{} Κατανεμημένα Συστήματα 73 lalis@inf.uth.gr

1 1,{m2? } 1,{m2? } 1,{m2? } 1,{m2? } Κατανεμημένα Συστήματα 74 lalis@inf.uth.gr

2 1,{m2? } <m2,2> 1,{m2? } 1,{m2? } 1,{m2? } Κατανεμημένα Συστήματα 75 lalis@inf.uth.gr

2 1,{m2 2 } 1,{m2 2 } 1,{m2 2 } 1,{m2 2 } Κατανεμημένα Συστήματα 76 lalis@inf.uth.gr

2 2,{}->m2 2,{}->m2 2,{}->m2 2,{}->m2 Κατανεμημένα Συστήματα 77 lalis@inf.uth.gr

2 2,{} 2,{} 2,{} 2,{} Κατανεμημένα Συστήματα 78 lalis@inf.uth.gr

2 2,{} <m3> 2,{} 2,{} 2,{} Κατανεμημένα Συστήματα 79 lalis@inf.uth.gr

2 2,{} <m3> 2,{m3? } 2,{m3? } 2,{m3? } Κατανεμημένα Συστήματα 80 lalis@inf.uth.gr

2 2,{} <m3> <m4> 2,{m3? } 2,{m3? } 2,{m3? } Κατανεμημένα Συστήματα 81 lalis@inf.uth.gr

2 2,{m4? } <m3> 2,{m3?,m4? } 2,{m3? } <m4> 2,{m3?,m4? } Κατανεμημένα Συστήματα 82 lalis@inf.uth.gr

3 2,{m4? } <m3> <m4,3> 2,{m3?,m4? } 2,{m3? } <m4> 2,{m3?,m4? } Κατανεμημένα Συστήματα 83 lalis@inf.uth.gr

3 2,{m4 3 } <m3> 2,{m3?,m4 3 } <m4> 2,{m3?,*m4* 3 } 2,{m3?,m4 3 } Κατανεμημένα Συστήματα 84 lalis@inf.uth.gr

3 3,{}->m4 <m3> 3,{m3? }->m4 <m4> 2,{m3?,*m4* 3 } 3,{m3? }->m4 Κατανεμημένα Συστήματα 85 lalis@inf.uth.gr

3 3,{} <m3> 3,{m3? } <m4> 2,{m3?,*m4* 3 } 3,{m3? } Κατανεμημένα Συστήματα 86 lalis@inf.uth.gr

3 3,{m3? } 3,{m3? } <m4> 2,{m3?,*m4* 3 } 3,{m3? } Κατανεμημένα Συστήματα 87 lalis@inf.uth.gr

4 3,{m3? } <m3,4> 3,{m3? } <m4> 2,{m3?,*m4* 3 } 3,{m3? } Κατανεμημένα Συστήματα 88 lalis@inf.uth.gr

4 3,{m3 4 } 3,{m3 4 } <m4> 2,{m3 4,*m4* 3 } 3,{m3 4 } Κατανεμημένα Συστήματα 89 lalis@inf.uth.gr

4 4,{}->m3 4,{}->m3 <m4> 2,{m3 4,*m4* 3 } 4,{}->m3 Κατανεμημένα Συστήματα 90 lalis@inf.uth.gr

4 4,{} 4,{} <m4> 2,{m3 4,*m4* 3 } 4,{} Κατανεμημένα Συστήματα 91 lalis@inf.uth.gr

4 4,{} 4,{} 2,{m3 4,m4 3 } 4,{} Κατανεμημένα Συστήματα 92 lalis@inf.uth.gr

4 4,{} 4,{} 3,{m3 4 }->m4 4,{} Κατανεμημένα Συστήματα 93 lalis@inf.uth.gr

4 4,{} 4,{} 4,{}->m3 4,{} Κατανεμημένα Συστήματα 94 lalis@inf.uth.gr

4 4,{} 4,{} 4,{} 4,{} Κατανεμημένα Συστήματα 95 lalis@inf.uth.gr

TM-Init(procs): RM-Init(procs); n=0; buf={}; d=0; TM-send(m): n++; RM-send(<ΤΜ-MSG,myid.n,m>); TM-Init: s=0; Sequencer RM-deliver(<ΤΜ-MSG,pid.k,m>): buf = buf + <pid.k,*,m>; checkbuffer(); RM-deliver(<TM-MSG,pid.k,m>): s++; RM-send(g,<TM-SEQ,pid.k,s>); RM-deliver(<ΤΜ-SEQ,pid.k,s>): buf = buf + <pid.k,s,*>; checkbuffer(); checkbuffer: while (exists <pid.k,s,m> in buf: s == d+1) { buf = buf - <pid.k,s,m>; d = d + 1; TM-deliver(m); } Κατανεμημένα Συστήματα 96 lalis@inf.uth.gr

Βλάβες βελτιστοποιήσεις Αν ο συντονιστής παρουσιάσει βλάβη, πρέπει να επιλεγεί νέος που θα συνεχίσει την έκδοση σειριακών αριθμών από εκεί που σταμάτησε ο προηγούμενος Είναι σίγουρο ότι όλοι έχουν ήδη λάβει ή θα λάβουν τον τελευταίο σειριακό αριθμό που έστειλε ο παλιός συντονιστής; Εξαρτάται από τι; Είναι σίγουρο ότι όλοι έχουν λάβει ή θα λάβουν το αντίστοιχο μήνυμα εφαρμογής; Όχι γιατί; Μπορεί να γίνουν διάφορες βελτιστοποιήσεις φυσική πολυεκπομπή, έξυπνα σχήματα επιβεβαίωσης, Κατανεμημένα Συστήματα 97 lalis@inf.uth.gr

Συμμετρικό πρωτόκολλο Κάθε μήνυμα στέλνεται σε όλα τα μέλη της ομάδας Όταν μια διεργασία λάβει ένα μήνυμα, το τοποθετεί σε αποθήκη, αυξάνει έναν προτεινόμενο σειριακό αριθμό παράδοσης που στέλνει στον αποστολέα και περιμένει να λάβει τον «οριστικό» σειριακό αριθμό παράδοσης Ο αποστολέας περιμένει να λάβει προτάσεις από όλες τις διεργασίες, επιλέγει ως οριστικό σειριακό αριθμό την μεγαλύτερη πρόταση, και την στέλνει σε όλα τα μέλη Κάθε διεργασία παραδίδει τα μηνύματα με βάση τον οριστικό σειριακό που στέλνει ο αποστολέας (ανανεώνοντας την τοπική τιμή αντίστοιχα) Κατανεμημένα Συστήματα 98 lalis@inf.uth.gr

1: το μήνυμα στέλνεται σε όλα τα μέλη της ομάδας <m> 2: κάθε μέλος προτείνει έναν σειριακό αριθμό παράδοσης (που αυξάνεται κατάλληλα) <n1> <n0> <n3> <n2> 3: ο αποστολέας επιλέγει την μεγαλύτερη τιμή και την στέλνει σε όλα τα μέλη <n> 4: κάθε μέλος παραδίδει τα μηνύματα που λαμβάνει σύμφωνα με τον οριστικό σειριακό αριθμό deliver m as n th message Κατανεμημένα Συστήματα 99 lalis@inf.uth.gr

Σειριακοί αριθμοί Ένα μήνυμα δεν μπορεί να παραδοθεί στην εφαρμογή χωρίς να το έχουν λάβει (και να έχουν προτείνει έναν σειριακό αριθμό παράδοσης) όλα τα μέλη της ομάδας Αν μια διεργασία προτείνει έναν σειριακό αριθμό, ξέρει ότι αυτό το μήνυμα δεν θα λάβει μικρότερο οριστικό σειριακό αριθμό μπορεί όμως να λάβει μεγαλύτερο Οι σειριακοί αριθμοί είναι της μορφής (k.p) για να μην μπορεί δύο μηνύματα να λάβουν τον ίδιο αριθμό Σε περίπτωση «ισότητας» ανάμεσα σε (k.p1) και (k.p2), γίνεται σύγκριση των αναγνωριστικών P1 και P2 Κατανεμημένα Συστήματα 100 lalis@inf.uth.gr

0.0,{} 0.2,{} 0.1,{} 0.3,{} τοπικός σειριακός αριθμός αποθήκη μηνυμάτων Κατανεμημένα Συστήματα 101 lalis@inf.uth.gr

0.0,{} <m1> 0.2,{} 0.1,{} 0.3,{} Κατανεμημένα Συστήματα 102 lalis@inf.uth.gr

1.0 1.0,{m1} * <m1,1.0> <m1,1.2> 1.2 1.2,{m1} * <m1,1.1> proposals: - 1.0-1.1-1.2-1.3 1.1 1.1,{m1} * <m1,1.3> 1.3 1.3,{m1} * Κατανεμημένα Συστήματα 103 lalis@inf.uth.gr

1.0 1.0,{m1} * <m1,1.3> 1.2 1.2,{m1} * proposals: - 1.0-1.1-1.2-1.3 1.1 1.1,{m1} * 1.3 1.3,{m1} * Κατανεμημένα Συστήματα 104 lalis@inf.uth.gr

1.0 1.0,{m1} 1.3 1.2 1.2,{m1} 1.3 1.1 1.1,{m1} 1.3 1.3 1.3,{m1} 1.3 Κατανεμημένα Συστήματα 105 lalis@inf.uth.gr

1.0,{}->m1 1.2,{}->m1 1.1,{}->m1 1.3,{}->m1 Κατανεμημένα Συστήματα 106 lalis@inf.uth.gr

1.0,{} 1.2,{} 1.1,{} 1.3,{} Κατανεμημένα Συστήματα 107 lalis@inf.uth.gr

1.0,{} <m2> 1.2,{} 1.1,{} 1.3,{} Κατανεμημένα Συστήματα 108 lalis@inf.uth.gr

<m2,2.0> <m2,2.1> 2.1 2.1,{m2} * 2.0 2.0,{m2} * 2.2,{m2} <m2,2.3> 2.3 2.3,{m2} * <m2,2.2> 2.2 * proposals: - 2.0-2.1-2.2-2.3 Κατανεμημένα Συστήματα 109 lalis@inf.uth.gr

2.0 2.0,{m2} * <m2,2.3> 2.2 2.2,{m2} * 2.1 2.1,{m2} * 2.3 2.3,{m2} * proposals: - 2.0-2.1-2.2-2.3 Κατανεμημένα Συστήματα 110 lalis@inf.uth.gr

2.0 2.0,{m2} 2.3 2.2 2.2,{m2} 2.3 2.1 2.1,{m2} 2.3 2.3 2.3,{m2} 2.3 Κατανεμημένα Συστήματα 111 lalis@inf.uth.gr

2.0,{}->m2 2.2,{}->m2 2.1,{}->m2 2.3,{}->m2 Κατανεμημένα Συστήματα 112 lalis@inf.uth.gr

2.0,{} 2.2,{} 2.1,{} 2.3,{} Κατανεμημένα Συστήματα 113 lalis@inf.uth.gr

2.0,{} <m3> 2.2,{} 2.1,{} 2.3,{} Κατανεμημένα Συστήματα 114 lalis@inf.uth.gr

2.0,{} <m3> <m3,3.2> <m3,3.1> 3.1 3.1,{m3} * 3.2,{m3} <m3,3.3> 3.3 3.3,{m3} * 3.2 * proposals: -??? - 3.1-3.2-3.3 Κατανεμημένα Συστήματα 115 lalis@inf.uth.gr

2.0,{} <m3> 3.1 3.1,{m3} * <m4> 3.2,{m3} 3.3 3.3,{m3} * 3.2 * proposals: -??? - 3.1-3.2-3.3 Κατανεμημένα Συστήματα 116 lalis@inf.uth.gr

<m4,4.1> proposals: - 3.0-4.1-4.2-4.3 <m4,3.0> 3.1 4.1,{m3,m4} * 4.1 * 3.0 3.0,{m4} * <m4,4.2> 3.2 4.2 4.2,{m3,m4} <m4,4.3> <m3> 3.3 * 4.3 4.3,{m3,m4} * * * proposals: -??? - 3.1-3.2-3.3 Κατανεμημένα Συστήματα 117 lalis@inf.uth.gr

3.0 3.0,{m4} * <m3> 3.2 4.2,{m3,m4} * 4.2 * proposals: - 3.0-4.1-4.2-4.3 3.1 4.1 4.1,{m3,m4} * * 3.3 4.3 4.3,{m3,m4} * * proposals: -??? - 3.1-3.2-3.3 Κατανεμημένα Συστήματα 118 lalis@inf.uth.gr

3.0 4.0,{m4,m3} * 4.0 * <m3,4.0> 3.2 4.2,{m3,m4} * 4.2 * proposals: - 3.0-4.1-4.2-4.3 3.1 4.1 4.1,{m3,m4} * * 3.3 4.3 4.3,{m3,m4} * * proposals: - 4.0-3.1-3.2-3.3 Κατανεμημένα Συστήματα 119 lalis@inf.uth.gr

3.0 4.0 4.0,{m4,m3} * * <m4,4.3> 3.2 4.2,{m3,m4} * 4.2 * proposals: - 3.0-4.1-4.2-4.3 3.1 4.1 4.1,{m3,m4} * * 3.3 4.3 4.3,{m3,m4} * * proposals: - 4.0-3.1-3.2-3.3 Κατανεμημένα Συστήματα 120 lalis@inf.uth.gr

3.0 4.0 4.0,{m4,m3} 4.3 * 3.1 4.1,{m3,m4} * 4.1 4.3 3.2 4.2,{m3,m4} 3.3 4.3 4.3,{m3,m4} * * 4.3 4.2 4.3 proposals: - 4.0-3.1-3.2-3.3 Κατανεμημένα Συστήματα 121 lalis@inf.uth.gr

3.0 4.0 4.0,{m4,m3} 4.3 * 3.1 4.1,{m3,m4} * <m3,4.0> 4.1 4.3 3.2 4.2,{m3,m4} 3.3 4.3 4.3,{m3,m4} * * 4.3 4.2 4.3 proposals: - 4.0-3.1-3.2-3.3 Κατανεμημένα Συστήματα 122 lalis@inf.uth.gr

3.0 4.0 4.0,{m4,m3} 4.3 4.0 3.2 4.2,{m3,m4} 4.0 4.2 4.3 3.1 4.1 4.1,{m3,m4} 4.0 4.3 3.3 4.3 4.3,{m3,m4} 4.0 4.3 Κατανεμημένα Συστήματα 123 lalis@inf.uth.gr

3.0 4.0,{m4}->m3 4.3 4.2 4.2,{m4}->m3 4.3 4.1 4.1,{m4}->m3 4.3 4.3 4.3,{m4}->m3 4.3 Κατανεμημένα Συστήματα 124 lalis@inf.uth.gr

3.0 4.0,{m4} 4.3 4.2 4.2,{m4} 4.3 4.1 4.1,{m4} 4.3 4.3 4.3,{m4} 4.3 Κατανεμημένα Συστήματα 125 lalis@inf.uth.gr

4.0,{}->m4 4.2,{}->m4 4.1,{}->m4 4.3,{}->m4 Κατανεμημένα Συστήματα 126 lalis@inf.uth.gr

4.0,{} 4.2,{} 4.1,{} 4.3,{} Κατανεμημένα Συστήματα 127 lalis@inf.uth.gr

TM-Init(procs): RM-Init(procs); grp=procs; n=0; vote=0; buf={}; TM-send(m): n++; s = (0.0); RM-send(<TM-MSG,myid.n,m>); for-each pid in grp: { net-receive(pid,<tm-vote,myid.n,mvote>); s = max(s,(mvote.pid)); } RM-send(<TM-SEQ,myid.n,s>); RM-deliver(<TM-MSG,pid.k,m>): vote++; buf = buf + <pid.k,(vote.myid),*,m>; net-send(p,<tm-vote,pid.k,vote>); RM-deliver(<TM-SEQ,pid.k,s)>): vote = max(vote,s.vote); buf = buf + <pid.k,(*.*),s,*>; checkbuffer(); checkbuffer: while ((exists <pid.k,mv,s,m> in buf) &&!(exists <pid2.k2,mv2,s2,m2> in buf: s2 < s) &&!(exists <pid2.k2,mv2,*,m2> in buf: mv2 < s)) { buf = buf {<pid.k,mv,s,m>}; TM-deliver(m); } Κατανεμημένα Συστήματα 128 lalis@inf.uth.gr

Βλάβες βελτιστοποιήσεις Αν μια διεργασία παρουσιάσει βλάβη, μπορεί να αφήσει «ορφανό» κάποιο δικό της μήνυμα χωρίς να έχει στείλει (σε όλους) τον οριστικό σειριακό αριθμό του Απαιτείται συνεργασία των υπολοίπων διεργασιών για την κατάλληλη «ολοκλήρωση» της μετάδοσης και παράδοσης του μηνύματος Σε σχέση με την κεντρικοποιημένη μέθοδο με συντονιστή, απαιτούνται περισσότερα μηνύματα 2 μηνύματα RM, και Ν μηνύματα unicast Μπορεί να γίνουν διάφορες βελτιστοποιήσεις φυσική πολυεκπομπή, έξυπνα σχήματα επιβεβαίωσης, Κατανεμημένα Συστήματα 129 lalis@inf.uth.gr

Πρωτόκολλα total-causal multicast Ένα πρωτόκολλο total multicast δεν εγγυάται (απαραίτητα) παράδοση με αιτιολογική σειρά Αν έχει ήδη παραδοθεί το m1 και στη συνέχεια σταλεί το m2, λόγω total multicast, το m2 όντως θα λάβει μεγαλύτερο αριθμό σειράς και παραδοθεί μετά το m1 Όμως, αν η ίδια διεργασία στείλει πρώτα το m1 και μετά το m2, δεν είναι εγγυημένο ότι το m2 θα λάβει μεγαλύτερο αριθμό σειράς από το m1 Τα προηγούμενα πρωτόκολλα χρειάζονται επεκτάσεις FIFO στην μετάδοση μηνυμάτων εφαρμογής Κατανεμημένα Συστήματα 130 lalis@inf.uth.gr

Εικονικός συγχρονισμός με CATOC Το causally-and-totally-ordered communication επιτυγχάνει έναν «εικονικό συγχρονισμό» ακόμα και σε ασύγχρονο σύστημα Όλες οι διεργασίες λαμβάνουν όλα τα μηνύματα της ομάδας, με την ίδια & λογικά συνεπή σειρά Οι διεργασίες μπορούν να λάβουν κάποιες αποφάσεις αποκεντρωμένα ή/και να πραγματοποιήσουν ένα ντετερμινιστικό υπολογισμό (με βάση την τρέχουσα κατάσταση τους) καταλήγοντας στο ίδιο αποτέλεσμα έχει προηγηθεί (εκτενής) επικοινωνία σε χαμηλότερο επίπεδο για να «συμφωνηθεί» η σειρά παράδοσης μηνυμάτων Κατανεμημένα Συστήματα 131 lalis@inf.uth.gr

virtual synchrony asynchrony p1 p2 p3 p1 p2 p3 e1 e1 e2 e2 e3 e3 e4 e4 e5 e5 Κατανεμημένα Συστήματα 132 lalis@inf.uth.gr

Περιορισμοί CATOC Οι μηχανισμοί CATOC παρέχουν συνέπεια μόνο αν 1) υιοθετούνται από όλα τα τμήματα της εφαρμογής 2) όλα τα μηνύματα της εφαρμογής στέλνονται μέσα στο ίδιο πλαίσιο συγχρονισμού CATOC Οι λογικοί συσχετισμοί μπορεί να χαθούν όταν χρησιμοποιούνται «κρυφά» κανάλια επικοινωνίας, π.χ., αλληλεπίδραση με διεργασίες που δεν υπάγονται στο ίδιο πλαίσιο συγχρονισμού Ακυρώνεται η συνέπεια που προσφέρει το CATOC Κατανεμημένα Συστήματα 133 lalis@inf.uth.gr

CATOC context p1 CATOC context p1 p2 m3 p2 m1 p3 m4 p3 m2 m4 m1 m2 m3 p4 p4 Κατανεμημένα Συστήματα 134 lalis@inf.uth.gr

Λογική συνέπεια σε επίπεδο εφαρμογής Η λογική συνέπεια σε επίπεδο εφαρμογής πιθανώς να μην συμβαδίζει / ταυτίζεται με αυτήν του CATOC Μπορεί να χρειάζονται επιπρόσθετοι ή να αρκούν από μόνοι τους διαφορετικοί μηχανισμοί συνέπειας κλείδωμα, καταγραφή εκδόσεων δεδομένων, δοσοληψίες, Οι μηχανισμοί συνέπειας (σε ψηλό επίπεδο) μπορεί να κλιμακώνουν καλύτερα από τους μηχανισμούς CATOC λιγότερα μηνύματα σε επίπεδο δικτύου Κατανεμημένα Συστήματα 135 lalis@inf.uth.gr