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

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

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

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

ΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε:

Έλεγχος Ταυτοχρονισμού

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

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

Βάσεις Δεδομένων ΙΙ Ενότητα 2

Επεξεργασία οσοληψιών

Βάσεις Δεδομένων ΙΙ. Διάλεξη 1 η Επεξεργασία Δοσοληψιών. Σύστημα Επεξεργασίας Δοσοληψιών

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

Βάσεις Δεδομένων ΙΙ Ενότητα 1

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

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

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

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης

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

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

Έλεγχος συγχρονικότητας Μέρος 1 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Επανάκτηση δεδομένων. (εμπλουτισμένο υλικό)

Βάσεις Δεδομένων ΙΙ Ενότητα 2

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Επεξεργασία οσοληψιών. το πώς βλέπει το Σ Β τα προγράµµατα των χρηστών. οσοληψία (transaction)

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

Λειτουργικά Συστήματα

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Σχετικά µε το µάθηµα: Αξιολόγηση. Σχετικά µε το µάθηµα:faq ΟΧΙ ΝΑΙ. Λιγότερος! (ας πούµε το 1/3-1/4)

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

Δοσοληψίες Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Υ- 07 Παράλληλα Συστήματα Transac9onal memory

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

Επαναφορά του Συστήματος (Μέρος Α')

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Επεξεργασία οσοληψιών (συνέχεια)

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

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

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

Δομημένος Προγραμματισμός

Βάσεις Δεδομένων Ενότητα 1

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

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

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

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

Δοσοληψίες. Κατανεμημένα Συστήματα

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Λειτουργικά Συστήματα (ΗΥ222)

Υπολογιστές Ι. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Διάλεξη 15: Ατομική ΚΚΜ Εγγραφής/Ανάγνωσης με Γρήγορες Λειτουργίες. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

Δοσοληψίες. Κατανεμημένα Συστήματα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Cretive Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 1: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ - ΟΡΙΣΜΟΙ

Συναλλαγές. Εαρινό Εξάμηνο Τμήμα Μηχανικών Η/Υ και Πληροϕορικής Πολυτεχνική Σχολή, Πανεπιστήμιο Πατρών. Συναλλαγές. Βάσεις Δεδομένων ΙΙ

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Προχωρημένα Θέματα Βάσεων Δεδομένων

Πληροφορική ΙΙ Θεματική Ενότητα 7

Θέματα Μεταγλωττιστών

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

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

Θέματα χρονισμού σε φλιπ-φλοπ και κυκλώματα VLSI

Συστήματα Αναμονής. Ενότητα 4: Αλυσίδες Markov. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Έλεγχος Ταυτοχρονισμού

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. Πληροφοριακά Συστήματα και Βάσεις Δεδομένων. Δρ. Κωνσταντίνος Χ.

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 10: ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΓΙΑ ΠΡΟΒΛΗΜΑΤΑ ΜΕ ΑΠΑΓΟΡΕΥΤΙΚΟ ΑΡΙΘΜΟ ΠΕΡΙΠΤΩΣΕΩΝ

ΗΥ360 Αρχεία και Βάσεις εδοµένων

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Πρακτική Άσκηση σε σχολεία της δευτεροβάθμιας εκπαίδευσης

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ. ΕΝΟΤΗΤΑ: Γραμμικές Συναρτήσεις Διάκρισης. ΔΙΔΑΣΚΟΝΤΕΣ: Βλάμος Π. Αυλωνίτης Μ. ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αντικειμενοστρεφής Προγραμματισμός

Προγραμματισμός ΙI (Θ)

Αμοιβαίος αποκλεισμός

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Περιεχόμενα ΜΤ Τυχαίας Προσπέλασης Θεωρία Υπολογισμού Ενότητα 23: Μηχανές Turing Τυχαίας Προσπέλασης Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Πληροφορική. Εργαστηριακή Ενότητα 6 η : Ταξινόμηση & Ομαδοποίηση Δεδομένων

Αρχιτεκτονική Υπολογιστών

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

Διδακτική Πληροφορικής

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Transcript:

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

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Οικονομικό Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Οι εικόνες προέρχονται από το βιβλίο «Κατανεμημένα Συστήματα με Java», Ι. Κάβουρας, Ι. Μήλης, Γ. Ξυλωμένος, Α. Ρουκουνάκη, 3 η έκδοση, 2011, Εκδόσεις Κλειδάριθμος. 3

Σκοποί ενότητας Κατανόηση της έννοιας των συναλλαγών και των διαφόρων κατηγοριών τους. Εξοικείωση με τον έλεγχο ταυτοχρονισμού και τις διάφορες παραλλαγές του (κλείδωμα, αισιόδοξος έλεγχος και διάταξη χρονοσφραγίδων). Εισαγωγή στις κατανεμημένες συναλλαγές και τα πρωτόκολλα κατανεμημένης δέσμευσης. 4

Περιεχόμενα ενότητας Εισαγωγή Κατηγορίες συναλλαγών Έλεγχος ταυτοχρονισμού Μέθοδοι ελέγχου ταυτοχρονισμού Κλείδωμα Αισιόδοξος έλεγχος ταυτοχρονισμού Διάταξη χρονοσφραγίδων Κατανεμημένες συναλλαγές 5

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

Τι είναι οι συναλλαγές; (1 από 3) Σε τι χρειάζονται οι συναλλαγές; Ταυτόχρονη προσπέλαση δεδομένων Προβλήματα συγχρονισμού και συνέπειας Παράδειγμα: τραπεζικό σύστημα deposit(account, amount): κατάθεση withdraw(account, amount): ανάληψη getbalance(account): υπόλοιπο getbranchtotal(): άθροισμα υπολοίπων 7

Τι είναι οι συναλλαγές; (2 από 3) Υλοποίηση μεταφοράς ποσού branch.withdraw (A, 100) branch.deposit (B, 100) Πρόβλημα: αν διακοπεί η σύνδεση; Tα χρήματα εξαφανίζονται! Λύση: ατομική συναλλαγή Ομαδοποίηση μιας σειράς πράξεων Είτε εκτελούνται όλες Είτε δεν εκτελείται καμία 8

Τι είναι οι συναλλαγές; (3 από 3) Ακύρωση: ακύρωση όλων των πράξεων Αρκεί να αποτύχει έστω και μία πράξη Αναίρεση όλων των ενδιάμεσων πράξεων Επαναφορά αρχικής κατάστασης συστήματος Καταγωγή των συναλλαγών Συστήματα με ταινίες (δεκαετία 1960!) Ταινία 1: κατάσταση προηγούμενης ημέρας Ταινία 2: συναλλαγές τρέχουσας ημέρας Ταινία 3: κατάσταση τρέχουσας ημέρας 9

Χρήση συναλλαγών (1 από 2) Ατομικές συναλλαγές σήμερα Μηχανισμός συγχρονισμού υψηλού επιπέδου Κρύβει λεπτομέρειες από προγραμματιστές Παρέχεται από ΛΣ ή περιβάλλον εκτέλεσης Θεμελιώδεις κλήσεις συναλλαγών OpenTransaction: ξεκινά μία συναλλαγή Ακολουθεί μία σειρά πράξεων Η σειρά τους φαίνεται σαν μία μόνο ενέργεια 10

Χρήση συναλλαγών (2 από 2) Θεμελιώδεις κλήσεις συναλλαγών CloseTransaction(t): ολοκληρώνει συναλλαγή Στο τέλος των πράξεων Προσπαθεί να κάνει Commit τη συναλλαγή Αν δεν τα καταφέρει την κάνει Abort AbortTransaction(t): ακυρώνει τη συναλλαγή Επαναφορά σε αρχική κατάσταση Δεν περιμένουμε να τελειώσει η σειρά 11

Ιδιότητες συναλλαγών (1 από 4) Ιδιότητες ατομικών συναλλαγών: ACID Atomicity, Consistency, Independence, Durability Ατομικότητα (Atomicity) Είτε εκτελούνται όλες οι πράξεις (commit) Είτε ακυρώνονται όλες οι πράξεις (abort) Μοναδική, αδιαίρετη, ακαριαία πράξη Χωρίς ενδιάμεσες καταστάσεις ορατές εξωτερικά Εξωτερικά είναι ορατή η κατάσταση πριν την έναρξη 12

Ιδιότητες συναλλαγών (2 από 4) Συνέπεια (Consistency) Διατηρούν σταθερές του συστήματος Παράδειγμα: έστω κινήσεις σε λογαριασμούς Το υπόλοιπο της τράπεζας δεν αλλάζει Προσωρινές εσωτερικές παραβιάσεις σταθερών Αόρατες στον έξω κόσμο (άλλες συναλλαγές) Μόνο το τελικό αποτέλεσμα είναι ορατό 13

Ιδιότητες συναλλαγών (3 από 4) Απομόνωση (Isolation) Ή Σειριακοποίηση (Serializability) Ταυτόχρονες συναλλαγές δεν αναμιγνύονται Είναι σαν να εκτελέστηκαν ακολουθιακά Δεν έχει σημασία ποια είναι η σειρά εκτέλεσης Αρκεί να υπάρχει αντίστοιχη ακολουθιακή εκτέλεση Απαιτεί κάποιας μορφής έλεγχο ταυτοχρονισμού Για λόγους απόδοσης, μη ακολουθιακή υλοποίηση 14

Ιδιότητες συναλλαγών (4 από 4) Σταθερότητα (Durability) Ή Μονιμότητα (Permanence) Η συναλλαγή επιφέρει μόνιμες αλλαγές Αφού βέβαια δεσμευτεί Καμία αποτυχία δεν μπορεί να τις αναιρέσει Απαιτεί ανοχή βλαβών Αντιμετώπιση καταστροφικών αποτυχιών 15

Μοντέλο συναλλαγών Εξυπηρετητές στοιχείων δεδομένων Βάσεις δεδομένων, εγγραφές αρχείων, περιοχές μνήμης Δύο είδη πράξεων στα στοιχεία δεδομένων Πρόσβαση (access) ή Ανάγνωση (read) Ενημέρωση (update) ή Εγγραφή (write) Οι πράξεις είναι σειρά από read και write Παράδειγμα: Branch.Deposit (Account, Amount) Balance=account.Read( ) Account.write(balance + amount) 16

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

Κατηγορίες συναλλαγών (1 από 4) Απλές ή επίπεδες συναλλαγές Αυτές που ορίσαμε παραπάνω Δεν επιτρέπουν μερικά αποτελέσματα Αυτό μπορεί να είναι περιοριστικό Παράδειγμα: έστω ταξίδι με τρεις πτήσεις Θέλουμε να κρατήσουμε τις δύο πρώτες Δοκιμή εναλλακτικών επιλογών για την τρίτη Ακύρωση μόνο αν δεν υπάρχει συνδυασμός 18

Κατηγορίες συναλλαγών (2 από 4) Φωλιασμένη συναλλαγή Συναλλαγή που αποτελείται από υποσυναλλαγές Εκτελούνται παράλληλα σε διαφορετικές μηχανές Αυξάνουν την απόδοση του συστήματος Απλουστεύουν τον προγραμματισμό Δεσμεύονται ή ακυρώνονται ανεξάρτητα Ο γονέας αποφασίζει αν θα δεσμευθεί Ανάλογα με δέσμευση / ακύρωση των παιδιών Μπορεί να δεσμευθεί παρά επί μέρους ακυρώσεις 19

Κατηγορίες συναλλαγών (3 από 4) Μονιμότητα σε φωλιασμένες συναλλαγές Αν ακυρωθεί ο γονέας, ακυρώνονται και παιδιά Ακόμη και αν είχαν δεσμευθεί νωρίτερα! Διαχείριση φωλιασμένων συναλλαγών Χρήση ιδιωτικών αντιγράφων δεδομένων Για κάθε υποσυναλλαγή που ξεκινά Ακύρωση: τα αντίγραφα εξαφανίζονται Δέσμευση: τα αντίγραφα περνούν στο γονέα Οι υποσυναλλαγές βλέπουν ενδιάμεσα αποτελέσματα 20

Κατηγορίες συναλλαγών (4 από 4) Κατανεμημένες συναλλαγές Εμπλέκονται πολλοί εξυπηρετητές Οι εξυπηρετητές ασχολούνται με την ίδια συναλλαγή Μπορεί να είναι επίπεδη ή φωλιασμένη Απαιτούν κατανεμημένους αλγόριθμους Έλεγχος ταυτοχρονισμού Σειριακοποίηση συμβάντων 21

Έλεγχος ταυτοχρονισμού Μάθημα: Κατανεμημένα Συστήματα με Java, Ενότητα # 7: Ατομικές συναλλαγές Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Γιατί έλεγχος ταυτοχρονισμού; Ακολουθιακή υλοποίηση συναλλαγών Εξασφαλίζει την απομόνωση εξ' ορισμού Παράλληλη υλοποίηση συναλλαγών Απαιτεί εξασφάλιση της απομόνωσης! Σειριακά ισοδύναμη εκτέλεση Ίδια αποτελέσματα με ακολουθιακή εκτέλεση Δεν έχει σημασία με ποια ακριβώς σειρά Απαιτεί έλεγχο ταυτοχρονισμού 23

Πρόβλημα 1: χαμένη ενημέρωση T branch.withdraw(a, 50) branch.deposit(b, 50) balance = A.read() 100 A.write(balance - 50) 50 balance = B.read() 200 B.write(balance + 50) 250 U branch.withdraw(c, 70) branch.deposit(b, 70) balance = C.read() 300 C.write(balance - 70) 230 balance = B.read() 200 B.write(balance + 70) 270 Αρχικά: A=100, B =200, C=300 Συναλλαγή T: μεταφορά 50 από A σε B Συναλλαγή U: μεταφορά 70 από C σε B Η T δεν βλέπει τις αλλαγές που έκανε η U Βασίζεται στην παλιά τιμή του B 24

Πρόβλημα 2: ασυνεπής ανάκτηση T branch.withdraw(a, 50) branch.deposit(b, 50) balance = A.read() 100 A.write(balance - 50) 50 balance = B.read() 200 B.write(balance + 50) 250 Αρχικά: A=100, B =200, C=300 U branch.getbranchtotal() balance = A.read() 50 balance += B.read() 250 balance += C.read() 550 Συναλλαγή T: μεταφορά 50 από A σε B Συναλλαγή U: υπολογισμός υπολοίπων Η U δεν βλέπει όλες τις αλλαγές της T Διαβάζει τη νέα τιμή του A Διαβάζει την παλιά τιμή του B 25

Πρόβλημα 3: αλλοιωμένη ανάγνωση T branch.deposit(a, 40) balance = A.read() 100 A.write(balance + 40) 140 Ακυρώνεται! Αρχικά: A=100 Συναλλαγή T: κατάθεση 40 σε A Συναλλαγή U: κατάθεση 80 σε A U branch.deposit(a, 80) balance = A.read() 140 A.write(balance + 80) 180 Δεσμεύεται! Η U βλέπει τις αλλαγές της T και δεσμεύεται Η T ακυρώνεται για κάποιο λόγο Η U βασίστηκε σε ακυρωμένες αλλαγές 26

Πρόβλημα 4: πρόωρη εγγραφή T branch.setbalance(a,300) A.write(300) 300 U branch.setbalance(a,500) A.write(500) 500 Αρχικά: A=100 Έστω νέα πράξη setbalance (account, amount) Δεσμεύεται πρώτα η U Μετά ακυρώνεται η T Επαναφέρουμε την κατάσταση πριν την T Χάνεται εντελώς το αποτέλεσμα της U 27

Αντιμετώπιση προβλημάτων Ακύρωση συναλλαγών Όποτε βασιζόμαστε σε λάθος δεδομένα Κίνδυνος αλλεπάλληλων ακυρώσεων Κάθε ακύρωση οδηγεί σε άλλες Καθυστέρηση ανάγνωσης/εγγραφής Όποτε βασιζόμαστε σε άλλες συναλλαγές Περιμένουμε να δεσμευτούν ή να ακυρωθούν Απαιτεί έλεγχο ταυτοχρονισμού 28

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

Έλεγχος ταυτοχρονισμού (1 από 3) Συγκρουόμενες (conflicting) πράξεις Το αποτέλεσμα εξαρτάται από σειρά εκτέλεσης Ζεύγη write και read στο ίδιο στοιχείο Ναι: Αλλάζει το αποτέλεσμα της read Ζεύγη write και write στο ίδιο στοιχείο Ναι: Αλλάζει η τελική τιμή του στοιχείου Ζεύγη read και read στο ίδιο στοιχείο Όχι: Ίδιο αποτέλεσμα πάντα Άρα, για σύγκρουση θέλουμε πάντα ένα write 30

Έλεγχος ταυτοχρονισμού (2 από 3) Αυστηρή εκτέλεση (strict execution) Έστω ότι θέλουμε να κάνουμε read ή write Περιμένουμε τις συναλλαγές που κάνουν write Είτε να δεσμευθούν, είτε να ακυρωθούν Αποφυγή αλλοιωμένης ανάγνωσης Αποφυγή πρόωρης εγγραφής Δεν χρειάζονται αλλεπάλληλες ακυρώσεις 31

Έλεγχος ταυτοχρονισμού (3 από 3) Αλγόριθμοι ελέγχου ταυτοχρονισμού Απαισιόδοξοι: εγγυώνται ότι όλα θα πάνε καλά Κλείδωμα στοιχείων δεδομένων Διάταξη με χρήση χρονοσφραγίδων Εισάγουν καθυστερήσεις στο σύστημα Αισιόδοξοι: ελέγχουν εκ των υστέρων τι έγινε Αισιόδοξος έλεγχος ταυτοχρονισμού Εισάγουν κίνδυνο πολλαπλών ακυρώσεων 32

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

Αποκλειστική κλειδαριά (1 από 5) Αποκλειστικές κλειδαριές Η συναλλαγή κλειδώνει το στοιχείο Υποχρεωτικό κλείδωμα πριν κάθε προσπέλαση Κάθε άλλη συναλλαγή περιμένει να ξεκλειδωθεί Ξεκλείδωμα στο τέλος της προσπέλασης Συγκρουόμενα ζεύγη: εκτέλεση με ίδια σειρά Αλλιώς υπάρχει κίνδυνος αδιεξόδου! Αποφεύγεται με μαζικό ξεκλείδωμα στο τέλος 34

Αποκλειστική κλειδαριά (2 από 5) T branch.withdraw(a, 50) branch.deposit(b, 50) U branch.withdraw(c, 70) branch.deposit(b, 70) Λειτουργίες Κλειδώματα Λειτουργίες Κλειδώματα balance = A.read() κλειδώνει A A.write(balance 50) balance = C.read() κλειδώνει C C.write(balance - 70) balance = B.read κλειδώνει B balance = B.read() περιμένει Β. B.write(balance + 50). ξεκλειδώνει A,B. κλειδώνει B B.write(balance + 70) ξεκλειδώνει B,C Παράδειγμα Η U περιμένει να ξεκλειδωθεί το B Η T ξεκλειδώνει το B (και το A) μόνο στο τέλος 35

Αποκλειστική κλειδαριά (3 από 5) Ξεκλείδωμα στοιχείων Δύο δυνατές επιλογές Όταν εκτελεστεί η πράξη του κλειδώματος Κλείδωμα δύο φάσεων (2PL) Δεν διασφαλίζει αυστηρή εκτέλεση Όταν η συναλλαγή δεσμευθεί ή ακυρωθεί Αυστηρό κλείδωμα δύο φάσεων (strict 2PL) Διασφαλίζει αυστηρή εκτέλεση 36

Αποκλειστική κλειδαριά (4 από 5) Πλήθος κλειδωμάτων Φάση ανάπτυξης Φάση συρρίκνωσης Κλείδωμα δύο φάσεων Φάση ανάπτυξης Διαδοχικά κλειδώματα στοιχείων Φάση συρρίκνωσης Διαδοχικά ξεκλειδώματα στοιχείων Χρόνος Προβλήματα αν η συναλλαγή δεν δεσμευθεί 37

Αποκλειστική κλειδαριά (5 από 5) Πλήθος κλειδωμάτων Φάση ανάπτυξης Φάση συρρίκνωσης Χρόνος Αυστηρό κλείδωμα δύο φάσεων Φάση ανάπτυξης όπως στο απλό Δεν υπάρχει φάση συρρίκνωσης Όλα τα κλειδώματα απελευθερώνονται στο τέλος Κανείς δεν βλέπει τις αλλαγμένες τιμές νωρίτερα Διασφαλίζει την αυστηρή εκτέλεση 38

Καταμεριζόμενη κλειδαριά (1 από 3) Αποκλειστικά κλειδώματα Κάθε πρόσβαση οδηγεί σε κλείδωμα Τα ζεύγη read δεν συγκρούονται Υπερβολικός περιορισμός παραλληλισμού Καταμεριζόμενες κλειδαριές Κλειδαριές ανάγνωσης και κλειδαριές εγγραφής Επιτρέπονται πολλά κλειδώματα ανάγνωσης Επιτρέπεται μόνο ένα κλείδωμα εγγραφής 39

Καταμεριζόμενη κλειδαριά (2 από 3) Αν το στοιχείο είναι κλειδωμένο για εγγραφή Δεν μπορεί να κλειδωθεί για τίποτα άλλο Αν είναι κλειδωμένο για ανάγνωση Μπορεί να κλειδωθεί ξανά για ανάγνωση Προβιβασμός κλειδαριών Μετατροπή κλειδαριάς σε πιο περιοριστική Κλειδαριά ανάγνωσης σε εγγραφής Επιτρέπεται αν η κλειδαριά δεν είναι μοιρασμένη 40

Καταμεριζόμενη κλειδαριά (3 από 3) T U branch.withdraw(a, 50) branch.withdraw(c, 70) branch.deposit(b, 50) branch.deposit(b, 70) Λειτουργίες Κλειδώματα Λειτουργίες Κλειδώματα balance = A.read() κλειδώνει το A.write(balance 50) balance = B.read() B.write(balance+50) Α για ανάγνωση προάγει την κλειδαριά στο Α κλειδώνει το Β για ανάγνωση περιμένει την U να ξεκλειδώσει το Β balance = C.read() C.write(balance 70) balance = B.read() κλειδώνει το C για ανάγνωση προάγει την κλειδαριά στο C μοιράζεται την κλειδαριά του B B.write(balance+70) περιμένει την Τ να ξεκλειδώσει το Β... Παράδειγμα αδιεξόδου Μη αυστηρές κλειδαριές με προβιβασμό 41

Μειονεκτήματα κλειδαριών Εμφάνιση αδιεξόδων Στο παράδειγμα με μη αποκλειστικό κλείδωμα Κίνδυνος σε όλα τα είδη κλειδωμάτων Επιβάρυνση διαχείρισης κλειδαριών Ακόμη και όταν δεν υπάρχει κίνδυνος Μείωση βαθμού παραλληλισμού Ιδιαίτερα εμφανής στα αυστηρά κλειδώματα Τα στοιχεία κλειδώνονται για πολύ ώρα 42

Παραλληλισμός κλειδαριών Βαθμός κοκκιότητας (granularity) Πόσο μεγάλα είναι τα στοιχεία; Όλη η τράπεζα, το κατάστημα, ο λογαριασμός; Βάση, πίνακας, στήλη; Μικρό: αυξάνεται ο παραλληλισμός Περισσότερες παράλληλες κλειδαριές Αυξημένος κίνδυνος αδιεξόδου Μεγάλο: μειώνονται οι κλειδαριές 43

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

Αισιόδοξος έλεγχος (1 από 5) Αισιόδοξος έλεγχος συνδρομής Η πιθανότητα συγκρούσεων είναι μικρή Κλειδαριές: υποθέτουν ότι έχουμε συγκρούσεις Κλειδώνουμε τα στοιχεία για να τις αποφύγουμε Στον αισιόδοξο έλεγχο υποθέτουμε το αντίθετο Δεν κλειδώνουμε τίποτα προκαταβολικά Ελέγχουμε για συγκρούσεις στο τέλος Επίλυση συγκρούσεων: ακύρωση συναλλαγών 45

Αισιόδοξος έλεγχος (2 από 5) Φάση ανάγνωσης Φάση επικύρωσης Φάση εγγραφής Τρεις φάσεις εκτέλεσης Φάση ανάγνωσης: εκτέλεση λειτουργιών Φάση επικύρωσης: έλεγχος για συγκρούσεις Φάση εγγραφής: μονιμοποίηση ενεργειών Φάση ανάγνωσης Δημιουργία προσωρινών εκδόσεων Αλλαγές που έχει κάνει η συγκεκριμένη συναλλαγή 46

Αισιόδοξος έλεγχος (3 από 5) Φάση ανάγνωσης Πράξεις read Είτε με βάση τα στοιχεία του συστήματος Είτε με βάση τις προσωρινές εκδόσεις Πράξεις write Καταγραφή αλλαγών στις προσωρινές εκδόσεις Χρησιμοποιούνται στις επόμενες πράξεις read Διατήρηση δύο συνόλων στοιχείων Σύνολο αναγνώσεων: τι έχει διαβάσει η συναλλαγή Σύνολο εγγραφών: τι έχει γράψει η συναλλαγή 47

Αισιόδοξος έλεγχος (4 από 5) Φάση επικύρωσης Ξεκινά όταν κληθεί η closetransaction Έλεγχος συγκρούσεων Ανάμεσα στις πράξεις αυτής και άλλων Κανόνες για εντοπισμό και επίλυση συγκρούσεων Συνήθως επιβολή διάταξης στις συναλλαγές Επιτυχής: προχωράμε στη φάση εγγραφής Ανεπιτυχής: κάποιες συναλλαγές ακυρώνονται 48

Αισιόδοξος έλεγχος (5 από 5) Φάση εγγραφής Οι προσωρινές εκδόσεις γίνονται μόνιμες Αντιγράφονται στον κύριο χώρο δεδομένων Η συναλλαγή δεσμεύεται Πώς γίνεται η επικύρωση; Ορίζουμε κανόνες επίλυσης συγκρούσεων Οι κανόνες διασφαλίζουν τη σειριακή ισοδυναμία Έστω ότι η συναλλαγή T άρχισε τη στιγμή t Έλεγχος για συγκρούσεις που δεν είχαν δεσμευθεί την t 49

Επικύρωση συναλλαγών (1 από 8) Βασική ιδέα: αρίθμηση συναλλαγών Η T αριθμείται με j όταν αρχίζει την επικύρωση Οι αριθμοί ανατίθενται με αύξουσα σειρά Αν i < j τότε η i προηγείται της j Αν περάσει την επικύρωση, κρατά τον αριθμό της Αν δεν περάσει ή ακυρωθεί, χάνει τον αριθμό της Αν έχει μόνο αναγνώσεις, χάνει τον αριθμό της Δεσμεύεται αμέσως, χωρίς φάση εγγραφής 50

Επικύρωση συναλλαγών (2 από 8) Κανόνες επικύρωσης της T j Συγκρούσεις με άλλες συναλλαγές Τ i Για σειριακή ισοδυναμία δεν επιτρέπεται: 1. Η T i να έχει διαβάσει στοιχεία που έγραψε η T j 2. Η T j να έχει διαβάσει στοιχεία που έγραψε η T i 3. Η T i να έχει γράψει στοιχεία που έγραψε η T j 4. Η T j να έχει γράψει στοιχεία που έγραψε η T i 51

Επικύρωση συναλλαγών (3 από 8) Υπόθεση: η φάση ανάγνωσης κυριαρχεί Οι άλλες δύο παίρνουν αναλογικά λίγο χρόνο Άρα μία επικύρωση / εγγραφή σε κάθε στιγμή Διασφαλίζεται εύκολα με αμοιβαίο αποκλεισμό Έτσι ικανοποιούμε τις απαιτήσεις 3 και 4 Εγγραφή μόνο πάνω σε δεσμευμένες συναλλαγές Μένουν οι απαιτήσεις 1 και 2 Συγκρούσεις ανάγνωσης και εγγραφής 52

Επικύρωση συναλλαγών (4 από 8) T 1 T 2 T 3 T j Αντίστροφη επικύρωση Έλεγχος συγκρούσεων με προηγούμενες Κανόνας 1: ισχύει πάντα Η T i δεν πρέπει να διαβάσει ό,τι έγραψε η T j Όλες οι αναγνώσεις των T i έγιναν πριν την T j 53

Επικύρωση συναλλαγών (5 από 8) Κανόνας 2 Η T j δεν πρέπει να διαβάσει ό,τι έγραψε η T i Έλεγχος συνόλου ανάγνωσης T j Σύγκριση με σύνολα εγγραφής T i Εάν υπάρχουν επικαλύψεις η T j ακυρώνεται Πρέπει να διατηρούμε σύνολα εγγραφών Ως την επικύρωση των επικαλυπτόμενων συναλλαγών Αυτό μπορεί να έχει σημαντικό κόστος Αν η T j δεν έχει αναγνώσεις ο κανόνας ισχύει πάντα 54

Επικύρωση συναλλαγών (6 από 8) T j T 1 Ευθεία επικύρωση Έλεγχος συγκρούσεων με επόμενες T 2 Δεν ξεκίνησαν ακόμη την επικύρωση, δεν έχουν i Κανόνας 2: ισχύει πάντα Η T j δεν μπορεί να διαβάσει λάθος στοιχεία Οι άλλες ακολουθούν την T j 55

Επικύρωση συναλλαγών (7 από 8) Κανόνας 1 Έλεγχος συνόλου εγγραφής T j Σύγκριση με σύνολα ανάγνωσης άλλων Εάν υπάρχουν επικαλύψεις έχουμε πρόβλημα Αν η T j δεν έχει εγγραφές, ο κανόνας ισχύει πάντα Επίλυση συγκρούσεων Aκύρωση των επόμενων συναλλαγών Μπορεί να ακυρώνονται πολλές άλλες 56

Επικύρωση συναλλαγών (8 από 8) Επίλυση συγκρούσεων Aκύρωση της T j Δεν ακυρώνονται πολλές άλλες Μπορεί όμως να ακυρωθούν για άλλους λόγους Οπότε η T j ακυρώθηκε χωρίς λόγο Αναμονή της T j για τις άλλες συναλλαγές Περιμένουμε μήπως ακυρωθούν οι άλλες Ελπίζουμε ότι δεν θα χρειαστεί ακύρωση 57

Ευθεία ή αντίστροφη επικύρωση; Αντίστροφη επικύρωση Περιοριστική στην επίλυση συγκρούσεων Ένα σύνολο ανάγνωσης, πολλά σύνολα εγγραφής Απαιτεί διατήρηση πολλών συνόλων εγγραφής Ευθεία επικύρωση Ευέλικτη επίλυση συγκρούσεων Δεν είναι προφανής η καλύτερη λύση όμως Ένα σύνολο εγγραφής, πολλά σύνολα ανάγνωσης 58

Υποσιτισμός και αδιέξοδα Κίνδυνος υποσιτισμού Συνεχής ακύρωση των ίδιων συναλλαγών Μπορούμε να τις βοηθήσουμε Αν έχουν ακυρωθεί πολλές φορές Εκτέλεση με αμοιβαίο αποκλεισμό Δεν εμφανίζονται αδιέξοδα Χωρίς να περιορίζεται ο παραλληλισμός Με κόστος πιθανή επανάληψη συναλλαγών 59

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

Χρονοσφραγίδες (1 από 9) Διάταξη χρονοσφραγίδων Η συναλλαγή T λαμβάνει χρονοσφραγίδα ts(t) Η αρίθμηση γίνεται στην εκκίνηση της συναλλαγής Στον αισιόδοξο έλεγχο δίνεται στην επικύρωση Η ts(t) συνοδεύει όλες τις πράξεις της T Αναγνώσεις και εγγραφές Αναγνώσεις από τις κανονικές εκδόσεις στοιχείων Εγγραφές σε προσωρινές εκδόσεις στοιχείων 61

Χρονοσφραγίδες (2 από 9) Χρονοσφραγίδες στοιχείου D Μία χρονοσφραγίδα εγγραφής ts WR (D) Αντιστοιχεί στην δεσμευμένη τιμή Προσωρινές χρονοσφραγίδες εγγραφής ts(t) Μία για κάθε προσωρινή έκδοση Πάντα μεγαλύτερες από την ts WR (D) Μία χρονοσφραγίδα ανάγνωσης ts RD (D) Αντιστοιχεί στην πιο πρόσφατη ανάγνωση 62

Χρονοσφραγίδες (3 από 9) Κανόνες επικύρωσης: εγγραφή Η T με ts(t) θέλει να γράψει το στοιχείο D Πρέπει να ισχύει ts(t) > ts WR (D) Πρέπει να έπεται της δεσμευμένης έκδοσης Πρέπει να ισχύει ts(t) > ts RD (D) Πρέπει να έπεται όλων των αναγνώσεων Αν δεν ισχύουν οι περιορισμοί, η T ακυρώνεται Αλλιώς έχουμε νέα προσωρινή έκδοση του D 63

Χρονοσφραγίδες (4 από 9) ts RD (D) ts WR (D) ts(t) ts WR (D) ts RD (D) ts(t) (α) t (β) t ts(t) ts WR (D) ts(t) ts RD (D) Παραδείγματα εγγραφής (γ) t t (δ) (α) και (β): η εγγραφή είναι έγκυρη (γ): συγκρούεται με μεταγενέστερη εγγραφή (δ): συγκρούεται με μεταγενέστερη ανάγνωση Στις περιπτώσεις (γ) και (δ) η T ακυρώνεται 64

Χρονοσφραγίδες (5 από 9) Κανόνες επικύρωσης: ανάγνωση Η T με ts(t) θέλει να διαβάσει το στοιχείο D Πρέπει να ισχύει ts(t) > ts WR (D) Αλλιώς η συναλλαγή T ακυρώνεται Αν ναι, βρίσκουμε πιο πρόσφατη έκδοση του D Η έκδοση με το μέγιστο ts tent (D) Με την προϋπόθεση ότι ts tent (D) ts(t) Νεότερες προσωρινές εκδόσεις δεν επηρεάζουν την T 65

Χρονοσφραγίδες (6 από 9) Κανόνες επικύρωσης: ανάγνωση Αν η έκδοση είναι δεσμευμένη, τη διαβάζουμε Σε αυτή την περίπτωση, ts WR (D)=ts tent (D) Αν δεν είναι δεσμευμένη, περιμένουμε Αν η συναλλαγή δεσμευθεί, διαβάζουμε Ουσιαστικά πάμε στην προηγούμενη περίπτωση Αν η συναλλαγή ακυρωθεί, δοκιμάζουμε ξανά Ουσιαστικά επαναλαμβάνουμε την επιλογή έκδοσης 66

Χρονοσφραγίδες (7 από 9) ts WR (D) ts(t) ts WR (D) ts(t) ts tent (D) (α) t (β) t ts WR (D) ts tent (D) ts(t) ts(t) ts WR (D) Παραδείγματα ανάγνωσης (γ) (α): η εγγραφή είναι έγκυρη (β): μεταγενέστερη προσωρινή, έγκυρη (γ): προγενέστερη προσωρινή, περιμένουμε (δ): μεταγενέστερη εγγραφή, ακυρώνουμε t (δ) t 67

Χρονοσφραγίδες (8 από 9) T U A (r) A (w) B (r) B (w) C (r) C (w) opentransaction b = A.read() A.write(b 50) b = B.read() B.write(b + 50) Ακυρώνεται! opentransaction b = C.read() C.write(b - 70) b = B.read() B.write(b + 70) {} {S} {} {S} {} {S} {T} {S,T} Ίδιο παράδειγμα με τα κλειδώματα {T} {U} {S,U} Χρονοσφραγίδες ανάγνωσης / εγγραφής Η S έχει γράψει A, B, C και έχει δεσμευθεί Η T ακυρώνεται όταν πάει να γράψει το B Το B το έχει διαβάσει η U και ts(t) < ts(u) {U} {S,U} 68

Χρονοσφραγίδες (9 από 9) Κανόνας επικύρωσης εγγραφής Οι πρόωρες εγγραφές ακυρώνονται Κανόνας επικύρωσης ανάγνωσης Οι πρόωρες αναγνώσεις αναμένουν Οι καθυστερημένες αναγνώσεις ακυρώνονται Απαισιόδοξος έλεγχος συνδρομής Δεν υπάρχει περίπτωση ακύρωσης στο τέλος Δεν έχουμε αδιέξοδα, αντίθετα με τα κλειδώματα Έχουμε ακυρώσεις, όπως στον αισιόδοξο έλεγχο 69

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

Κατανεμημένος έλεγχος Τι γίνεται με πολλούς εξυπηρετητές; Έλεγχος ταυτοχρονισμού σε κάθε εξυπηρετητή Επιπλέον έλεγχος ταυτοχρονισμού μεταξύ τους Διάταξη χρονοσφραγίδων Απαιτείται κοινά αποδεκτή διάταξη στο χρόνο Αισιόδοξος έλεγχος Απαιτείται καθολική επικύρωση Εναλλακτικά, διάταξη χρονοσφραγίδων στη δέσμευση Κλειδώματα: απαιτείται έλεγχος αδιεξόδων 71

Κατανεμημένη δέσμευση (1 από 9) Πρόβλημα κατανεμημένης δέσμευσης Έστω συναλλαγή σε πολλούς εξυπηρετητές Πρέπει να δεσμευθούν όλοι ή κανένας Χρήση συντονιστή για τη λήψη της απόφασης Οι συμμετέχοντες ακολουθούν τον συντονιστή Πρωτόκολλο δέσμευσης μίας φάσης Συντονιστής: διατάζει συμμετέχοντες να δεσμευτούν Περιμένει απάντηση από όλους Αν κάποιοι δεν τα καταφέρουν όμως; Δεν διασφαλίζεται η κατανεμημένη δέσμευση! 72

Κατανεμημένη δέσμευση (2 από 9) Πρωτόκολλο δέσμευσης δύο φάσεων Πρώτα ρωτάμε και μετά αποφασίζουμε Φάση ψηφοφορίας και φάση ολοκλήρωσης Φάση ψηφοφορίας Ο συντονιστής ρωτάει τους συμμετέχοντες Αποστολή μηνύματος <vote request> Οι συμμετέχοντες απαντούν με τη γνώμη τους Αποστολή μηνύματος <vote commit> ή <vote abort> 73

Κατανεμημένη δέσμευση (3 από 9) Φάση ολοκλήρωσης Ο συντονιστής λαμβάνει μία απόφαση Αν όλοι ψήφισαν δέσμευση, στέλνει <vote commit> Αν κάποιοι ψήφισαν ακύρωση, στέλνει <vote abort> Οι συμμετέχοντες πράττουν ανάλογα Όποιος ψήφισε ακύρωση, δεν περιμένει Η συναλλαγή θα ακυρωθεί σίγουρα 74

Κατανεμημένη δέσμευση (4 από 9) Αντιμετώπιση προβλημάτων Απώλεια μηνυμάτων ή συμμετεχόντων Χρήση διαστημάτων εκπνοής Αναμετάδοση αν δεν έχουμε απάντηση Αν πέσει ο συντονιστής όμως; Οι συμμετέχοντες εμποδίζονται κατά την ψηφοφορία Δεν υπάρχει τρόπος να λάβουν απόφαση Το πρόβλημα είναι το σημείο εμποδισμού Από την ψηφοφορία έχουμε δύο επιλογές 75

Κατανεμημένη δέσμευση (5 από 9) Συνθήκες μη εμποδισμού του Skeen Απαγορεύονται δύο είδη καταστάσεων Mε μετάβαση είτε σε δέσμευση είτε σε ακύρωση Χωρίς βέβαιη απόφαση και μετάβαση σε δέσμευση Πρωτόκολλο δέσμευσης τριών φάσεων Εισαγωγή νέας φάσης Ανάμεσα στη φάση αναμονής και τη δέσμευση Ονομάζεται φάση προδέσμευσης 76

Κατανεμημένη δέσμευση (6 από 9) Πρωτόκολλο δέσμευσης τριών φάσεων Ο συντονιστής ρωτάει τους συμμετέχοντες Αποστολή μηνύματος <vote request> Οι συμμετέχοντες απαντούν με τη γνώμη τους Αποστολή μηνύματος <vote commit> ή <vote abort> Ο συντονιστής λαμβάνει μία απόφαση Αν όλοι ψήφισαν δέσμευση, στέλνει <pre commit> Αν κάποιοι ψήφισαν ακύρωση, στέλνει <global abort> 77

Κατανεμημένη δέσμευση (7 από 9) Πρωτόκολλο δέσμευσης τριών φάσεων Οι συμμετέχοντες πράττουν ανάλογα Αν πάρουν <pre commit>, στέλνουν <ready commit> Αν πάρουν <global abort>, ακυρώνουν τη συναλλαγή Ο συντονιστής τελικά στέλνει <global commit> Αφού λάβει όλα τα μηνύματα <ready commit> Οι συμμετέχοντες δεσμεύουν τη συναλλαγή Μόλις λάβουν το μήνυμα <global commit> 78

Κατανεμημένη δέσμευση (8 από 9) Αντιμετώπιση προβλημάτων Έστω ότι ο συντονιστής καταρρέει Περιμένουμε ένα χρονικό διάστημα Αν έχει στείλει <pre commit>, προχωράμε Αν δεν έχει στείλει, ακυρώνουμε Αν κάποιος συμμετέχων δεν λάβει μηνύματα Ρωτάει τους άλλους τι έλαβαν Αντιμετώπιση χαμένων μηνυμάτων 79

Κατανεμημένη δέσμευση (9 από 9) Μπορούμε να αποφύγουμε την τρίτη φάση; Το πρόβλημα που λύνει είναι η αβεβαιότητα Αν χάσουμε ένα μήνυμα, πώς ξέρουμε τι έγινε; Μπορεί οι άλλοι συμμετέχοντες να καταρρεύσουν Άρα δεν έχουμε κάποιον να ρωτήσουμε Εναλλακτικές μέθοδοι αντιμετώπισης Κάθε συμμετέχων αναμεταδίδει το <vote commit> Μετά δεσμεύει το δικό του τμήμα της συναλλαγής Δύο φάσεις, αλλά προσθήκη πολλών μηνυμάτων 80

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