در این مقاله قصد داریم به الگوی معماری Microservices - الگوی SAGA بپردازیم. این مقاله برای افراد مبتدی، متوسط و حرفه ای قابل استفاده است.
میکروسرویس ها بسیار محبوب هستند و در دنیای فناوری امروزی بسیار مورد استفاده قرار می گیرند. پیادهسازی ریزسرویسها آسان است، اما زمانی که تراکنش توزیعشده وارد عمل میشود، عوارض شروع میشود.
الگوهای SAGA برای حل این مشکل معرفی می شوند.
ثبات نقش بسیار مهمی در هر معامله ایفا می کند. منظورم این است که تراکنش ها باید همه یا هیچ چیز را اجرا کنند.
اکنون به چندین میکروسرویس با پایگاه داده آنها فکر کنید. ما باید تمام تراکنشهای تکمیلشده را در صورت شکست هر یک از میکروسرویسها به عقب برگردانیم تا ثبات دادهها را حفظ کنیم تا کسبوکارمان قابل اعتماد، پایدار باشد و به نتیجه مطلوب برسد.
مورد استفاده
اجازه دهید فرض کنیم که ما یک سیستم سفارش آنلاین رستوران داریم.
برای سیستم رستوران آنلاین ممکن است میکروسرویس های زیر را داشته باشد،
مشتری/ UI سفارش را با استفاده از سرویس سفارش انجام داد.
سرویس پرداخت دریافتی را تایید کرد و به سرویس سفارش و سرویس رستوران اطلاع داد.
سرویس رستوران در دسترس بودن اقلام را بررسی می کند و به خدمات سفارش و سرویس تحویل سرویس بعدی اطلاع می دهد.
پس از انجام تحویل، سرویس تحویل به خدمات سفارش اطلاع می دهد.
در صورت شکست هر یک از میکروسرویسها، الگوی SAGA تراکنش را از همه میکروسرویسهای دیگر برمیگرداند تا از سازگاری مطمئن شود.
الگوی SAGA را می توان با استفاده از 2 روش زیر پیاده سازی کرد:
در طراحی رقص، هر میکروسرویس از طریق رویداد با یکدیگر تعامل دارند. در این صورت ما هیچ سرویس یا هماهنگ کننده متمرکز نداریم.
برای رویداد، می توانیم از همگام سازی رویداد مانند RabbitMQ یا MSMQ و غیره استفاده کنیم.
همانطور که می دانیم مبتنی بر رویداد و همه میکروسرویس ها با استفاده از صف مشترک مانند RabbitMQ، MSMQ و غیره تعامل دارند.
به عنوان مثال.
این یک سرویس متمرکز برای مدیریت تراکنش های کلیه خدمات و جریان است.
ارکستراسیون به هر میکروسرویس میگوید که کدام عملیات را انجام دهد و در صورت شکست، پیامهایی را برای بازگشت تراکنش به میکروسرویسهای مختلف ارسال میکند.
همچنین وضعیت هر وظیفه را از طریق ماشین حالت مدیریت می کند.
امیدوارم از این مقاله لذت برده باشید و برایتان مفید بوده باشد.
با تشکر ?