يدير saga معاملة تجارية تمتد عبر خدمات متعددة كسلسلة من المعاملات المحلية. إذا فشلت خطوة ما، يقوم saga بتشغيل المعاملات التعويضية لإلغاء الخطوات السابقة — لا يوجد rollback موزع.
لماذا ليس معاملة موزعة؟
Two-phase commit عبر الخدمات بطيء، يقفل الموارد، ويربط التوفر. توفر Sagas الاتساق النهائي بدون أقفال موزعة.
Choreography (موجهة بالأحداث)
تتفاعل الخدمات مع أحداث بعضها البعض؛ لا يوجد منسق مركزي.
Order ─OrderCreated→ Payment ─PaymentDone→ Inventory ─Reserved→ Shipping
◀───────── (on failure, each emits a compensating event) ─────────
