Легко подумати, що обслуговування великої аудиторії потребує серверної кімнати розміром із склад. Однак, це не завжди так. Якщо ваш сайт є статичним, невелика машина може обслуговувати сотні тисяч відвідувачів. Уявіть собі простий 500 МГц Celeron, що працює під керуванням Linux та Apache. Підключення до лінії T3 (45 мільйонів біт за секунду). Ця конфігурація здатна обробляти величезні обсяги трафіку. Провайтери орендують весь цей комплекс менш ніж за 1000 доларів на місяць.
Але ось у чому проблема. Найпопулярніші сайти не маленькі. Вони швидко впираються в обмеження. Одна машина не може масштабуватись нескінченно.
«Якщо вам доводиться мати справу з мільйонами відвідувачів та динамічним контентом, ваша машина вийде з ладу».
Обмеження виявляються при досягненні певного порога. По-перше, вам може знадобитися підтримувати мільйони відвідувачів щодня. Один процесор має свої обмеження. По-друге, це апаратні збої. Якщо один із ваших серверів виходить з ладу, ваш сайт стає недоступним, поки ви не заміните його на новий і не налаштуєте заново. По-третє, великі чи складні сторінки швидко витрачають ресурси. По-четверте, якщо сторінка має динамічно змінюватися кожного користувача, серверу доводиться працювати інтенсивніше. Зрештою, фонова обробка додає затримку. Більшість великих сайтів відповідають усім цим критеріям і тому потребують великої інфраструктури.
Три найважливіші стратегії масштабування
Якщо бюджет дозволяє, інженери можуть вибрати три основні шляхи під час пікових навантажень.
- Купити величезну машину з необмеженою потужністю та надмірністю.
- Розділити навантаження між багатьма меншими машинами.
- Комбінувати обидва методи.
Розподілений підхід найпоширеніший у великих веб-додатках. Ви, можливо, навіть бачили це у дії, не усвідомлюючи цього. Якщо URL-адреса трохи змінюється кожного разу, коли ви відвідуєте та оновлюєте веб-сайт (наприклад, www1.xyz.com та www2.xyz.com ), це є підказкою. Цей сайт використовує низку незалежних комп’ютерів. Усі вони використовують програмне забезпечення веб-сервера. Всі вони використовують одну й ту саму копію веб-сторінки.
Справжня магія полягає в тому, як розподіляються запити, що входять. Це може відбуватися двома основними способами.
Балансування навантаження на основі DNS
Система доменних імен (DNS) переводить імена, зручні для читання людиною, в IP-адреси. Деякі конфігурації DNS використовують підхід кругової черги (round-robin). DNS-сервери циклічно перебирають список доступних IP-адрес кожного разу, коли надходить запит.
Це природним чином розподіляє навантаження. Кожен сервер отримує частину трафіку. Вони не спілкуються один з одним про навантаження. Вони надають лише статичний або попередньо згенерований контент, до якого мають доступ.
Комутатор балансування навантаження
Більше просунутий підхід включає використання балансувальника навантаження. Весь мережевий трафік спочатку досягає центрального комутатора. Ця машина діє як регулювальник руху. Перенаправляє запит на доступний сервер.
Комутатор не просто ворожить. Він перевіряє кожен сервер, щоб визначити, який із них найменш завантажений. Це гарантує рівномірний розподіл роботи. Компанія HowStuffWorks застосувала цей підхід. Балансувальник навантаження компанії розподіляє трафік між трьома різними веб-серверами. Якщо один із них виходить з ладу, два інших підтримують роботу сайту. Без простоїв для користувача.
Ця надлишкова конфігурація має очевидні переваги. Вихід із ладу однієї машини не призводить до збою всього сайту. Ви також можете збільшувати ємність поетапно. Потрібна велика потужність? Додати ще одну машину. Це гнучко.
Є одна вада. Ці розподілені машини, як і раніше, часто покладаються на централізовані бази даних для обробки транзакцій. У міру зростання трафіку ця база даних стає вузьким місцем.
Одна величезна машина
Не всі розподіляють навантаження. TerraServer від Microsoft вибирає шлях “однієї великої машини”.
TerraServer зберігає терабайти супутникових зображень. Він опрацьовує мільйони запитів на ці дані. Він використовує потужне корпоративне обладнання. Візьмемо, наприклад, Digital AlphaServer 8400. Він має вісім 64-бітових процесорів із частотою 440 МГц. Містить 10 ГБ оперативної пам’яті з перевіркою та виправленням помилок.
Це велика потужність в одному корпусі. Це уникає складності координації мережі між кількома серверами. Але це дорого. Якщо один AlphaServer виходить із ладу, сервіс зупиняється.
Вибір залежить від бізнес-моделі. Статичний контент сприяє простим налаштуванням. Динамічні транзакції вимагають надмірності. Програми, що інтенсивно використовують дані, можуть вимагати сирої обчислювальної потужності.
Якщо ви хочете дізнатися більше, існує багато ресурсів. W3C встановлює стандарти. Microsoft опублікувала технічний документ про балансування навантаження у Windows NT. IBM надає “червону книгу” (red book) про балансування серверів. Стаття про розподілені колаборативні веб-сервери описує цю теорію.
Але основна реальність залишається простою. Трафік масштабується. Апаратні ресурси обмежені. Інженери будують міст між цими двома факторами. Те, як ви його будуєте, залежить від того, для чого насправді використовуватиметься ваш веб-сайт.





















