If you're seeing this message, it means we're having trouble loading external resources on our website.

Ако си зад уеб филтър, моля, увери се, че домейните *. kastatic.org и *. kasandbox.org са разрешени.

Основно съдържание

Мащабируеми системи

Интернет започва съществуването си като мрежа, която свързва университети и изследователски центрове. След като става наличен и достъпен за потребителите, популярността му нараства и сега се използва от приблизително 4,5 милиарда души.
Графика с година по оста x (от 1996 г. до 2015 г.) и брой потребители по оста y (от 0 до 3 милиарда). Линията започва от 75 милиона и завършва на 3,4 милиарда. Разделенията показват броя на потребителите по региони (Европа и Централна Азия, Източна Азия и Тихия океан, Латинска Америка и Карибите, Южна Азия, Северна Америка, Близкия Изток и Северна Африка, Субсахарска Африка).
Броят на потребителите на интернет от 1996 г. до 2015 г., групирани по региони. Източник на диаграмата: Our World in Data
За щастие, протоколите, които захранват интернет и мрежата, са проектирани за мащабируемост. Една мащабируема система е такава, която може да продължи да функционира добре дори когато използването ѝ се увеличи.

Интернет мащабируемост

Какви функционалности увеличават мащабируемостта на интернет?
  • Всяко компютърно устройство може да изпраща данни в интернет, ако следва протоколите. Няма бюрократичен процес, който да блокира присъединяването на устройство или да пречи на програмиста да научи как работят протоколите.
  • Системата за адресиране IPv6 може да адресира уникално трилион пъти повече устройства от тези, които в момента са свързани към интернет.
  • Маршрутизацията е динамична, така че новите рутери могат да се присъединят към мрежа по всяко време и да помогнат за транспортирането на пакети от данни из интернет.
Интернет е проектиран да бъде мащабируем, но никоя система не е мащабируема до безкрайност.
Какво застрашава мащабируемостта на интернет? Или казано по друг начин, какво може да се обърка, ако всяко едно устройство в света, което е свързано с интернет в момента, се опита да изтегли филм?
Ето няколко идеи:
  • Мрежовите връзки имат ограничена честотна лента. Огромно количество данни може да преминава лесно през връзките с много висока честотна лента, но лесно може да претовари връзките с ниска честотна лента, което води до закъснения или "изпуснати" пакети.
  • Маршрутизаторите имат ограничена пропускателна способност (количеството данни, което могат да препращат в секунда). Съвременният потребителски рутер има пропускателна способност от около 1 Gbps, докато много по-скъпите корпоративни рутери могат да препращат до 10 Gbps. Средният размер на един филм е от около 1 до 10 GB, така че глобално изтегляне може да се окаже ограничено от рутерите.
  • Безжичните рутери често имат ограничение в броя на устройствата, които могат да бъдат свързани към тях, обикновено до 250 устройства. Ако всеки се опита да използва споделена WiFi мрежа по едно и също време (като в университет или библиотека), може просто да не може да се присъедини.
🤔 Въз основа на всичко, научено за интернет до момента, какво друго може да повлияе на неговата мащабируемост, в положителна или в отрицателна посока?

Мащабируемост на уеб приложение

Уеб приложение, което работи върху интернет, също трябва да бъде мащабируемо, независимо дали е приложение за iPhone, уебсайт или мултиплейър игра. Сега, когато има милиарди хора, свързани към интернет, всяко приложение може внезапно да изпита нарастване на потребителите. Ако приложението не се мащабира, за да отговори на търсенето, потребителите могат да се сблъскат със забавяне или пълно прекъсване. 😬
По време на пандемията от COVID-19 хора по цял свят трябваше да си останат у дома, за да се ограничи разпространението на вируса. Много от тях се втурнаха към онлайн услуги за виртуални версии на онова, което им липсва от реалния живот. Тъй като много повече ученици започнаха да учат с Кан Академия, това доведе до нарастване натоварването на сървърите с 250%.
Диаграма с дата по оста x (от петък, 13 март до сряда, 19 март) и без етикети по оста y. Графиката започва с връх в петък, два ниски върха през уикенда и след това все по-големи върхове от понеделник до сряда. Последният връх е два пъти по-голям от първоначалния петъчен връх.
Заявки към нашия сървър от петък, 13 март, до сряда, 18 март. Потреблението винаги е по-ниско в събота и неделя.
Това нараснало потребление изненада системите ни и някои от тях едва се справяха с внезапния натиск от заявки. Например системата, която уведомява учениците за нови задания, започна да изостава и вместо след няколко секунди известията се появяваха след няколко минути.
Диаграма с времето по оста x (от полунощ на 16 март до 9:20 ч.) и без означения по оста y. Линията се колебае около нулата до 6 сутринта и след това започва да се изстрелва нагоре, завършвайки близо до върха на оста y.
Графиката показва списъка със задачи в системата за известия за задания, с времето по оста x и броя на все още незавършените задачи по оста y. Списъкът обикновено съдържа почти нула задачи, тъй като системата изпълнява задачите веднага щом бъдат създадени, но в този случай на системата са били възложени задачи по-бързо, отколкото тя може да се справи, и се е натрупало голямо изоставане.
За щастие, нашите инженери бързо увеличиха капацитета на тези системи и повечето потребители така и не усетиха нещо нередно.
Диаграма с времето по оста x (от полунощ на 16 март до 9:20 ч.) и без означения по оста y. Линията се колебае близо до нулата до 6 сутринта и след това започва да се изстрелва нагоре, като достига пик около 9:00 ч. сутринта. Изстрелва се надолу в 9:30 сутринта и остава близо до нула през останалото време.
Изоставане от задачи в системата за известия за възложени задания. Инженерите увеличават капацитета на системата в 9:30 ч.

