مقیاس‌پذیری

از ویکی‌پدیا، دانشنامهٔ آزاد

در علم ارتباطات راه دور و مهندسی نرم‌افزار مقیاس‌پذیری (به انگلیسی: Scalability)، ویژگی مطلوبی از یک سامانه، شبکه یا فرایند است که به توانایی آن برای پاسخگویی به افزایش میزان بار کاری به سهولت دلالت می‌کند یا میزان آمادگی سیستم را برای افزایش بار کاری نشان می‌دهد.[۱] به عنوان نمونه، مقیاس‌پذیری می‌تواند به توانایی یک سامانه برای افزایش عملکرد کلی در هنگام افزودن منابع (مثل سخت‌افزار) اشاره کند. هنگامی که این واژه در موضوعات مرتبط با کسب و کار بکار می‌رود نیز مفهوم مشابهی از آن برداشت می‌شود. مدل‌های کسب‌وکار مقیاس پذیر مدلهایی هستند که پتانسیل ایجاد رشد اقتصادی سازمان را دارند.

تعریف مقیاس‌پذیری به عنوان یک خصوصیت از سامانه (سیستم) به سادگی امکانپذیر نیست[۲] و در هر مورد خاصی با توجه به ابعاد مورد اهمیت باید نیازمندی‌های جدیدی را برای مقیاس‌پذیری تعریف کرد. نقش مقیاس‌پذیری در طرٌاحی و انجام سامانه‌های پیچیده و بزرگ همچون پایگاه‌های داده‌ها، پایگاه‌های دانش، محاسبات گسترده (distributed computing)، اینترنت، کاوش‌های ماشینی در داده‌ها، بینایی رایانه‌ای، و مخابرات بسیار حیاتی و عمده می‌شود. سامانه‌ای که با افزایش ظرفیت، کارایی آن افزایش می‌یابد یک سامانه مقیاس پذیر خوانده می‌شود. یک الگوریتم، طراحی، پروتکل، برنامه رایانه ای یا هر سیستم دیگری مقیاس پذیر خوانده می‌شود اگر برای مقیاس‌های بزرگتر هم بتواند به طرز مناسب و عملی و کارا استفاده شود.

اندازه‌گیری مقیاس‌پذیری[ویرایش]

مقیاس‌پذیری را می‌توان در ابعاد گوناگونی اندازه‌گیری کرد.

  • مقیاس‌پذیری بار کاری (به انگلیسی: Load Scalability): توانایی یک سامانه توزیع شده برای گسترش یا کوچکتر سازی مخزن منابعش برای پاسخگویی به بار کاری بیشتر ویا کمتر.
  • مقیاس‌پذیری جغرافیایی (به انگلیسی: Geographic Scalability): توانایی حفظ کارایی، مفید بودن و قابلیت استفاده، بدون توجه به تمرکز یا پراکندگی و وسعت جغرافیایی
  • مقیاس‌پذیری اجرایی (به انگلیسی: Administrative Scalability): توانایی افزایش تعداد سازمان‌هایی که یک سامانه توزیع یافته را به اشتراک می‌گذارند.
  • مقیاس‌پذیری کارکردی (به انگلیسی: Functional Scalability): قابلیت ارتقای سیستم با افزایش یک یا چند کارکرد با کمترین زحمت.

تعریف ساده[ویرایش]

اگر در سیستم شما، درخواست‌هایی که می‌آیند ۱۰برابر شود، سیستم را مقیاس پذیر گوییم اگر بتواند مثلاً با ۲برابر کردن منابع خود، این تعداد درخواست‌ها را بدون مشکل پاسخ گو باشد.

