Ehsan
Ehsan
خواندن ۳ دقیقه·۲ سال پیش

الگوی معماری میکروسرویس - SAGA

مقدمه

در این مقاله قصد داریم به الگوی معماری Microservices - الگوی SAGA بپردازیم. این مقاله برای افراد مبتدی، متوسط و حرفه ای قابل استفاده است.


ما قصد داریم پوشش دهیم،

  • الگوی SAGA چیست؟
  • مورد استفاده در دنیای واقعی
  • انواع الگوی SAGA
  • رقص - پایه
  • ارکستراسیون - پایه


الگوی SAGA چیست؟

میکروسرویس ها بسیار محبوب هستند و در دنیای فناوری امروزی بسیار مورد استفاده قرار می گیرند. پیاده‌سازی ریزسرویس‌ها آسان است، اما زمانی که تراکنش توزیع‌شده وارد عمل می‌شود، عوارض شروع می‌شود.

الگوهای SAGA برای حل این مشکل معرفی می شوند.

ثبات نقش بسیار مهمی در هر معامله ایفا می کند. منظورم این است که تراکنش ها باید همه یا هیچ چیز را اجرا کنند.

اکنون به چندین میکروسرویس با پایگاه داده آنها فکر کنید. ما باید تمام تراکنش‌های تکمیل‌شده را در صورت شکست هر یک از میکروسرویس‌ها به عقب برگردانیم تا ثبات داده‌ها را حفظ کنیم تا کسب‌وکارمان قابل اعتماد، پایدار باشد و به نتیجه مطلوب برسد.


مورد استفاده

اجازه دهید فرض کنیم که ما یک سیستم سفارش آنلاین رستوران داریم.

برای سیستم رستوران آنلاین ممکن است میکروسرویس های زیر را داشته باشد،

  • خدمات سفارش - خدمات سفارش
  • خدمات پرداخت - خدمات پرداخت برای پرداخت
  • خدمات رستوران - رستوران ها را انتخاب کنید و غذاها را انتخاب کنید.
  • خدمات تحویل - تحویل سفارش.


آنها چگونه تعامل خواهند کرد؟

مشتری/ UI سفارش را با استفاده از سرویس سفارش انجام داد.

سرویس پرداخت دریافتی را تایید کرد و به سرویس سفارش و سرویس رستوران اطلاع داد.

سرویس رستوران در دسترس بودن اقلام را بررسی می کند و به خدمات سفارش و سرویس تحویل سرویس بعدی اطلاع می دهد.

پس از انجام تحویل، سرویس تحویل به خدمات سفارش اطلاع می دهد.

در صورت شکست هر یک از میکروسرویس‌ها، الگوی SAGA تراکنش را از همه میکروسرویس‌های دیگر برمی‌گرداند تا از سازگاری مطمئن شود.


انواع SAGA

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

  • رقص - مبتنی بر رویداد
  • ارکستراسیون - مبتنی بر فرمان.


رقص - مبتنی بر رویداد

در طراحی رقص، هر میکروسرویس از طریق رویداد با یکدیگر تعامل دارند. در این صورت ما هیچ سرویس یا هماهنگ کننده متمرکز نداریم.

برای رویداد، می توانیم از همگام سازی رویداد مانند RabbitMQ یا MSMQ و غیره استفاده کنیم.

همانطور که می دانیم مبتنی بر رویداد و همه میکروسرویس ها با استفاده از صف مشترک مانند RabbitMQ، MSMQ و غیره تعامل دارند.


به عنوان مثال.


  • ORDER_CEATE ثبت رویداد هنگام سفارش. هنگامی که سفارش ایجاد شد ORDER_CREATED رویداد روشن شد.
  • سرویس پرداخت این رویداد را می بیند و شروع به تأیید وضعیت پرداخت می کند. اگر پرداخت شده است ORDER_PAID رویداد را راه اندازی کرده و به سرویس سفارش و سرویس رستوران اطلاع دهید.
  • سرویس رستوران در دسترس بودن اقلام را بررسی می کند و ORDER_PREPARED را ثبت می کند.
  • هنگامی که Order ORDER_REGISTERED رویداد را ارسال می کند و به خدمات سفارش اطلاع می دهد.


رقص - Proc/Cons

  • شروع آن بسیار ساده است زیرا هیچ هماهنگ کننده ای ندارد.
  • هیچ نقطه شکست.
  • پیچیده در تعداد زیادی میکروسرویس و اسناد عظیم مورد نیاز برای درک جریان تعامل میکروسرویس ها.
  • تست یکپارچه دشوار است.


ارکستراسیون - مبتنی بر فرمان.

این یک سرویس متمرکز برای مدیریت تراکنش های کلیه خدمات و جریان است.

ارکستراسیون به هر میکروسرویس می‌گوید که کدام عملیات را انجام دهد و در صورت شکست، پیام‌هایی را برای بازگشت تراکنش به میکروسرویس‌های مختلف ارسال می‌کند.

همچنین وضعیت هر وظیفه را از طریق ماشین حالت مدیریت می کند.


ارکستراسیون - Proc/Cons

  • به راحتی می توان میکروسرویس های جدید را اضافه کرد، از این رو بسیار مقیاس پذیر است.
  • عدم امکان وابستگی چرخه ای بین میکروسرویس ها
  • تنها نقطه شکست
  • مجتمع به دلیل مدیریت وظایف ایالتی.


امیدوارم از این مقاله لذت برده باشید و برایتان مفید بوده باشد.

با تشکر ?

مدیریت وظایفمیکروسرویسالگوی sagaالگوی معماریسفارش سرویس
شاید از این پست‌ها خوشتان بیاید