Тестване на натоварване

Инженерните екипи могат да се подготвят за пикове в употребата, като извършват тестване на натоварване: симулират големи количества трафик за кратък период от време, за да видят дали системата се задъхва под натоварването. Тестването на натоварване може да разкрие точки на забавяне или ограничения в кода на системата.
Илюстрация на тестване на натоварване. Показан е сървър, към който са насочени много стрелки.
Говори ли ти нещо Pokémon Go? Това е мобилна игра, която излиза през лятото на 2016 г. и веднага става хит. Разработчиците на играта правят тестове за натоварване, преди да пуснат играта, като симулират пет пъти по-висок трафик от прогнозирания най-голям трафик. Сървърите се справят съвсем прилично.
Разработчиците обаче силно подценяват популярността на Pokémon Go. В деня на стартиране техните сървъри са изложени на 50 пъти по-висок от прогнозния трафик.
Линейна графика, озаглавена „Транзакции в облачно хранилище за данни в секунда“. Една линия е обозначена като "Първоначална цел при пускане на играта" и е в долния край на оста y. Друг ред е обозначен като „Очакван най-голям трафик“ и е малко над първия ред. Последният ред е с надпис „Действителен трафик“. Започва между първата и втората линия, но се издига нагоре, за да стане 50 пъти по-висока от втората линия.
Транзакциите в секунда в хранилището за данни на Pokémon Go. Реалните транзакции значително надвишават прогнозите. Източник: Google Cloud Blog
Игровите сървъри не са били готови за това ниво на екстремно натоварване, така че много играчи са посрещнати с разочароващ екран:
Екран от Pokémon Go, който казва „Нашите сървъри изпитват проблеми. Моля, върнете се по-късно“.
Екипът се стреми да подобри мащабируемостта на системата, на фона на нарастващото търсене от разочаровани потребители плюс множество DDoS атаки към сървърите им от киберпрестъпници.
Туит от @PokemonGoApp, в който се казва: "За да гарантираме, че всички обучители могат да опитат преживяването #PokemonGo, ние продължаваме да добавяме нови ресурси, за да можем да посрещнем всички. Благодарим ви за търпението."
Туит, публикуван по време на прекъсвания при пускането на играта. Източник: Twitter
След като преконфигурира своята сървърна архитектура, за да бъде по-мащабируема, екипът пуска Pokémon Go за останалия свят. През последните три години той е бил изтеглен повече от милиард пъти от магазините за мобилни приложения.

Спектърът на мащабируемостта

Една система е мащабируема, когато има капацитет да поеме повече потребление. Някои системи изобщо не са мащабируеми и могат да се справят само с количеството потребление, за което са проектирани.
Мащабируемите системи могат да се справят с допълнително потребление, но имат различен капацитет. Някои системи могат да се мащабират в степен да поемат два пъти по-голямо потребление; други системи биха могли да се справят с 1000 пъти по-голямо от текущото потребление.
Когато проектираме системи с потенциално глобален обхват – като самия интернет или приложения, които работят върху него – винаги трябва да обмисляме мащабируемостта на нашия подход.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Имаш въпроси по тази тема? Ще се радваме да отговорим — само ни попитай, като използваш полето за въпроси по-долу!

Искаш ли да се присъединиш към разговора?

Все още няма публикации.
Разбираш ли английски? Натисни тук, за да видиш още дискусии в английския сайт на Кан Академия.