مثال‌ها[ویرایش]

  • یک سامانه پردازش تراکنش برخط (به انگلیسی: Online Transaction Processing) مقیاس پذیر، سامانه ایست که بتواند با افزایش منابع (مانند پردازنده، فضای ذخیره‌سازی و…) تراکنش‌های بیشتری را پردازش کند و همچنین این ارتقا باید به سادگی و با کمترین هزینه و بدون متوقف ساختن سامانه امکانپذیر باشد.
  • یک پروتکل مسیریابی نسبت به اندازه شبکه مقیاس پذیر است اگر اندازه جدول مسیریابی هر گره به اندازه OLogN افزایش یابد که در آن N تعداد گره‌های شبکه است.
  • طبیعت توزیع یافته سامانه نام دامنه به آن امکان می‌دهد که حتی با وجود سرویس دهی به تمام ایستگاه‌های متصل به اینترنت، بدون افت کارایی به کار خود ادامه دهد وبنا براین سامانه‌ای مقیاس پذیر است.
  • برخی پیاده سازیهای همتا به همتا (به انگلیسی: Peer to Peer) اولیه از ناتلا (به انگلیسی: Gnutella) مشکل مقیاس‌پذیری داشتند. هر همتا(Peer) درخواست خود را به صورت پرس و جوی سیلابی به تمام همتاهای دیگر می‌فرستد و در نتیجه با افزایش تعداد همتاها میزان تقاضا در هر همتا افزایش می‌یافت و ظرفیت محدود همتاها به سرعت سرریز می‌شد. سایر سامانه‌های همتا به همتا مانند بیت‌تورنت به خوبی تغییر مقیاس می‌دهند زیرا میزان تقاضاهای هر همتا به تعداد کل همتاها بستگی ندارد.

تغییر مقیاس افقی و عمودی[ویرایش]

روشهای افزایش منابع برای یک کاربرد خاص در یکی از دسته‌های زیر قرار می‌گیرند:[۳]

تغییر مقیاس عمودی(Vertical Scaling)[ویرایش]

تغییر مقیاس عمودی که Scale up نیز گفته می‌شود، به معنی افزودن منابع به یک گره (Node) از سیستم - به‌طور نمونه ارتقای پردازنده یا رسانه ذخیره‌سازی در یک کامپیوتر- می‌باشد. افزایش بهره‌برداری از منابع نیز نوعی تغییر مقیاس عمودی است. به عنوان مثال می‌توان افزودن تعداد پروسه‌های در حال اجرای دمون (به انگلیسی: Daemon)های کارساز اچ‌تی‌تی‌پی آپاچی (به انگلیسی: Apache HTTP Server) را ذکر کرد.

تغییر مقیاس افقی(Horizontal Scaling)[ویرایش]

به تغییر مقیاس افقی که Scale out نیز گفته می‌شود، به معنی افزایش گره‌های بیشتر به سیستم است. به عنوان مثال می‌توان از افزایش تعداد وب سرورها از یک به سه عدد نام برد.

تغییر مقیاس قطری(Diagonal Scaling)[ویرایش]

به معنی تغییر مقیاس هم‌زمان افقی و عمودی می‌باشد.

مقیاس‌پذیری پایگاه داده‌ها[ویرایش]

