← Bütün Patternlər
📜

Saga Pattern

Mikroservislərdə paylanmış (distributed) tranzaksiyaları idarə edir: bir addım uğursuz olarsa, əvvəlkilər geri qaytarılır (Compensating Transaction).

🎯
Nə üçün lazımdır?

Mikroservislər ayrı bazalara sahibdir, buna görə 2PC (Two-Phase Commit) istifadə etmək mümkün deyil. Saga bunun alternatividir.

🔄
2 növü

Orchestration: Mərkəzi koordinator (Saga Orchestrator) hər addımı idarə edir. Choreography: Hər servis özü növbəti addımı tetikləyir.

🛠️
Populyar alətlər

Axon Framework, Eventuate Tram, MicroProfile LRA, Camunda, Temporal.

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

{{ svc.icon }}
{{ svc.name }}
{{ svc.status }}
JAVA

Kod Nümunəsi — Saga Orchestrator

OrderSagaOrchestrator.java
@Service
public class OrderSagaOrchestrator {

    public void executeSaga(OrderRequest order) {
        try {
            // Addım 1: Pulu çıx
            paymentService.charge(order);

            // Addım 2: Anbardan ayır
            inventoryService.reserve(order);

            // Addım 3: Kuryer çağır
            shippingService.dispatch(order);

        } catch (InventoryException e) {
            // Anbar xətası → Pulu geri qaytar (Compensation)
            paymentService.refund(order);
            throw new SagaFailedException("Anbar xətası, pul geri qaytarıldı");

        } catch (ShippingException e) {
            // Çatdırılma xətası → Anbarı azad et + Pulu qaytar
            inventoryService.release(order);
            paymentService.refund(order);
            throw new SagaFailedException("Çatdırılma xətası, hamısı geri qaytarıldı");
        }
    }
}
✅ Üstünlükləri
  • Paylanmış mühitdə tranzaksiya bütövlüyü
  • Hər servis öz bazası ilə müstəqil işləyir
  • Kompensasiya sayəsində data consistency qorunur
⚠️ Riskləri
  • Kompensasiya məntiqi yazmaq mürəkkəbdir
  • Debug etmək çətindir (çoxlu servis)
  • Eventual Consistency — anlıq uyğunsuzluq ola bilər