مقیاس افقی در مقابل مقیاس عمودی

ساخت وبلاگ

برنامه ریزی ظرفیت چالشی است که هر تیم مهندسی در هنگام اطمینان از تأمین منابع مناسب برای رسیدگی به خواسته های ترافیکی مورد انتظار (و غیر منتظره) با آن روبرو می شود. هنگامی که تقاضا برای برنامه یا وب سایت شما در حال افزایش است و شما باید سطح دسترسی ، قدرت ذخیره و میزان در دسترس بودن آن را گسترش دهید ، آیا بهتر است به صورت افقی یا عمودی مقیاس بندی شود؟

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

مقیاس پذیری چیست؟

مقیاس پذیری یک برنامه را می توان با تعداد درخواست هایی که می تواند به طور همزمان از آن پشتیبانی کند ، اندازه گیری کرد. نکته ای که در آن یک برنامه دیگر نمی تواند درخواست های اضافی را به طور مؤثر اداره کند ، حد مقیاس پذیری آن است. این حد هنگامی حاصل می شود که یک منبع سخت افزاری مهم تمام شود و به ماشین های مختلف یا بیشتر نیاز داشته باشد. مقیاس گذاری این منابع می تواند شامل هرگونه تنظیم تنظیمات در CPU و حافظه فیزیکی (دستگاه های مختلف یا بیشتر) ، دیسک سخت (هارد دیسک های بزرگتر ، داده های کمتر "زنده" ، درایوهای حالت جامد) و/یا پهنای باند شبکه (چندین کنترل کننده رابط شبکه، NIC های بزرگتر ، فیبر و غیره).

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

تفاوت اصلی چیست؟