برای اینکه پایگاه داده‌ها بتواند بدون کاهش نرخ تراکنش بر ثانیه به اندازه‌های بسیار بزرگ افزایش بابند چندین دیدگاه مختلف مورد استفاده فرار می‌گیرد. اگرچه نمی‌توان نقش پیشرفتهای سخت‌افزاری در سرعت و ظرفیت رسانه‌های ذخیره‌سازی و پردازنده‌ها و شبکه را دست کم گرفت اما فرای آن شیوه‌های متعدد معماری نیز در پیاده‌سازی پایگاه داده‌های بسیار بزرگ استفاده شده‌اند. یکی از تکنیکهایی که در اغلب سیستم‌های مدیریت پایگاه داده‌ها استفاده می‌شود پارتیشن‌بندی جداول بزرگ بر اساس طیف مقادیر فیلدهای کلیدی است. در این شیوه می‌توان با افزایش سرورهای پایگاه داده‌ها به صورت افقی تغییر مقیاس داد. همچنین با پیدایش ریزپردازنده(به انگلیسی: Microprocessor)های ۶۴ بیتی، پردازنده‌های چندهسته‌ای (به انگلیسی: Multi-Core CPUs) سیستم‌های بزرگ چند پردازنده‌ای متقارن (به انگلیسی: SMP Multiprocessor) فروشندگان سامانه‌های مدیریت پایگاه داده‌ها امکان این را می‌یابند که با استفاده از چندنخی (به انگلیسی: Multi-Threading) تغییر مقیاس عمودی بدهند. رسانه ذخیره‌سازی متصل به شبکه (به انگلیسی: Network-Attached Storage) و شبکه‌های ذخیره‌سازی (به انگلیسی: Storage Area Network) به همراه شبکه‌های بر سرعت محلی و فناوری کانال فیبر دست به دست هم داده‌اند تا پیکربندی‌های پایگاه داده‌ها و توان رایانش توزیع شده بزرگتر با پیوند ضعیف تر (Loosely Coupled) باشند. استاندارد پرطرفدار X/Open XA از یک ناظر تراکنش سراسری برای هماهنگی میان منابع پایگاه داده نیمه-خودمختار برای اجرای تراکنش‌های توزیع شده بهره می‌برد. ORacle RAC برای تحقق مقیاس‌پذیری از مدل متفاوتی بر پایه معماری «همه چیز مشترک» استفاده می‌کند که تکیه بر اتصالات پرسرعت بین سرورها دارد. درحالی‌که فروشندگان سامانه‌های مدیریت پایگاه داده (DBMS)، هریک از مزایای تسبی طراحی‌های خود سخن می‌گویند، گروهی از شرکت‌ها و پژوهشگران محدودیت‌های ذاتی سامانه مدیریت پایگاه داده رابطه‌ای را مورد پرسش قرار می‌دهند؛ مثلاً GigaSpaces، ادعا می‌کند که برای رسیدن به بالاترین حد کارایی و مقیاس‌پذیری به مدلی کاملاً متفاوت برای دسترسی به داده‌های توزیع شده و پردازش تراکنش‌ها به نام معماری فضاپایه (به انگلیسی: Space Based Architecture) نیاز است.[۴] از سوی دیگر شرکت بیس وان (به انگلیسی: Base One) نمونه‌ای از رسیدن به حداکثر مقیاس‌پذیری بدون فاصله گرفتن از مسیر اصلی فناوری‌های پایگاه داده‌ها را نشان می‌دهد.[۵] در هر دو حالت هیچ پایانی بر محدودیت‌های پایگاه داده‌ها در زمینه مقیاس‌پذیری به چشم نمی‌خورد.

طراحی برای مقیاس‌پذیری[ویرایش]

