Distributed Transactions using the SAGA pattern

Abstract

Οι κατανεμημένες συναλλαγές αποτελούν κρίσιμο συστατικό των σύγχρονων κατανεμημένων συστημάτων, καθώς εξασφαλίζουν τη συνοχή και την ακεραιότητα των δεδομένων σε πολλαπλές βάσεις δεδομένων, διακομιστές ή υπηρεσίες. Είναι ιδιαίτερα σημαντικές στα σύγχρονα κατανεμημένα συστήματα, τα οποία είναι συχνά πολύπλοκα, δυναμικά με πολλά διασυνδεδεμένα στοιχεία, καθώς και σε συστήματα που περιλαμβάνουν ευαίσθητα ή κρίσιμα δεδομένα. Χωρίς κατανεμημένες συναλλαγές, θα ήταν δύσκολο να διασφαλιστεί ότι τα δεδομένα ενημερώνονται με συνέπεια και ορθότητα σε πολλαπλά συστήματα, γεγονός που θα μπορούσε να οδηγήσει σε ασυνέπειες και απώλεια δεδομένων. Ο στόχος μιας κατανεμημένης συναλλαγής είναι να διασφαλίσει ότι όλες οι λειτουργίες είτε όλες δεσμεύονται και τίθενται σε ισχύ είτε όλες ανακαλούνται και δεν έχουν κανένα αποτέλεσμα, ακόμη και σε περίπτωση αποτυχιών ή σφαλμάτων. Ωστόσο, οι παραδοσιακές προσεγγίσεις για την υλοποίηση κατανεμημένων συναλλαγών, όπως το Two-Phase Commit protocol (2PC), μπορεί να είναι πολύπλοκες και επιρρεπείς σε σφάλματα. Το πρότυπο SAGA είναι μια πολλά υποσχόμενη εναλλακτική προσέγγιση για την υλοποίηση κατανεμημένων συναλλαγών, καθώς επιτρέπει μεγαλύτερη ευελιξία και ανθεκτικότητα στα κατανεμημένα συστήματα. Σε ένα SAGA, κάθε βήμα αντιμετωπίζεται ως ξεχωριστή συναλλαγή, και εάν κάποιο βήμα αποτύχει, η διαδικασία ανατρέπεται σε μια προηγούμενη γνωστή καλή κατάσταση και ενεργοποιείται μια διαδικασία χειρισμού σφαλμάτων. Αυτό επιτρέπει τη μερική αποτυχία και τη δυνατότητα ανάκαμψης από αυτήν, καθιστώντας το πρότυπο SAGA ιδιαίτερα κατάλληλο για χρήση σε σύγχρονα κατανεμημένα συστήματα. Σε αυτή τη διπλωματική εργασία, θα διερευνήσουμε τη χρήση του προτύπου Saga για την υλοποίηση κατανεμημένων συναλλαγών σε κατανεμημένα συστήματα. Θα ξεκινήσουμε παρέχοντας μια επισκόπηση των κατανεμημένων συναλλαγών και των προκλήσεων που θέτουν στα σύγχρονα κατανεμημένα συστήματα. Στη συνέχεια θα παρουσιάσουμε το πρότυπο SAGA και θα συζητήσουμε τα οφέλη και τις προκλήσεις του. Αμέσως μετά, θα παρουσιάσουμε μια μελέτη περίπτωσης που υλοποιεί την «orchestrated» προσέγγισή μας - piSaga - για κατανεμημένες συναλλαγές σε Spring Boot microservices και θα πραγματοποιήσουμε ορισμένα πειράματα προκειμένου να μετρήσουμε την απόδοσή της σε σχέση με μια «choreographed» λύση. Τέλος, θα καταλήξουμε συνοψίζοντας τις βασικές ιδέες και τις συνεισφορές της ανάλυσής μας.Distributed transactions are a crucial component of modern distributed systems, as they ensure data consistency and integrity across multiple databases, servers, or services. They are essential in modern distributed systems, which are often complex and dynamic environments with many interconnected components, and in systems that involve sensitive or critical data. Without distributed transactions, ensuring that data is consistently and correctly updated across multiple systems would be challenging, which could lead to inconsistencies and data loss. The goal of a distributed transaction is to ensure that all operations either commit and take effect or roll back and have no effect, even in the case of failures or errors. However, traditional approaches to implementing distributed transactions, such as the Two-Phase commit (2PC) protocol, can be inflexible and prone to failure in complex and dynamic environments. The SAGA pattern is a promising alternative approach to implementing distributed transactions, as it allows for more flexibility and resilience in distributed systems. In a SAGA, each step in a long-running business process is treated as a separate transaction, and if any step fails, the process is rolled back to a previously known good state, and an error-handling process is triggered. This allows for partial failures and the ability to recover from them, making the SAGA pattern particularly well-suited for use in modern distributed systems. In this thesis, we will explore the use of the SAGA pattern for implementing distributed transactions in distributed systems. We will begin by providing an overview of distributed transactions and their challenges in modern distributed systems. We will then introduce the SAGA pattern and discuss its benefits and challenges. Next, we will present a case study that implements our orchestrated approach - piSaga - for distributed transactions in Spring Boot microservices. We will also conduct experiments to measure its performance against a choreographed solution. Finally, we will summarize the key insights and contributions of our analysis

    Similar works