توسعه پذیری یا همان Scalability که بعضا به آن مقیاس پذیری هم گفته می شود یک تعریف بسیار ساده دارد: سیستمی که بتواند خواسته های در حال افزایش را پاسخ دهد. برای مثال اگر شما یک نرم افزار دارید که بر روی یک سرور قرار دارد (مثلا یک وب سایت)، و روزانه ۱۰۰بازدید کننده از وب سایت شما دیدن می کنند، و بعد از مدتی این ۱۰۰بازدید کننده در روز به ۱۰هزار بازدید کننده رسید، در صورتیکه سرور شما بتواند با هزینه ی به نسبت معقولی این ۱۰هزار بازدید کننده را مدیریت کند، شما یک سیستم Scalable یا توسعه پذیر خواهید داشت. مثلا فرض کنید، برای ۱۰۰بازدید در روز، شما مبلغ ۱۰هزار تومان در ماه پرداخت میکردید. حالا که بازدید شما ۱۰هزار نفر شده (یعنی ۱۰۰برابر شده)، هزینه ی شما نباید ۱۰۰برابر شود. مثلا هزینه شما به جای ۱۰هزار تومان در ماه، بایستی ۲۰هزار تومان در ماه (یعنی ۲برابر) شود، تا بتوانیم بگوییم یک سیستم توسعه پذیر داریم.
یکی از اهداف سیستم های توزیع شده نیز، توسعه پذیری آن هاست. (به قول آقای تننباوم یکی از چهار هدف سیستم توزیع شده، توسعه پذیر بودن آن است. یکی دیگر از این اهداف سیستم توزیع شده، شفافیت یا همان Transparency است که در درس شفافیت بحث شد)
اگر در یک سیستم توزیع شده، درخواست هایی (Requests) که به سیستم می آیند ۱۰برابر شود، سیستم توزیع شده باید بتواند مثلا با ۲برابر کردن منابع خود، این تعداد درخواست ها را بدون مشکل پاسخ گو باشد.
خوب، اگر تا اینجا مفهوم توسعه پذیری را در یک سیستم توزیع شده متوجه شدید، بهتر است به انواع توسعه پذیری بپردازیم. در کل دو نوع روش توسعه یک سیستم توزیع شده وجود دارد:
۱. توسعه عمودی یا به اصطلاح Scale Up
۲. توسعه افقی یا به اصطلاح Scale Out
در توسعه عمودی که به آن Scale Up کردن نیز گفته می شود، شما به هر کدام از گره ها (Nodes) که در واقع همان کامپیوتر های موجود در سیستم توزیع شده هستند، منابعی مانند Ram یا CPU یا کارت گرافیک و… اضافه میکنید. با این کار شما سیستم های قوی تری دارید که میتوانند به درخواست های بیشتری در زمان سریعتر پاسخ دهند.
اما روشی دیگری در توسعه سیستم توزیع شده وجود دارد که به آن توسعه افقی یا Scale Out کردن می گویند. در این روش، به جای اضافه کردن منابع بیشتر (مانند Ram) به کامیپوترهای جاری در سیستم توزیع شده، تعدا گره ها (Nodes) را افزایش می دهیم. برای مثال تعدادی بیشتری کامپیوتر به سیستم توزیع شده اضافه می کنیم.
گر چه روش اول، روشی ساده و بعضاً کارا است، ولی پیشنهاد می شود در یک سیستم توزیع شده از روش دوم استفاده کنید.
این نکته را نیز دوباره یادآوری میکنیم که در یک سیستم توزیع شده، مقیاس پذیری (یا همان توسعه پذیری)، یکی از اهداف اصلی است.
- ۱ » سیستم توزیع شده (Distributed System) چیست؟
- ۲ » مفهوم Coupling در سیستم های توزیع شده
- ۳ » شفافیت (Transparency) در یک سیستم توزیع شده به چه معناست؟
- ۴ » سیستم فایل توزیع شده (Distributed File System) چیست؟
- ۵ » مقیاس پذیری یا توسعه پذیری (Scalability) در یک سیستم توزیع شده چیست؟
- ۶ » تئوری CAP در سیستم توزیع شده
- ۷ » تعریف تک نقطه خرابی (Single Point Of Failure)
سلام دوست عزیز.
مطلبهاتون برای کسانی که قصد شروع یادگیری در این زمینه را دارند، عالی هستن.
شما راجع به Scalability توضیحهای خوبی را ارائه کردید و چه بهتر میشد اگر راجع به تفاوتش با Expanadability هم بیشتر صحبت میکردید که مخاطبهاتون تفاوت این دو رو هم بدونن.
به هرحال موفق باشی!
سلام و تشکر از شما
بله، حتما جناب برجوییان عزیز، در دورهای جدا به این مبحث هم خواهیم پرداخت
تشکر از توجه شما
سلام. بببخشید مقاله ای راجع به Extensibility در اختیار دارید؟ امکانش هست اگه مطلبی در اختیار دارید برام میل کنید؟ خیلی عجله دارم
بهترین وبسایتی که تاحالا دیدم.ازتون متشکرم
با سپاس از شما به خاطر توضیحات مفید و کاربردی 🌹🌹🌹🌹🌹
با سلام خدمت همه دوستان
مطلب مفیدی بود
تشکر میکنم
موفق باشید