الگوی معماری میکروسرویس - 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به راحتی می توان میکروسرویس های جدید را اضافه کرد، از این رو بسیار مقیاس پذیر است.عدم امکان وابستگی چرخه ای بین میکروسرویس هاتنها نقطه شکستمجتمع به دلیل مدیریت وظایف ایالتی.امیدوارم از این مقاله لذت برده باشید و برایتان مفید بوده باشد.با تشکر ?