اغلب توصیه می‌شود که در طراحی سامانه‌ها تمرکز اصلی بر مقیاس‌پذیری باشد تا ظرفیت. معمولاً افزودن یک گره اضافی به سامانه برای افزایش کارایی ارزانتر از اقدام به تنظیم کارایی تک تک گره‌ها برای افزایش کارایی کلی سامانه می‌باشد. اما این شیوه الزاماً بهینه نیست. (مطابق آنچه که در مهندسی کارایی بحث می‌شود) مثال: فرض کنید که سرعت اجرای بخشی از یک برنامه اگر به صورت موازی بر روی چهار پردازنده اجرا شود تا ۷۰٪ افزایش می‌یابد. اگر کسری از محاسبات باشد که به صورت سری اجرا می‌شوند، آنگاه کسری از محاسبات خواهد بود که می‌تواند به صورت موازی اجرا شود. در این صورت حداکثر افزایش سرعتی که در اجرای برنامه با استفاده از P پردازنده را می‌توان با استفاده از قانون امدال(به انگلیسی: Amdahl's law) به‌دست‌آورد: . با جایگزینی مقادیر در این مثال عدد حاصل می‌شود. اگر قدرت محاسبه با افزایش تعداد پردازنده‌ها به ۸ دو برابر شود، عدد حاصل می‌شود. با دوبرابر شدن قدرت پردازش، سرعت اجرا تنها به میزان یک-پنجم افزایش می‌یابد. این بدین معنی است که افزودن سخت‌افزار لزوماً شیوه بهینه‌ای نیست. البته اگر کل برنامه قابل موازی‌سازی بود انتظار می‌رفت که سرعت نیز دو برابر گردد.

مقیاس‌پذیری در رایانش ابری[ویرایش]

رایانش ابری با بهره‌گیری از فناوری مجازی سازی گام بزرگی در جهت مقیاس‌پذیری برداشته‌است. رایانش ابری امکان مقیاس‌پذیری قطری (افقی + عمودی) را فراهم می‌سازد. بدین صورت که مجازی‌سازی سیستم‌عامل، مقیاس‌پذیری عمودی و مجازی‌سازی زیرساخت (Infrastructure)، مقیاس‌پذیری افقی را به همراه دارند. هزینه اجاره هزار سرور به مدت یک ساعت برابر با هزینه اجاره یک سرور به مدت هزار ساعت است.[۶]

تغییر مقیاس قوی و ضعیف[ویرایش]

در مبحث رایانش کارآمد(به انگلیسی: High-performance computing) دو مفهوم رایج برای مقیاس‌پذیری وجود دارد. اولی مقیاس‌پذیری قوی است که به چگونگی تغییرات در زمان حل مسئله نسبت به تغییرات در تعداد پردازنده‌ها وقتی که حجم کل مسئله ثابت است، می‌پردازد.[۷] دومین مفهوم، مقیاس‌پذیری ضعیف است که به بررسی چگونگی تغییرات در زمان حل مسئله نسبت تغییرات تعداد پردازنده‌ها وقتی که حجم مسئله برای هر پردازنده ثابت است، می‌پردازد.

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. André B. Bondi, 'Characteristics of scalability and their impact on performance', Proceedings of the 2nd international workshop on Software and performance, Ottawa, Ontario, Canada, 2000, ISBN 1-58113-195-X, pages 195 - 203
  2. See for instance, Mark D. Hill, 'What is scalability?' in ACM SIGARCH Computer Architecture News, December 1990, Volume 18 Issue 4, pages 18-21, (ISSN 0163-5964) and Leticia Duboc, David S. Rosenblum, Tony Wicks, 'Doctoral symposium: presentations: A framework for modelling and analysis of software systems scalability' in Proceeding of the 28th international conference on Software engineering ICSE '06, May 2006. ISBN 1-59593-375-1, pages 949 - 952
  3. Michael, M. (March 26, 2007). "Scale-up x Scale-out: A Case Study using Nutch/Lucene". Parallel and Distributed Processing Symposium, 2007. IPDPS 2007. IEEE International. Retrieved 2008-01-10. {{cite web}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  4. GigaSpaces. "Space-Based Architecture and The End of Tier-based Computing بایگانی‌شده در ۹ ژوئیه ۲۰۱۰ توسط Wayback Machine", 2006. Retrieved on May 23, 2007.
  5. Base One. "Database Scalability - Dispelling myths about the limits of database-centric architecture", 2007. Retrieved on May 23, 2007.
  6. پرداخت بر پایه مصرف در رایانش ابری برای دستیابی به مقیاس‌پذیری بر مبنای تقاضا http://www.ogf.org/OGF25/materials/1500/AvnerAlgomIGT-OGF25.pdf بایگانی‌شده در ۴ ژوئیه ۲۰۱۰ توسط Wayback Machine
  7. «The Weak Scaling of DL_POLY 3». بایگانی‌شده از اصلی در ۲ اکتبر ۲۰۱۱. دریافت‌شده در ۱۳ ژوئیه ۲۰۱۰.

پیوند به بیرون[ویرایش]