Διάλεξη 5: Ατομική ΚΚΜ Εγγραφής/Ανάγνωσης με Γρήγορες Λειτουργίες ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι
Γρήγορες Λειτουργίες Τι θα δούμε σήμερα Συστήματα Απαρτίας Αλγόριθμος SLIQ Χρήση Quorum Views ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι
Γρήγορες Λειτουργίες Μέχρι τώρα είδαμε αλγορίθμους όπου Ανάγνωση χρειάζεται 2 φάσεις Εγγραφή χρειάζεται ή 2 φάσεις Γρήγορη Λειτουργία: Είναι η λειτουργία εγγραφής ή ανάγνωσης η οποία χρειάζεται μόνο φάση ή ένα επικοινωνιακό γύρο για να ολοκληρωθεί. Π.χ. Όλες οι εγγραφές στον αλγόριθμο ABD είναι γρήγορες Γρήγορος Αλγόριθμος: Είναι αυτός όπου σε κάθε εκτέλεσή του όλες οι λειτουργίες είναι γρήγορες ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 2
Συστήματα Απαρτίας Παρατήρηση: Η επικοινωνία με την πλειοψηφία των αντιγράφων διασφαλίζει ότι για κάθε ζεύγος λειτουργιών υπάρχει τουλάχιστον ένας διαχειριστής αντιγράφου που λαμβάνει μήνυμα και από τις δύο λειτουργίες Έπεται από το γεγονός ότι η τομή δύο συνόλων πλειοψηφίας δεν είναι κενή Ιδέα Συστημάτων Απαρτίας: Οργάνωσε τους διαχειριστές αντιγράφων σε σύνολα (όχι απαραίτητα σύνολα πλειοψηφίας) έτσι ώστε κάθε δύο τέτοια σύνολα να έχουν μη κενή τομή Τα σύνολα ονομάζονται απαρτίες ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 3
Ορισμός Συστημάτων Απαρτίας Quorum System : Q Q = { Q : Q S} s. t. Qi, Q j Q : Qi Q j Απενεργοποιηµένη Απαρτία: Μια απαρτία Q είναι απενεργοποιηµένη σε µια εκτέλεση α εαν 9s 2 Q s.t. fail s 2 Απενεργοποιηµένο Σύστηµα Απαρτίας: Ένα σύστηµα απαρτίας Q είναι απενεργοποιηµένο εαν 8Q 2 Q,Q is faulty Υπόθεση Σφάλµατος: Μια απαρτία παραµένει ενεργοποιηµένη ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 4
Συστήματα Απαρτίας Σχηματικά Servers Q z p p2 Q j X Q i Q i, Q j, Q z είναι απαρτίες Σύστημα Απαρτίας είναι το σύνολο {Q i, Q j, Q z } Ιδιότητα: κάθε ζεύγος απαρτιών τέμνονται Κάθε λειτουργία Εγγραφής/Ανάγνωσης επικοινωνεί με μια απαρτία Εσφαλμένη Απαρτία: Αυτή που περιέχει μια εσφαλμένη διεργασία Nicolas Nicolaou 5
Παραδείγματα Συστημάτων Απαρτίας Πλειοψηφία 2 3 Απαρτίες σε Πλέγμα: Κάθε απαρτία μια γραμμή και μια στήλη ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 6
Αλγόριθμος MWMR με Απαρτίες } Υποθέτουμε ότι w i >w k w i read() Q z read() w k /9/2 Q j Q i Nicolas Nicolaou -- CS Colloquium @ UCY 7
Αλγόριθμος MWMR με Απαρτίες } Υποθέτουμε ότι w i >w k w i read() Q z write(<,w i >,v) read() w k /9/2 Q j Q i Nicolas Nicolaou -- CS Colloquium @ UCY 8
Αλγόριθμος MWMR με Απαρτίες } Υποθέτουμε ότι w i >w k w i read() Q z write(<,w i >,v) Q j Q i read() w k write(<,w k >,v) /9/2 Nicolas Nicolaou -- CS Colloquium @ UCY 9
Αλγόριθμος MWMR με Απαρτίες } Υποθέτουμε ότι w i >w k Q z /9/2 read() r i Q j Q i Nicolas Nicolaou -- CS Colloquium @ UCY
Αλγόριθμος MWMR με Απαρτίες } Υποθέτουμε ότι w i >w k Q z /9/2 read() ret(v) r i Q j write(<,w i >,v) Q i Operation Ordering: w k -> w i -> r i Nicolas Nicolaou -- CS Colloquium @ UCY
Ιδέα: Quorum Views Προσπαθούμε να προσδιορίσουμε την κατάσταση της τελευταίας λειτουργίας εγγραφής Αν η κατάσταση της εγγραφής κατά τον πρώτο γύρο της ανάγνωσης μπορεί να Προσδιοριστεί => Η Ανάγνωση είναι Γρήγορη Δεν προσδιορίζεται => Η Ανάγνωση είναι Αργή 7/3/2 Nicolas Nicolaou 2
Προσδιοριστέα Εγγραφή - Qview() Όλα οι εξυπηρετητές της απαρτίας απαντούν με την ίδια χρονοσφραγίδα (ίση με την μέγιστη χρονοσφραγίδα που παρατηρεί ο Αναγνώστης) [ qview()]: s Qi : s. ts = maxts Q z Q j Q i (Πιθανότατα) Η Εγγραφή έχει Τερματιστεί Nicolas Nicolaou 3
Προσδιοριστέα Εγγραφή - Qview(2) Κάθε τομή περιέχει ένα μέλος με χρονοσφραγίδα μικρότερη από τη μέγιστη [ qview(2)]: j i, A Q Q s. t. A and s A: s. ts < i j maxts Q z Q j Q i (Σίγουρα) Η Εγγραφή <maxtag,v> ΔΕΝ τερματίστηκε Nicolas Nicolaou 4
Απροσδιόριστη Εγγραφή - Qview(3) Όλα τα μέλη της τομής της απαρτίας που μας απάντησε και κάποιας άλλης απαρτίας στο σύστημα περιέχουν τη μέγιστη χρονοσφραγίδα. [ qview(3)]: s Q s. t. s. ts < maxts and j i s. t. s Q Q : s. ts = i i j maxts Q z Q z Q j Q i Q j Q i qv(3) και Μη Τερματισμένη Εγγραφή qv(3) και Τερματισμένη Εγγραφή Απροσδιόριστη => Δύο Φάσεις Nicolas Nicolaou 5
Αλγόριθμος SLIQ Write Protocol: one round P: Αύξησε την χρονοσφραγίδα σου ts και στείλε μήνυμα write(<ts,v>) σε όλους και περίμενε απαντήσεις από μια απαρτία Μόλις λάβεις απαντήσεις επέστρεψε ack και τερμάτισε Read Potocol: one or two rounds P: Στείλε μήνυμα read(<ts,v>) όπου <ts,v> η τελευταία τιμή που επέστρεψε ο αναγνώστης σε όλα τα αντίγραφα και περίμενε απάντηση από μια απαρτία Q QView Q () Γρήγορη και επέστρεψε την τιμή του maxts QView Q (2) Γρήγορη και επέστρεψε την τιμή του maxts- QView Q (3) Αργή προχώρα στη φάση P2 και ακολούθως επεστρεψε maxts P2: προώθησε <maxts,v> σε μια απαρτία και μετά επέστρεψε ν 7/3/2 Server Protocol: passive role Παρέλαβε αιτήσεις read(<ts,v>) και write(<ts,v>) Εαν local.ts<msg.ts ενημέρωσε το τοπικό σου αντίγραφο Aπάντησε με reply(<ts,v>) Nicolas Nicolaou 6
Ορθότητα Αλγορίθμου Ζωτικότητα: Σύμφωνα με το μοντέλο σφαλμάτων πάντα υπάρχει μια απαρτία να απαντήσει σε κάθε λειτουργία Ατομικότητα: Πρέπει να δείξουμε ότι Κάθε Ανάγνωση επιστρέφει τουλάχιστον την τιμή που γράφτηκε από την τελευταία Εγγραφή (Νόμιμη Ακολουθία Λειτουργιών) Αν μία Ανάγνωση ρ προηγείται μιας ανάγνωσης ρ2, τότε η ρ2 επιστρέφει την ίδια ή νεότερη τιμή από αυτή που επιστρέφει η ρ. ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 7
Μονοτονικότητα Χρονοσφραγίδας Λήμμα : Αν κάποιος εξυπηρετητής λάβει μήνυμα με <ts,v> τότε κάθε μεταγενέστερη απάνησή του περιλαμβάνει ζεύγος <ts, v > τ.ω. ts ts. Απόδειξη: Κάθε φορά που ένας εξυπηρετητής παραλάβει μήνυμα read(<ts,v>) και write(<ts,v>) κάνει τον εξής έλεγχο Αν local.ts<msg.ts τότε local.ts=msg.ts και local.v = msg.v Αλλιώς δεν κάνει τίποτα Αρα μετά την παραλαβή μηνύματος local.ts msg.ts Επομένως σε κάθε reply(<ts, v >) που έπεται οποιασδήποτε από τις πιο πάνω παραλαβές ισχύει ότι ts =local.ts msg.ts =ts ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 8
Ορθότητα Αλγορίθμου Λήμμα 2: Αν μια Ανάγνωση ρ έπεται μιας Εγγραφής τότε επιστρέφει τουλάχιστον την τιμή που γράφτηκε Απόδειξη: Κάθε εγγραφή επικοινωνεί με μια απαρτία πριν ολοκληρωθεί Έστω w μια εγγραφή που έλαβε μηνύματα από την απαρτία Q i και έγραψε την τιμή <ts, v> Έστω ρ είναι μια ανάγνωση που έπεται της πιο πάνω εγγραφής και λαμβάνει απαντήσεις από την απαρτία Q j Έχουμε δύο περιπτώσεις: ) Q i = Q j, και 2) Q i Q j ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 9
Λήμμα 2: Περίπτωση (Q i = Q j ) Όλοι οι εξυπηρετητές στο Q i έλαβαν μήνυμα write(<ts, v>) από τον w πριν απαντήσουν στην ανάγνωση ρ Από το Λήμμα θα στείλουν reply(<ts, v ) στον ρ τ.ω. ts ts Αν ts = ts και maxts = ts τότε ο ρ θα παρατηρήσει qview() και θα επιστρέψει ν Όλοι απαντούν με την ίδια χρονοσφραγίδα ts Αν ts > ts τότε maxts = ts και ο ρ θα επιστρέψει τουλάχιστον την τιμή που αντιστοιχεί στην χρονοσφραγίδα maxts- ts Αρα νεότερη ή ίση με ν ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 2
Λήμμα 2: Περίπτωση 2 (Q i Q j ) Όλοι οι εξυπηρετητές στο Q i \ Q j έλαβαν μήνυμα write(<ts, v>) από τον w πριν απαντήσουν στην ανάγνωση ρ Από το Λήμμα θα στείλουν reply(<ts, v ) στον ρ τ.ω. ts ts Αν ts = ts και maxts = ts τότε ο ρ θα παρατηρήσει qview(3) και θα επιστρέψει ν αφού πρώτα εκτελέσει 2 η φάση Όλοι σε μια τομή απαντούν με την ίδια χρονοσφραγίδα ts Αν ts > ts τότε maxts = ts και ο ρ θα επιστρέψει τουλάχιστον την τιμή που αντιστοιχεί στην χρονοσφραγίδα maxts- ts Αρα νεότερη ή ίση με ν ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 2
Σχηματικά w w Q i Q i r i r i Q j Q z Q j Q z Q i = Q j => qview() Returns maxts= in one round Q i Q j => qview(3) Returns maxts= in two rounds ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 22
Ορθότητα Αλγορίθμου Λήμμα 3: Αν μία Ανάγνωση ρ προηγείται μιας ανάγνωσης ρ2, τότε η ρ2 επιστρέφει την ίδια ή νεότερη τιμή από αυτή που επιστρέφει η ρ Απόδειξη: Έστω ότι ρ διάβασε από Q i και επέστρεψε <ts, v> και ρ2 διάβασε από Q j και επέστρεψε <ts, v > Και οι δύο αναγνώσεις προέρχονται από τον ίδιο αναγνώστη Τότε ts ts. (Γιατί;) Αν οι δύο αναγνώσεις προέρχονται από 2 διαφορετικούς αναγνώστες πρέπει να μελετήσουμε τις περιπτώσεις όπου: ) ρ αργή, και 2) ρ γρήγορη ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 23
Λήμμα 3: Περίπτωση (ρ αργή) Αν ρ είναι αργή σημαίνει ότι πριν ολοκληρωθεί στέλνει read(<ts,v>) στα μέλη μιας απαρτίας (έστω Q z ) Από το Λήμμα όλοι οι εξυπηρετητές στη Q j \ Q z θα στείλουν reply(<ts, v ) στον ρ τ.ω. ts ts Αρα ο ρ2 θα παρατηρήσει maxts ts με το τέλος του πρώτου γύρου Αν maxts>ts τότε στην χειρότερη περίπτωση ο ρ2 θα επιστρέψει την τιμή που αντιστοιχεί στο maxts- ts Αν maxts=ts τότε ο ρ2 θα επιστρέψει <maxts, v>=<ts,v> αφού θα παρατηρήσει είτε qview() if Q j = Q z, ή qview(3) if Q j Q z αφού όλοι οι εξυπηρετητές στο Q j \ Q z στέλνουν reply(<ts,v>) ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 24
Λήμμα 3: Περίπτωση 2 (ρ γρήγορη) Αν ρ είναι γρήγορη σημαίνει στον πρώτο της γύρο προσεξε 2.) qview() και επέστρεψε maxts=ts 2.2) qview(2) και επέστρεψε maxts- =ts Περίπτωση 2. Παρατήρησε qview() => όλα τα μέλη του Q i απάντησαν με <ts,v> Επομένως από το Λήμμα όλα τα μέλη της Q i \ Q j θα στείλουν reply(<ts, v ) στον ρ τ.ω. ts ts Αρα ο ρ2 θα παρατηρήσει maxts ts με το τέλος του πρώτου γύρου Με την ίδια λογική όπως και στην περίπτωση μπορούμε να δείξουμε ότι ο ρ2 επιστρέφει <ts,v > s.t. ts ts ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 25
Λήμμα 3: Περίπτωση 2 (ρ γρήγορη) Περίπτωση 2.2 Παρατήρησε qview(3) => ο ρ επέστρεψε maxts- =ts Κάθε διεργασία τελειώνει μια λειτουργία πριν μεταβεί στην επόμενη. Επομένως αφού ο ρ παρατήρησε την χρονοσφραγίδα maxts στο σύστημα ο εγγραφέας χρησιμοποιεί μια χρονοσραγίδα ανα εγγραφή, Σε κάθε εγγραφή αυξάνεται η χρονοσφραγίδα κατά, και έχουμε μόνο ένα εγγραφέα έπεται ότι η εγγραφή που χρησιμοποίησε τη χρονοσφραγίδα maxts- έχει ήδη ολοκληρωθεί πριν ή κατα τη διάρκεια του ρ. Αφού το ρ προηγείται της ρ2 επομένως και η εγγραφή με maxts- προηγείται της ρ2 Επομένως από το Λήμμα 2 το ρ2 θα επιστρέψει ts maxts- => ts ts. ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 26
Ερωτήσεις; ΕΠΛ432: Κατανεµηµένοι Αλγόριθµοι 27