مقیاس پذیری یا توسعه پذیری (Scalability) در یک سیستم توزیع شده چیست؟

مدرس: مسعود کاویانی

توسعه پذیری یا همان Scalability که بعضا به آن مقیاس پذیری هم گفته می شود یک تعریف بسیار ساده دارد: سیستمی که بتواند خواسته های در حال افزایش را پاسخ دهد. برای مثال اگر شما یک نرم افزار دارید که بر روی یک سرور قرار دارد (مثلا یک وب سایت)، و روزانه ۱۰۰بازدید کننده از وب سایت شما دیدن می کنند، و بعد از مدتی این ۱۰۰بازدید کننده در روز به ۱۰هزار بازدید کننده رسید، در صورتیکه سرور شما بتواند با هزینه ی به نسبت معقولی این ۱۰هزار بازدید کننده را مدیریت کند، شما یک سیستم Scalable یا توسعه پذیر خواهید داشت. مثلا فرض کنید، برای ۱۰۰بازدید در روز، شما مبلغ ۱۰هزار تومان در ماه پرداخت میکردید. حالا که بازدید شما ۱۰هزار نفر شده (یعنی ۱۰۰برابر شده)، هزینه ی شما نباید ۱۰۰برابر شود. مثلا هزینه شما به جای ۱۰هزار تومان در ماه، بایستی ۲۰هزار تومان در ماه (یعنی ۲برابر) شود، تا بتوانیم بگوییم یک سیستم توسعه پذیر داریم.

یکی از اهداف سیستم های توزیع شده نیز، توسعه پذیری آن هاست. (به قول آقای تننباوم یکی از چهار هدف سیستم توزیع شده، توسعه پذیر بودن آن است. یکی دیگر از این اهداف سیستم توزیع شده، شفافیت یا همان Transparency است که در درس شفافیت بحث شد)

اگر در یک سیستم توزیع شده، درخواست هایی (Requests) که به سیستم می آیند ۱۰برابر شود، سیستم توزیع شده باید بتواند مثلا با ۲برابر کردن منابع خود، این تعداد درخواست ها را بدون مشکل پاسخ گو باشد.

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

۱. توسعه عمودی یا به اصطلاح Scale Up

۲. توسعه افقی یا به اصطلاح Scale Out

در توسعه عمودی که به آن Scale Up کردن نیز گفته می شود، شما به هر کدام از گره ها (Nodes) که در واقع همان کامپیوتر های موجود در سیستم توزیع شده هستند، منابعی مانند Ram یا CPU یا کارت گرافیک و… اضافه میکنید. با این کار شما سیستم های قوی تری دارید که میتوانند به درخواست های بیشتری در زمان سریعتر پاسخ دهند.

اما روشی دیگری در توسعه سیستم توزیع شده وجود دارد که به آن توسعه افقی یا Scale Out کردن می گویند. در این روش، به جای اضافه کردن منابع بیشتر (مانند Ram) به کامیپوترهای جاری در سیستم توزیع شده، تعدا گره ها (Nodes) را افزایش می دهیم. برای مثال تعدادی بیشتری کامپیوتر به سیستم توزیع شده اضافه می کنیم.

گر چه روش اول، روشی ساده و بعضاً کارا است، ولی پیشنهاد می شود در یک سیستم توزیع شده از روش دوم استفاده کنید.

این نکته را نیز دوباره یادآوری میکنیم که در یک سیستم توزیع شده، مقیاس پذیری (یا همان توسعه پذیری)، یکی از اهداف اصلی است.

منابع این بحث و اطلاعات بیشتر

این صفحه از وب سایت ماکروسافت

این صفحه از Techopedia

این اسلاید از وب سایت SlideShare

مقایسه Scale Out و Scale Up

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

6 دیدگاه دربارهٔ «مقیاس پذیری یا توسعه پذیری (Scalability) در یک سیستم توزیع شده چیست؟»

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

    شما راجع به Scalability توضیح‌های خوبی را ارائه کردید و چه بهتر می‌شد اگر راجع به تفاوتش با Expanadability هم بیشتر صحبت می‌کردید که مخاطب‌هاتون تفاوت این دو رو هم بدونن.

    به هرحال موفق باشی!

      1. سلام. بببخشید مقاله ای راجع به Extensibility در اختیار دارید؟ امکانش هست اگه مطلبی در اختیار دارید برام میل کنید؟ خیلی عجله دارم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *