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

Άποψη: 11764|Απάντηση: 0

2PC &&&3PC κατανεμημένων συναλλαγών

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 17/3/2021 10:15:10 π.μ. | | |
Προδιαγραφή XA

Το XA είναι η προδιαγραφή διεπαφής (δηλαδή, η λειτουργία διεπαφής) μεταξύ του ενδιάμεσου λογισμικού συναλλαγών και της βάσης δεδομένων που ορίζεται από το X/Open DTP, η οποία χρησιμοποιείται από το ενδιάμεσο λογισμικό συναλλαγών για να ειδοποιεί τη βάση δεδομένων για την έναρξη, τη λήξη, τη δέσμευση, την επαναφορά κ.λπ. Οι λειτουργίες διεπαφής XA παρέχονται από προμηθευτές βάσεων δεδομένων.
Η συμφωνία υποβολής δεύτερης τάξης και η συμφωνία υποβολής τρίτης τάξης προήλθαν από αυτήν την ιδέα. Μπορεί να ειπωθεί ότι οι υποβολές δύο σταδίων είναι στην πραγματικότητα το κλειδί για την υλοποίηση κατανεμημένων συναλλαγών XA (για την ακρίβεια: οι υποβολές δύο σταδίων διασφαλίζουν κυρίως την ατομικότητα των κατανεμημένων συναλλαγών: δηλαδή, όλοι οι κόμβοι είτε κάνουν τα πάντα είτε τίποτα)

2 ΤΕΜ

Το Two-phase Commit αναφέρεται σε έναν αλγόριθμο που έχει σχεδιαστεί για να διατηρεί τη συνέπεια στις υποβολές συναλλαγών για όλους τους κόμβους με βάση την αρχιτεκτονική κατανεμημένου συστήματος στον τομέα των δικτύων υπολογιστών και των βάσεων δεδομένων. Συχνά, μια υποβολή δύο σταδίων αναφέρεται επίσης ως πρωτόκολλο. Σε ένα κατανεμημένο σύστημα, κάθε κόμβος μπορεί να γνωρίζει την επιτυχία ή την αποτυχία της δικής του λειτουργίας, αλλά δεν μπορεί να γνωρίζει την επιτυχία ή την αποτυχία των λειτουργιών άλλων κόμβων. Όταν μια συναλλαγή εκτείνεται σε πολλούς κόμβους, προκειμένου να διατηρηθούν τα χαρακτηριστικά ACID της συναλλαγής, πρέπει να εισαχθεί ένα στοιχείο που λειτουργεί ως συντονιστής για τον έλεγχο των αποτελεσμάτων όλων των κόμβων (που ονομάζονται συμμετέχοντες) και τελικά να δώσει εντολή σε αυτούς τους κόμβους να υποβάλουν πραγματικά τα αποτελέσματα (όπως η εγγραφή ενημερωμένων δεδομένων στο δίσκο κ.λπ.). Επομένως, η ιδέα του αλγορίθμου της υποβολής δύο σταδίων μπορεί να συνοψιστεί ως εξής: οι συμμετέχοντες θα ειδοποιήσουν τον συντονιστή για την επιτυχία ή την αποτυχία της λειτουργίας και, στη συνέχεια, ο συντονιστής θα αποφασίσει εάν θα υποβάλει την πράξη ή θα ματαιώσει την πράξη με βάση τις πληροφορίες ανατροφοδότησης όλων των συμμετεχόντων.
Τα λεγόμενα δύο στάδια είναι: το πρώτο στάδιο: το στάδιο προετοιμασίας (στάδιο ψηφοφορίας) και το δεύτερο στάδιο: το στάδιο υποβολής (στάδιο εκτέλεσης).

Στάδιο προετοιμασίας

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

Το στάδιο προετοιμασίας μπορεί να χωριστεί περαιτέρω στα ακόλουθα τρία βήματα:

1) Ο κόμβος συντονιστής ρωτά όλους τους κόμβους συμμετεχόντων εάν μπορούν να πραγματοποιήσουν ψηφοφορία και αρχίζει να περιμένει απάντηση από κάθε κόμβο συμμετέχοντα.

2) Ο κόμβος συμμετέχοντος εκτελεί όλες τις λειτουργίες συναλλαγής μέχρι να ξεκινήσει το ερώτημα και γράφει τις πληροφορίες Αναίρεσης και Επανάληψης στο αρχείο καταγραφής. (Σημείωση: Εάν είναι επιτυχής, κάθε συμμετέχων έχει ήδη εκτελέσει τη συναλλαγή)

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

Στάδιο υποβολής
Εάν ο συντονιστής λάβει ένα μήνυμα αποτυχίας ή ένα χρονικό όριο από έναν συμμετέχοντα, θα στείλει ένα μήνυμα επαναφοράς απευθείας σε κάθε συμμετέχοντα. Διαφορετικά, στείλτε ένα μήνυμα Commit. Οι συμμετέχοντες εκτελούν λειτουργίες δέσμευσης ή επαναφοράς σύμφωνα με τις οδηγίες του συντονιστή για την αποδέσμευση όλων των πόρων κλειδώματος που χρησιμοποιούνται στη διαδικασία συναλλαγής. (Σημείωση: Οι πόροι κλειδώματος πρέπει να απελευθερωθούν στο τελικό στάδιο)

Στη συνέχεια, η διαδικασία του σταδίου υποβολής συζητείται ξεχωριστά σε δύο περιπτώσεις.

Όταν το αντίστοιχο μήνυμα που λαμβάνει ο κόμβος συντονιστής από όλους τους κόμβους που συμμετέχουν είναι Συμφωνώ:

Στάδιο υποβολής
Εάν ο συντονιστής λάβει ένα μήνυμα αποτυχίας ή ένα χρονικό όριο από έναν συμμετέχοντα, θα στείλει ένα μήνυμα επαναφοράς απευθείας σε κάθε συμμετέχοντα. Διαφορετικά, στείλτε ένα μήνυμα Commit. Οι συμμετέχοντες εκτελούν λειτουργίες δέσμευσης ή επαναφοράς σύμφωνα με τις οδηγίες του συντονιστή για την αποδέσμευση όλων των πόρων κλειδώματος που χρησιμοποιούνται στη διαδικασία συναλλαγής. (Σημείωση: Οι πόροι κλειδώματος πρέπει να απελευθερωθούν στο τελικό στάδιο)

Στη συνέχεια, η διαδικασία του σταδίου υποβολής συζητείται ξεχωριστά σε δύο περιπτώσεις.

Όταν το αντίστοιχο μήνυμα που λαμβάνει ο κόμβος συντονιστής από όλους τους κόμβους που συμμετέχουν είναι Συμφωνώ:

1) Ο κόμβος συντονιστής εκδίδει ένα αίτημα «δέσμευσης» σε όλους τους κόμβους που συμμετέχουν.

2) Ο κόμβος συμμετέχων ολοκληρώνει επίσημα τη λειτουργία και αποδεσμεύει τους πόρους που καταλαμβάνονται καθ' όλη τη διάρκεια της περιόδου συναλλαγής.

3) Ο συμμετέχων κόμβος στέλνει ένα μήνυμα "Τέλος" στον κόμβο συντονιστή.

4) Ο κόμβος συντονιστή ολοκληρώνει τη συναλλαγή αφού λάβει την ανατροφοδότηση του μηνύματος "Τέλος" από όλους τους κόμβους συμμετεχόντων.
Εάν ένας από τους κόμβους συμμετεχόντων επιστρέψει ένα μήνυμα απόκρισης "Ματαιώθηκε" στην πρώτη φάση ή εάν ο κόμβος συντονιστής δεν μπορεί να λάβει ένα μήνυμα απόκρισης για όλους τους κόμβους συμμετεχόντων πριν από το χρονικό όριο του ερωτήματος στην πρώτη φάση:

1) Ο κόμβος συντονιστής εκδίδει ένα αίτημα "επαναφοράς" σε όλους τους κόμβους που συμμετέχουν.

2) Ο κόμβος συμμετέχοντα χρησιμοποιεί τις προηγουμένως γραμμένες πληροφορίες Αναίρεσης για να πραγματοποιήσει επαναφορά και να αποδεσμεύσει πόρους που καταλαμβάνονται καθ' όλη τη διάρκεια της περιόδου συναλλαγής.

3) Ο κόμβος συμμετέχοντος στέλνει ένα μήνυμα "η επαναφορά ολοκληρώθηκε" στον κόμβο συντονιστή.

4) Ο κόμβος συντονιστή ακυρώνει τη συναλλαγή αφού λάβει το μήνυμα "Η επαναφορά ολοκληρώθηκε" από όλους τους κόμβους συμμετεχόντων.
Ανεξάρτητα από το τελικό αποτέλεσμα, η δεύτερη φάση τερματίζει την τρέχουσα συναλλαγή.
Οι υποβολές φάσης 2 φαίνεται να παρέχουν ατομικές λειτουργίες, αλλά δυστυχώς, οι υποβολές σταδίου 2 εξακολουθούν να έχουν μερικά μειονεκτήματα:


1. Πρόβλημα σύγχρονου αποκλεισμού. Κατά την εκτέλεση, όλοι οι κόμβοι που συμμετέχουν μπλοκάρουν συναλλαγές. Όταν ένας συμμετέχων καταλαμβάνει έναν δημόσιο πόρο, άλλοι κόμβοι τρίτων πρέπει να αποκλειστούν από την πρόσβαση στον δημόσιο πόρο.

2. Ένα μόνο σημείο αποτυχίας. Λόγω της σημασίας του συντονιστή, μόλις ο συντονιστής αποτύχει. Οι συμμετέχοντες θα συνεχίσουν να μπλοκάρουν το μπλοκάρισμα. Ειδικά στο δεύτερο στάδιο, εάν ο συντονιστής αποτύχει, όλοι οι συμμετέχοντες εξακολουθούν να βρίσκονται σε κατάσταση κλειδώματος πόρων συναλλαγών και δεν μπορούν να συνεχίσουν να ολοκληρώνουν τις συναλλαγές τους. (Εάν ο συντονιστής κλείσει το τηλέφωνο, μπορείτε να επανεκλέξετε έναν συντονιστή, αλλά δεν μπορεί να λύσει το πρόβλημα ότι ο συμμετέχων έχει αποκλειστεί λόγω του συντονιστή εκτός λειτουργίας)

3. Ασυνέπεια δεδομένων. Στο δεύτερο στάδιο του δεύτερου σταδίου της υποβολής, όταν ο συντονιστής στέλνει μια αίτηση υποβολής στον συμμετέχοντα, εμφανίζεται μια εξαίρεση τοπικού δικτύου ή ο συντονιστής αποτυγχάνει κατά τη διαδικασία υποβολής αίτησης, γεγονός που αναγκάζει μόνο ορισμένους συμμετέχοντες να αποδεχτούν την αίτηση υποβολής. Αφού λάβουν το αίτημα υποβολής, αυτοί οι συμμετέχοντες θα εκτελέσουν τη λειτουργία υποβολής. Ωστόσο, άλλα μηχανήματα που δεν λαμβάνουν αίτημα δέσμευσης δεν μπορούν να εκτελέσουν τη δέσμευση συναλλαγής. Ως αποτέλεσμα, η συνέπεια του τμήματος δεδομένων εμφανίζεται σε ολόκληρο το κατανεμημένο σύστημα.

4. Προβλήματα που δεν μπορούν να λυθούν στο δεύτερο στάδιο: Ο συντονιστής πέφτει μετά την αποστολή ενός μηνύματος υποβολής και ο μόνος συμμετέχων που λαμβάνει αυτό το μήνυμα είναι επίσης εκτός λειτουργίας. Έτσι, ακόμη και αν ο διαμεσολαβητής επιλέξει έναν νέο διαμεσολαβητή μέσω της εκλογικής συμφωνίας, η κατάσταση της συναλλαγής είναι αβέβαιη και κανείς δεν γνωρίζει εάν η συναλλαγή έχει υποβληθεί.
Λόγω των ελαττωμάτων του δεύτερου σταδίου υποβολής, όπως ο σύγχρονος αποκλεισμός, το πρόβλημα ενός σημείου και ο διχασμένος εγκέφαλος, οι ερευνητές έκαναν βελτιώσεις με βάση το δεύτερο στάδιο υποβολής και πρότειναν μια υποβολή τριών σταδίων.

3 ΤΕΜ

Η τριφασική δέσμευση, γνωστή και ως πρωτόκολλο δέσμευσης τριών φάσεων, είναι μια βελτιωμένη έκδοση της δέσμευσης δύο φάσεων (2PC).


Σε αντίθεση με τις υποβολές δύο σταδίων, υπάρχουν δύο αλλαγές στις υποβολές τριών σταδίων.

1. Εισαγάγετε έναν μηχανισμό χρονικού ορίου. Ταυτόχρονα, εισάγεται ένας μηχανισμός χρονικού ορίου τόσο στον συντονιστή όσο και στους συμμετέχοντες.
2. Εισαγάγετε ένα προπαρασκευαστικό στάδιο στο πρώτο και το δεύτερο στάδιο. Αυτό διασφαλίζει ότι η κατάσταση όλων των συμμετεχόντων κόμβων είναι συνεπής μέχρι το τελικό στάδιο δέσμευσης.
Με άλλα λόγια, εκτός από την εισαγωγή ενός μηχανισμού χρονικού ορίου, το 3PC χωρίζει για άλλη μια φορά το στάδιο προετοιμασίας του 2PC σε δύο, έτσι ώστε να υπάρχουν τρία στάδια CanCommit, PreCommit και DoCommit στα τρία στάδια της δέσμευσης.


Στάδιο CanCommit

Το στάδιο CanCommit του 3PC είναι στην πραγματικότητα πολύ παρόμοιο με το στάδιο προετοιμασίας του 2PC. Ο συντονιστής στέλνει ένα αίτημα υποβολής στον συμμετέχοντα, ο οποίος επιστρέφει μια απάντηση Ναι εάν μπορεί να υποβάλει, ή μια απάντηση Όχι.
1. Έρευνα συναλλαγής Ο διαμεσολαβητής στέλνει ένα αίτημα CanCommit στον συμμετέχοντα. Ρωτήστε εάν μπορείτε να εκτελέσετε μια λειτουργία δέσμευσης συναλλαγής. Στη συνέχεια, αρχίστε να περιμένετε απάντηση από τους συμμετέχοντες.
2. Ανατροφοδότηση απόκρισης Αφού λάβει το αίτημα CanCommend, ο συμμετέχων θα επιστρέψει μια απάντηση Ναι και θα εισέλθει σε κατάσταση ετοιμότητας εάν πιστεύει ότι η συναλλαγή μπορεί να εκτελεστεί ομαλά. Διαφορετικά ανατροφοδότηση Όχι


Φάση προδέσμευσης

Ο διαμεσολαβητής αποφασίζει εάν θα απομνημονεύσει ή όχι τη λειτουργία PreCommit της συναλλαγής με βάση την απάντηση του συμμετέχοντα. Ανάλογα με την απάντηση, υπάρχουν δύο πιθανότητες.
Εάν η ανατροφοδότηση που λαμβάνει ο διαμεσολαβητής από όλους τους συμμετέχοντες είναι μια απάντηση Ναι, τότε πραγματοποιείται η προεκτέλεση της συναλλαγής.


1. Στείλτε ένα αίτημα PreCommit Ο συντονιστής στέλνει ένα αίτημα PreCommit στον συμμετέχοντα και προχωρά στο στάδιο Προετοιμασία.

2. Προδέσμευση συναλλαγής Αφού ο συμμετέχων λάβει το αίτημα PreDemitt, εκτελεί τη λειτουργία συναλλαγής και καταγράφει τις πληροφορίες αναίρεσης και επανάληψης στο αρχείο καταγραφής συναλλαγών.

3. Ανατροφοδότηση απόκρισης Εάν ο συμμετέχων εκτελέσει με επιτυχία τη συναλλαγή, επιστρέφεται μια απόκριση ACK ενώ αρχίζει να περιμένει την τελική εντολή.
Εάν κάποιος συμμετέχων στείλει μια απάντηση Όχι στον συντονιστή ή περιμένει ένα χρονικό όριο και ο συντονιστής δεν λάβει απάντηση από τον συμμετέχοντα, τότε η συναλλαγή διακόπτεται.

1. Στείλτε ένα αίτημα διακοπής Ο συντονιστής στέλνει ένα αίτημα ματαίωσης σε όλους τους συμμετέχοντες.

2. Διακόψτε τη συναλλαγή Αφού ο συμμετέχων λάβει το αίτημα ABORT από τον συντονιστή (ή μετά το χρονικό όριο, το αίτημα από τον συντονιστή δεν έχει ληφθεί), εκτελείται η διακοπή της συναλλαγής.
Φάση doCommit

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

Εκτέλεση υποβολής


1. Στείλτε ένα αίτημα δέσμευσης Ο συντονισμός λαμβάνει την απάντηση ACK που αποστέλλεται από τον συμμετέχοντα και, στη συνέχεια, θα μεταβεί από την κατάσταση προ-δέσμευσης στην κατάσταση δέσμευσης. και στείλτε ένα αίτημα doCommit σε όλους τους συμμετέχοντες.

2. Υποβολή συναλλαγής Μετά τη λήψη του αιτήματος doDemitt, ο συμμετέχων εκτελεί την επίσημη δέσμευση συναλλαγής. και αποδεσμεύστε όλους τους πόρους συναλλαγής μετά την ολοκλήρωση της δέσμευσης συναλλαγής.

