Як з’являються такі сайти, як Google / Facebook / тощо. не отримуєте DDOS, хоча вони отримують так багато запитів?


14

Щось я не розумію:

(Десятки / сотні?) Тисячі людей одночасно намагаються підключитися до такого веб-сайту, як facebook.com або google.com.

Як я розумію, всі вони обов'язково повинні підключитися до одного і того ж початкового сервера (тому що DNS поверне той самий IP для багатьох з них, і тому всі запити йдуть до одного цільового пункту призначення).

Таким чином, одна машина / маршрутизатор повинна обробляти всі початкові запити, навіть якщо вона планує переслати їх на інші машини.

Чому такий одиночний пристрій не перевантажується, коли це відбувається?


8
Ваші припущення щодо DNS невірні: en.wikipedia.org/wiki/Round-robin_DNS
Der Hochstapler

@OliverSalzburg: Дякую за посилання, це корисно.
користувач541686

Відповіді:


20

Ваше розуміння того, що всі вони підключаються до одного сервера, помилкове, хоча деталі того, як ви досягаєте цих результатів, є складними. http://highscalability.com/ проводить довідкову роботу щодо того, як деякі з масштабованих рішень вводяться в дію.

У них набагато більше, ніж просто "один" сервер, до якого підключаються клієнти, навіть якщо загальнодоступна IP-адреса виглядає однаково. Наприклад, Google широко використовує будь-які адреси звернення до прямих людей, і зазвичай вони не мають лише однієї IP-адреси для кожного клієнта - навіть якщо вони повертають лише одну адресу, коли ви запитуєте.


+1 спасибі за вказівку на помилку. Я не можу не задатися питанням: якщо наступні запити щоразу переходять на інший сервер, то як сервер продовжує сеанс іншого сервера? Або випадковість на основі машини / за сеансом? (Я б міг уявити, що всі вони синхронізуються на бекенді, але, здається, дуже повільно синхронізувати тисячі серверів, що містять інформацію про мільйони користувачів одночасно.)
user541686

1
Відповідь є складною і залежить від впровадження, але один підхід полягає у тому, щоб мати пул машин, які нічого не робитимуть, крім як відправляти пакети до потрібного пункту призначення, навіть не будучи фактично з'єднанням TCP. Подивіться на F5 та інших постачальників балансируючих навантажень для маленького кінця як. Думаю, Google використовує те, що вони побудували самі.
Даніель Пітман

Ви також можете використовувати методологію розділеного сеансу. Існує сеанс між користувачем та сервером, до якого вони безпосередньо підключені, і "головний логічний сеанс" між користувачем та логічною службою. Якщо користувач переходить на інший сервер, він просто відновить той самий основний логічний сеанс для логічної служби.
Девід Шварц
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.