Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε την έννοια του Transactional Outbox και γιατί χρησιμοποιείται;

sobes.tech AI

Απάντηση από AI

Transactional Outbox — είναι ένα μοτίβο που χρησιμοποιείται για την εξασφάλιση αξιόπιστης παράδοσης μηνυμάτων σε κατανεμημένα συστήματα, ειδικά όταν πρέπει να διασφαλιστεί η συνοχή μεταξύ της βάσης δεδομένων και του συστήματος ανταλλαγής μηνυμάτων.

Η ιδέα είναι ότι κατά την εκτέλεση μιας επιχειρηματικής λειτουργίας που αλλάζει δεδομένα, μαζί με αυτές τις αλλαγές καταγράφεται μια ειδική εγγραφή (outbox) με πληροφορίες σχετικά με το γεγονός που πρέπει να δημοσιευθεί.

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

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

Παράδειγμα:

  1. Σε μια συναλλαγή, ενημερώνουμε τον πίνακα παραγγελιών και προσθέτουμε μια εγγραφή στον πίνακα outbox.
  2. Μετά τη δέσμευση, ένας ξεχωριστός εργαζόμενος διαβάζει τις νέες εγγραφές από το outbox και δημοσιεύει γεγονότα σε Kafka, RabbitMQ, κ.λπ.
  3. Μετά την επιτυχή αποστολή, η εγγραφή από το outbox διαγράφεται ή σημειώνεται ως επεξεργασμένη.

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