💡راهکار (Solution)
الگوی Saga تراکنشها را با تقسیم آنها به مجموعهای از تراکنشهای محلی مدیریت میکند.
هر تراکنش محلی:
• کار خود را بهصورت اتمی در یک سرویس انجام میدهد.
• پایگاه داده سرویس را بهروزرسانی میکند.
• تراکنش بعدی را از طریق رویداد یا پیام آغاز میکند.
• اگر یک تراکنش محلی شکست بخورد، Saga مجموعهای از تراکنشهای جبرانی را اجرا میکند تا تغییرات تراکنشهای قبلی را برگرداند.
🔑 مفاهیم کلیدی در الگوی Saga
(Key concepts in the Saga pattern)
تراکنشهای قابل جبران (Compensable Transactions):
تراکنشهایی که میتوان آنها را توسط تراکنشهای دیگر با اثر معکوس، جبران یا لغو کرد. اگر یک مرحله شکست بخورد، تراکنشهای جبرانی تغییرات اعمالشده را برمیگردانند.
تراکنش محوری (Pivot Transaction):
نقطه بدون بازگشت در Saga است. بعد از موفقیت تراکنش محوری، تراکنشهای جبرانی دیگر کاربردی ندارند و همه اقدامات بعدی باید برای رسیدن سیستم به حالت سازگار نهایی تکمیل شوند. تراکنش محوری میتواند:
• آخرین تراکنش قابل جبران باشد.
•اولین عملیات قابل تکرار (Retryable) در Saga باشد.
تراکنشهای قابل تکرار (Retryable Transactions):
پس از تراکنش محوری اجرا میشوند، idempotent هستند و تضمین میکنند که حتی در صورت بروز خطاهای موقت، Saga به حالت سازگار برسد.