خانه مهندسی نرم افزار طراحی معماری میکروسرویس با الگوی SAGA مهندسی نرم افزار میکروسرویس نوشته شده توسط: تیم فنی نیک آموز تاریخ انتشار: ۲۹ مرداد ۱۴۰۱ آخرین بروزرسانی: 30 مهر 1403 زمان مطالعه: 10 دقیقه ۳.۴ (۷) مقدمه میکروسرویسها به عنوان روش مناسبی برای مقیاسبندی و نگهداری هرچه سادهتر برنامهها شناخته میشوند. با این حال، این روش نیز دارای جنبههای مثبت و منفی خاص خود است. در برنامههای کاربردی یکپارچه معمولاً از تراکنشهای پایگاه داده با ویژگیهای ACID استفاده میشود که سازگاری دادهها را تسهیل میکند. بااینوجود، اگر در تراکنش پایگاه داده ما چندین میکروسرویس پخش شده باشد، چگونه میتوانیم از سازگاری دادهها اطمینان حاصل کنیم؟ پاسخ ساده است: با الگوی saga. در ادامه به موضوع طراحی معماری میکروسرویس با الگوی saga میپردازیم. آشنایی با طراحی معماری میکروسرویس با الگوی saga الگوی کاربردی SAGA را میتوان یک مفهوم معماری قدیمی دانست که هنوز هم برای میکروسرویسهای امروزی بسیار سودمند است. استفاده از الگوهای حماسه میتواند برای سیستمها و برنامههای مختلف سودمند بوده و مزایای زیادی را با خود به همراه داشته باشد. SAGA دنبالهای از تراکنشهای محلی در هر یک از میکروسرویسهای شرکتکننده است. برای پیاده سازی SAGA مراحلی وجود دارد که اجرا شدن هرکدام از آنها الزامی است و زمانی که کامل شوند، منطقی وجود دارد که تصمیم میگیرد چه کاری انجام شود. SAGA باید تضمین کند که تمامی مراحل با موفقیت به پایان رسیده است؛ در غیر این صورت، باید مقدمات لازم برای بازگشت را فراهم کند. هنگام ارائه درخواست ممکن است با استثنائات قانون زیرساخت یا منطق تجاری نیز روبرو شویم. البته نیاز است که تمامی این استثنائات را مدیریت کنیم و اگر در مرحله خاصی استثنا داریم، تمام تغییرات مراحل قبلی را نیز لغو کنیم. در بعضی مواقع، برای انجام بازگشت کامل باید درخواستهای اضافی را به میکروسرویسها ارائه دهیم. این درخواستهای اضافی به عنوان تراکنشهای جبرانی شناخته میشوند و همه این موارد میتوانند به این معنا باشند که استفاده از الگوهای saga قابلیت پیچیدهسازی برنامهها را دارند. راهکارهای پیاده سازی SAGA بدون شک اگر شما هم قصد داشته باشید که ازsaga در طراحی میکروسرویسهای خود استفاده کنید، نیاز است تا با راههای پیادهسازی آن آشنا شوید. دو راه برای پیادهسازی الگوی saga وجود دارند که هرکدام از آنها دارای رویکرد متفاوتی برای هماهنگ کردن گردش کار هستند. این دو روش به شرح زیر خواهند بود: استفاده از روش Orchestration (متمرکز) در این روش یک هماهنگکننده مرکزی وجود دارد که مسئول فراخوانی خدمات از راه دور برای استفاده از الگوی saga است. استفاده از روش Choreography (توزیع شده) در این روش هیچگونه هماهنگکننده مرکزی وجود ندارد و به همین دلیل، هر سرویس باید گوشبهزنگ باشد و رویدادها را تولید کند. همچنین سرویسها باید در خصوص اقداماتی که نیاز به اجرا شدن دارند، تصمیمگیری کنند. در ادامه جزئیات بیشتری درخصوص این دو راه پیاده سازی saga ارائه خواهیم کرد. استفاده از روش Orchestration (متمرکز): روش Orchestration زمانی استفاده میشود که نیاز به یک هماهنگکننده متمرکز داشته باشیم که تمام منطق را مدیریت کند و بداند که چه زمانی باید با سایر میکروسرویسها ارتباط برقرار کند، چه مرحلهای را انجام دهد یا چگونه به عقب بازگردد. روش Orchestration در الگوی saga زمانی بهترین عملکرد را خواهد داشت که منطق saga توسط یک یا دو تیم، مورد نظارت و بررسی قرار گیرد. در این غیر این صورت، کدهای برنامه میتوانند بسیار پیچیده و دشوار به نظر برسند. از سوی دیگر، روش Orchestration برای درک گردشهای کاری پیچیده نیز فوایدی دارد. از مهمترین این فواید میتوان به داشتن یک معماری منظمتر اشاره کرد؛ زیرا، میکروسرویسها به یکدیگر متصل نخواهند بود. البته هماهنگکننده باید بداند که در صورت شکست، چگونه به مرحله قبلی بازگردد. ازاینرو، هماهنگکننده باید گزارشی از رویدادها را برای هر جریان ذخیره کند و هنگام انجام یک بازگشت، تراکنشهای جبرانی را در هر میکروسرویس مربوطه انجام دهد. استفاده از روش Choreography (توزیع شده) این نوع از الگوی saga که مبتنی بر رویداد ناهمزمان است، هنگامی استفاده میشود که کدهای در حال اجرا در هر سرویس تصمیم بگیرند که چگونه رویدادها را در محدوده خود مدیریت کنند و در مرحله بعدی چه کاری انجام شود. البته شما میتوانید آن را بهعنوان زنجیرهای از میکروسرویسهای مرتبط با رویدادها نیز در نظر بگیرد. هر سرویس به رویدادهای دیگران گوش میدهد و رویدادهای خود را منتشر میکند که همین امر میتواند باعث جفت شدن رویدادها با یکدیگر شود. استفاده از روش Choreography زمانی بهترین نتیجه را خواهد داشت که تیمهای بیشتری درگیر مدیریت saga باشند. از مزایای این روش میتوان به این نکته اشاره کرد که هر تیم به صورت اختصاصی بر روی sagaهای موجود در محدوده خود متمرکز خواهد بود. از سوی دیگر، به دلیل نبود هیچ هماهنگکننده مرکزی نیازی به یک میکروسرویس جداگانه که مسئول هماهنگی یک گردش کار باشد، نیست. بااینحال، این روش میتواند درک گردشهای کاری پیچیدهتر و نحوه ارتباط برخی از خدمات را دشوار کند. نبود هماهنگکننده مرکزی در روش Choreography موجب شده است که برای بازگشت به مرحله قبلی، میکروسرویسهای مربوطه به رویدادهای شکست گوش دهند تا بتوانند به عقب بازگردند. سایر نکات مربوط به الگوی SAGA تا اینجا در خصوص الگوهای SAGA و همچنین نحوه پیادهسازی آنها اطلاعاتی را کسب کردیم. در این مطلب قصد داریم تا در خصوص این الگو مطالب مهم دیگری را به شما معرفی کنیم که دانستن آنها دارای اهمیت است. شناسه تراکنش جهانی شناسه تراکنش جهانی میتواند به نظارت یا اشکالزدایی کمک کند و به کمک آن میتوانیم بدانیم که کدام تراکنش شکستخورده است و اقدامات مناسب را برای رفع آن انجام دهیم. قفلهای معنایی الگوی SAGA به ما اجازه نمیدهد تا از قفلهای واقعی استفاده کنیم که همین امر میتواند منجر به ناسازگاری دادهها شود درحالیکه هنوز SAGA در حال انجام است. برای جلوگیری از تغییر مقادیر اشتباه سایر تراکنشها میتوان از مقادیر حالت موقت استفاده کرد و مطمئن شد که یکپارچگی دادهها حفظ میشود. بازگرداندن پاسخها SAGAها در پاره از مواقع میتوانند تراکنشهای زیادی را در بر بگیرند که تکمیل آنها مدتی طول میکشد. برای SAGAهای طولانیتر، بازگرداندن فوری پاسخها و پردازش تراکنشهای SAGA به صورت ناهمزمان میتواند بسیار حیاتی باشد. ما باید اطمینان حاصل کنیم که تمامی درخواستهایمان کوتاه بوده و به سرعت اجرا خواهند شد. نتیجهگیری طراحی معماری میکروسرویس با الگوی saga طراحی معماری میکروسرویس با الگوی saga دارای مزایا و معایب خاص خود بوده است که بسته به نیاز میتوان از آن استفاده کرد. به طور کلی، اگر به فرایندهای بازگشتی با جبران تراکنش نیاز دارید یا با تراکنشهای طولانیمدت در ارتباط هستید، استفاده کردن از SAGAها میتواند بهترین گزینه برای شما باشد. با استفاده از دو روش Orchestration و Choreography میتوانید اقدام به پیادهسازی الگوهای saga خودکرده و مدیریت سازگاری دادهها بین میکروسرویس را تضمین کنید. چه رتبه ای میدهید؟ میانگین ۳.۴ / ۵. از مجموع ۷ اولین نفر باش معرفی نویسنده مقالات 401 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده تیم فنی نیک آموز معرفی محصول علیرضا ارومند آموزش معماری میکروسرویس 5.190.000 تومان 3.114.000 تومان مقالات مرتبط ۰۷ فروردین مهندسی نرم افزار تفاوت DDD، میکروسرویس (Microservice)، الگوهای طراحی (Design pattern) و معماری تمیز (Clean Architecture) تیم فنی نیک آموز ۰۳ اسفند مهندسی نرم افزار آشنایی با تفاوت Domain Events و Integration Events تیم فنی نیک آموز ۲۶ بهمن مهندسی نرم افزار ۵ راز ساخت سیستم قدرتمند با پیاده سازی معماری میکروسرویس : چالش ها و راه حل ها تیم فنی نیک آموز ۰۵ دی مهندسی نرم افزار راهنمای مسیر شغلی معمار ارشد نرم افزار تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