مهندس نرم افزار در اسنپ اکسپرس و سابقا در زرینپال
الگوی Saga چیست؟
توی سیستمهای میکروسرویس معمولا هر سرویس دیتابیس مجزای خودش را داره و فرض کنید میخواین عملیاتی رو انجام بدید که نیاز به ترانزاکشن داره، مثلا چنتا تیبل باید با هم دیگه اپدیت بشن و اگه این اتفاق نیفته باید کل اون تغییرات رول بک بشن، وقتی همه این سرویس ها از یک دیتابیس استفاده کنن خب خیلی راحت از امکان ترانزاکشن دیتابیس استفاده میکنیم اما وقتی هر سرویس دیتابیس خودش رو داره و هیچ ارتباطی با هم ندارن چیکار باید کنیم؟ اینجا میایم از این الگوی Saga استفاده میکنیم.
الگوی Saga یک الگوی طراحی برای مدیریت تراکنشهای توزیعشده در سیستمهای میکروسرویس است. این الگو تضمین میکند که مجموعهای از عملیات توزیعشده یا به طور کامل اجرا شوند یا در صورت شکست به حالت اولیه برگردند، بدون نیاز به یک تراکنش توزیعشده و پیچیده.
توی دوره اموزشی مایکروسرویس ما از این الگو برای پیاده سازی سرویس Order استفاده کردیم.
هدف ما این هستش که سیستم فروشگاه ساز پیشرفته رو با گولنگ پیاده سازی کنیم و در نهایت روی کوبرنتیز دیپلوی اجرا کنیم یعنی ۰ تا ۱۰۰ یه پروژه گولنگی . به زودی ویدیوی این آموزش ها در وبسایت uncodev منتشر خواهند شد.
برای پیاده سازی الگوی Saga از دو روش میشه استفاده کرد :
روش Events/Choreography : در این روش هیچ هماهنگ کننده مرکزیای وجود نداره و هر سرویس بعد از انجام کارش سرویس بعدی رو با یک ایونت مطلع میسازه که کارش رو شروع کنه، اگر توی یکی از از مراحل و سرویس ها خطایی رخ بده بازم یک ایونت خطا ایجاد میکنه و سایر سرویسها رو خبردار میکنه که رول بک انجام بدن.
روش Orchestration : در این روش یک سرویس مرکزی وجود داره که نقش هماهنگ کننده بین سرویس های دیگه رو داره و لاجیک رو کنترل میکنه .
کانال تلگرام : UncoDev
مطلبی دیگر از این انتشارات
نصب گیتلب gitlab اختصاصی روی سرور با سیستم عامل اوبونتو
مطلبی دیگر از این انتشارات
تفاوت انجین MySQL InnoDB و MySQL MyISAM
مطلبی دیگر از این انتشارات
انواع دیتا استراکچر در گولنگ golang