3. Απαντήστε στα σχόλια Μετά την υποβολή της συναλλαγής, στείλτε μια απάντηση Ack στον συντονιστή.

4. Ολοκληρώστε τη συναλλαγή Αφού ο συντονιστής λάβει την απάντηση ACK από όλους τους συμμετέχοντες, η συναλλαγή ολοκληρώνεται.
Διακοπή συναλλαγών

Εάν ο συντονιστής δεν λάβει απάντηση ACK από τον συμμετέχοντα (μπορεί να μην είναι απάντηση ACK από τον δέκτη ή η απάντηση μπορεί να έχει λήξει), τότε η συναλλαγή διακοπής εκτελείται.


1. Στείλτε ένα αίτημα διακοπής Ο διαμεσολαβητής στέλνει ένα αίτημα ματαίωσης σε όλους τους συμμετέχοντες

2. Επαναφορά συναλλαγής Μετά τη λήψη του αιτήματος ABORT, ο συμμετέχων χρησιμοποιεί τις πληροφορίες αναίρεσης που καταγράφηκαν στη Φάση 2 για να εκτελέσει τη λειτουργία επαναφοράς συναλλαγής και αποδεσμεύει όλους τους πόρους συναλλαγής μετά την ολοκλήρωση της επαναφοράς.

3. Αποτελέσματα ανατροφοδότησης Αφού ο συμμετέχων ολοκληρώσει την επαναφορά της συναλλαγής, στείλτε ένα μήνυμα ACK στον συντονιστή

4. Διακόψτε τη συναλλαγή Αφού ο συντονιστής λάβει το μήνυμα ACK από τον συμμετέχοντα, η συναλλαγή διακόπτεται.
Στη φάση doCommit , εάν ο συμμετέχων δεν μπορεί να λάβει εγκαίρως το αίτημα doCommit ή rebort από τον συντονιστή, η συναλλαγή θα συνεχίσει να υποβάλλεται μετά την αναμονή του χρονικού ορίου. (Στην πραγματικότητα, αυτό θα πρέπει να καθοριστεί με βάση την πιθανότητα, κατά την είσοδο στο τρίτο στάδιο, σημαίνει ότι ο συμμετέχων έχει λάβει το αίτημα PreCommit στο δεύτερο στάδιο, επομένως η προϋπόθεση για να δημιουργήσει ο συντονιστής ένα αίτημα PreCommit είναι να λάβει μια απάντηση Yes CanCommit από όλους τους συμμετέχοντες πριν από την έναρξη του δεύτερου σταδίου.) (Μόλις ο συμμετέχων λάβει το PreCommit, σημαίνει ότι γνωρίζει ότι όλοι συμφωνούν πραγματικά με την τροποποίηση) Έτσι, με μια λέξη, κατά την είσοδο στο τρίτο στάδιο, λόγω χρονικών ορίων δικτύου και άλλων λόγων, αν και ο συμμετέχων δεν έλαβε απάντηση δέσμευσης ή ματαίωσης, έχει λόγους να πιστεύει ότι η πιθανότητα επιτυχούς δέσμευσης είναι πολύ υψηλή. )

Η διαφορά μεταξύ 2PC και 3PC


Σε σχέση με το 2PC, το 3PC λύνει κυρίως το πρόβλημα του μοναδικού σημείου αποτυχίας και μειώνει τον αποκλεισμό, επειδή μόλις ο συμμετέχων αποτύχει να λάβει έγκαιρα ένα μήνυμα από τον συντονιστή, εκτελεί τη δέσμευση από προεπιλογή. Αντί να κρατάτε συνεχώς πόρους συναλλαγών και να βρίσκεστε σε κατάσταση αποκλεισμού. Αλλά αυτός ο μηχανισμός προκαλεί επίσης προβλήματα συνέπειας δεδομένων, επειδή η απάντηση ματαίωσης που αποστέλλεται από τον συντονιστή δεν λαμβάνεται εγκαίρως από τον συμμετέχοντα για λόγους δικτύου και, στη συνέχεια, ο συμμετέχων εκτελεί τη λειτουργία δέσμευσης αφού περιμένει το χρονικό όριο. Αυτό δημιουργεί ασυνέπειες δεδομένων με άλλους συμμετέχοντες που λαμβάνουν την εντολή ματαίωσης και εκτελούν επαναφορά.




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

Mail To:help@itsvse.com