الگوی Saga چیست؟

الگوی Saga چیست
الگوی Saga چیست


توی سیستم‌های میکروسرویس معمولا هر سرویس دیتابیس مجزای خودش را داره و فرض کنید میخواین عملیاتی رو انجام بدید که نیاز به ترانزاکشن داره، مثلا چنتا تیبل باید با هم دیگه اپدیت بشن و اگه این اتفاق نیفته باید کل اون تغییرات رول بک بشن، وقتی همه این سرویس ها از یک دیتابیس استفاده کنن خب خیلی راحت از امکان ترانزاکشن دیتابیس استفاده میکنیم اما وقتی هر سرویس دیتابیس خودش رو داره و هیچ ارتباطی با هم ندارن چیکار باید کنیم؟ اینجا میایم از این الگوی Saga استفاده میکنیم.

الگوی Saga یک الگوی طراحی برای مدیریت تراکنش‌های توزیع‌شده در سیستم‌های میکروسرویس است. این الگو تضمین می‌کند که مجموعه‌ای از عملیات توزیع‌شده یا به طور کامل اجرا شوند یا در صورت شکست به حالت اولیه برگردند، بدون نیاز به یک تراکنش توزیع‌شده و پیچیده.

توی دوره اموزشی مایکروسرویس ما از این الگو برای پیاده سازی سرویس Order استفاده کردیم.

هدف ما این هستش که سیستم فروشگاه ساز پیشرفته رو با گولنگ پیاده سازی کنیم و در نهایت روی کوبرنتیز دیپلوی اجرا کنیم یعنی ۰ تا ۱۰۰ یه پروژه گولنگی . به زودی ویدیوی این آموزش ها در وبسایت uncodev منتشر خواهند شد.

برای پیاده سازی الگوی Saga از دو روش میشه استفاده کرد :

روش Events/Choreography : در این روش هیچ هماهنگ کننده مرکزی‌ای وجود نداره و هر سرویس بعد از انجام کارش سرویس بعدی رو با یک ایونت مطلع میسازه که کارش رو شروع کنه، اگر توی یکی از از مراحل و سرویس ها خطایی رخ بده بازم یک ایونت خطا ایجاد میکنه و سایر سرویس‌ها رو خبردار میکنه که رول بک انجام بدن.


روش Orchestration : در این روش یک سرویس مرکزی وجود داره که نقش هماهنگ کننده بین سرویس های دیگه رو داره و لاجیک رو کنترل میکنه .



کانال تلگرام : UncoDev