Distributed Transaction
Tek bir mantıksal işin birden fazla bağımsız veritabanı, kaynak yöneticisi veya servis üzerinde koordineli sonuç gerektirmesi.
Problem Sınırı
Dağıtık transaction, bir iş kuralının birden fazla bağımsız katılımcıda tutarlı sonuç gerektirdiği durumda ortaya çıkar. Tek veritabanındaki yerel transaction'dan farklı olarak ağ gecikmesi, kısmi hata ve katılımcıların farklı anlarda erişilemez hale gelmesi tasarımın parçasıdır.
Koordinasyon Yaklaşımları
İki Aşamalı Commit gibi protokoller katılımcılar arasında atomik commit hedefler. Saga ise işi yerel transaction'lara böler ve gerektiğinde telafi adımları kullanır. Transactional Outbox, yerel veritabanı değişikliği ile dışarı yayımlanacak mesajın kaydını aynı commit içinde tutarak farklı bir güvenilirlik problemi çözer.
Bu yaklaşımlar birbirinin eş anlamlısı değildir; atomiklik, availability, kaynak kilitleme süresi ve hata sonrası toparlanma semantikleri farklıdır.
Yanlış Varsayım
Bir servisin iki başka servise ardışık HTTP isteği göndermesi kendiliğinden dağıtık transaction oluşturmaz. Hangi başarısızlıkta neyin geri alınacağı veya telafi edileceği açıkça tanımlanmalıdır.