مقیاس بندی افقی به معنای مقیاس گذاری با اضافه کردن ماشین های بیشتر به استخر منابع شما (همچنین به عنوان "مقیاس گذاری" توصیف شده است) ، در حالی که مقیاس بندی عمودی با اضافه کردن قدرت بیشتر (به عنوان مثال CPU ، RAM) به یک دستگاه موجود (همچنین به عنوان "مقیاس گذاری" توصیف می شود")

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

scaling horizontally vs vertically

 

مقیاس افقی (مقیاس گذاری) مقیاس عمودی (مقیاس گذاری)
دیتابیس در یک دنیای بانک اطلاعاتی ، مقیاس بندی افقی معمولاً بر اساس پارتیشن بندی داده ها است (هر گره فقط شامل بخشی از داده ها است). در مقیاس عمودی ، داده ها بر روی یک گره واحد زندگی می کنند و مقیاس بندی از طریق چند هسته ای ، به عنوان مثال انجام می شود. گسترش بار بین منابع CPU و RAM دستگاه.
زمان خراش از نظر تئوری ، اضافه کردن ماشین های بیشتر به استخر موجود به این معنی است که شما به ظرفیت یک واحد واحد محدود نمی شوید و این امکان را فراهم می کند که با خرابی کمتری مقیاس کنید. مقیاس عمودی محدود به ظرفیت یک دستگاه است ، مقیاس بندی فراتر از آن ظرفیت می تواند شامل خرابی باشد و دارای حد سخت و سخت باشد ، یعنی مقیاس سخت افزاری که در حال حاضر در آن کار می کنید.
همزمانی همچنین به عنوان برنامه نویسی توزیع شده توصیف شده است ، زیرا این امر شامل توزیع مشاغل در دستگاه ها از طریق شبکه است. چندین الگوی مرتبط با این مدل: استاد/کارگر*، فضاهای Tuple ، تخته سیاه ، MapReduce. مدل بازیگر: برنامه نویسی همزمان در دستگاه های چند هسته ای اغلب از طریق عبور پیام چند رشته ای و در حال انجام انجام می شود.
ارسال پیام در محاسبات توزیع شده ، عدم وجود فضای آدرس مشترک باعث می شود به اشتراک گذاری داده ها پیچیده تر شود. همچنین باعث می شود روند اشتراک ، انتقال یا به روزرسانی داده ها پرهزینه تر از آنجا که باید نسخه های داده ها را منتقل کنید. در یک سناریوی چند رشته ای ، می توانید وجود یک فضای آدرس مشترک را فرض کنید ، بنابراین به اشتراک گذاری داده ها و انتقال پیام با عبور از یک مرجع قابل انجام است.
مثال ها Cassandra ، MongoDB ، Google Cloud Spaer MySQL ، Amazon RDS

*به بحث در مورد نیاز به تغییر اصطلاحات استاد/برده ، منجر به حذف آن در سال 2018 از زبان برنامه نویسی پایتون مراجعه کنید.

تصمیم برای مقیاس یا مقیاس

در انتخاب بین این دو ، عوامل مختلفی برای در نظر گرفتن وجود دارد. این شامل:

  • عملکرد - مقیاس گذاری به شما امکان می دهد قدرت چندین دستگاه را در یک دستگاه مجازی واحد با قدرت ترکیبی از همه آنها ترکیب کنید. این بدان معنی است که شما به ظرفیت یک واحد محدود نیستید. با این حال ، اول ، اگر منابع کافی را در یک دستگاه واحد برای تأمین نیازهای مقیاس پذیری خود داشته باشید ، ارزش آن را دارد.
  • انعطاف پذیری - اگر سیستم شما صرفاً برای مقیاس گذاری طراحی شده است ، شما به طور موثری در حداقل قیمت تعیین شده توسط سخت افزاری که استفاده می کنید قفل شده اید. اگر می خواهید انعطاف پذیری را برای انتخاب تنظیمات بهینه در هر زمان برای بهینه سازی هزینه و عملکرد انتخاب کنید ، مقیاس بندی ممکن است گزینه بهتری باشد.
  • منظم بودن ارتقاء - دوباره ، انعطاف پذیری در اینجا مهم است. ساختن یک برنامه به عنوان یک واحد بزرگ ، اضافه کردن یا تغییر قطعات کد را به صورت جداگانه بدون پایین آوردن کل سیستم ، دشوارتر می کند. به منظور ارائه یک فرایند ارتقاء مداوم تر ، جدا کردن برنامه و مقیاس افقی آسانتر است.
  • افزونگی - مقیاس بندی افقی در مقایسه با داشتن تنها یک سیستم در مقیاس عمودی ، افزونگی داخلی را ارائه می دهد و در نتیجه یک نقطه از شکست.
  • توزیع جغرافیایی - هنگامی که شما نیاز به پخش یک برنامه در مناطق جغرافیایی یا مراکز داده برای کاهش جغرافیایی ، رعایت الزامات نظارتی یا رسیدگی به سناریوهای بازیابی فاجعه دارید ، گزینه ای برای قرار دادن برنامه خود در یک واحد نداریدجعبهشما باید آن را توزیع کنید.
  • هزینه - از آنجا که ماشین های بزرگ چند هسته ای با نقاط قیمت قابل توجهی پایین تر وارد بازار می شوند ، در نظر بگیرید که آیا مواردی وجود دارد که برنامه شما (یا بخشی از برنامه شما) می تواند در یک جعبه واحد بسته بندی شود و عملکرد و اهداف مقیاس پذیری شما را برآورده کندواداین ممکن است منجر به کاهش هزینه ها شود.

در نتیجه: انتقال یکپارچه بین دو مدل؟

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

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

این احتمال وجود دارد که این صنعت به طور فزاینده ای به سمت یک رویکرد افقی توزیع شده برای مقیاس بندی معماری مهاجرت کند. این روند با تقاضا برای قابلیت اطمینان بیشتر از طریق یک استراتژی افزونگی و الزام به بهبود استفاده از طریق اشتراک منابع در نتیجه مهاجرت به محیط های ابر/SAAS هدایت می شود. با این حال ، ترکیب این با یک رویکرد مقیاس بندی عمودی می تواند به ما امکان دهد از هر دو الگوی بهره مند شویم.

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

برچسب : نویسنده : Mihayloo بازدید : <-PostHit-> تاريخ : دوشنبه 17 بهمن 1401 ساعت: 15:14