Що таке highload | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Що таке highload

Що таке highload

Як системи працюють із високими навантаженнями.

Збій сервісів Facebook 5 жовтня 2021 показав, що навіть у FAANG не завжди можуть впоратися з високим навантаженням (highload).

Якщо програма перестала справлятися з потоком запитів, сторінки повертають 404, сервіси падають, а користувачі йдуть, це і є highload. Чітких критеріїв highload не існує. За високих навантажень не завжди йдеться про тисячі користувачів. У вас може бути не більше 100 запитів на добу, але вони будуть передавати багато даних. Highload для проєкту може починатися навіть від 100 користувачів.

Що впливає на highload:

  • кількість даних;
  • складність даних (особливо, якщо їх потрібно чистити та обробляти);
  • швидкість оновлення даних (наприклад, наскільки швидко старіють дані, які отримують користувачі).

Разом із Михайлом Михальовим, Software Engineer в Amazon і лектором курсу «Архітектура високих навантаженьк», розбираємося, як працювати з highload.

Як боротися з проблемами

Не можна передбачити точні обсяги онлайну або скласти графік виходу компонентів із ладу. Коли у вас зросте кількість користувачів, можна придбати новий сервер. Але якщо їх стане в 100 разів більше, архітектура постане перед труднощами.

Highload-архітектура розв’язує проблеми із залізом, софтом та людським фактором, мінімізуючи вартість обслуговування та розробки. Архітектор такої системи повинен вибрати інструменти, які зроблять її відмовостійкою.

Михайло: «Основне завдання архітектора будь-якої системи — розуміти вимоги бізнесу та технічної сторони. Архітектура не буває хорошою чи поганою. Вона буває відповідною та невідповідною».

Для оцінювання масштабування та можливих проблем необхідно оперувати цифрами. Скільки потрібно додати обчислювальних ресурсів, якщо кількість даних зросте в 15 разів? Що, якщо кількість користувачів під час пікового завантаження буде вп’ятеро більшою? Відповідаючи на ці питання, враховуйте, що:

  • користувачі повинні мати постійний доступ до ваших сервісів (High Availability);
  • користувачі не повинні довго чекати на відповідь від сервер (Latency), наприклад, кошик у магазині не повинен оновлюватися 5 хвилин;
  • сервіс повинен мати можливість розширюватися (High Scalability).

Компоненти, софт, людський фактор

Для підвищення надійності жорстких дисків ви можете об’єднувати їх у Redundant Array of Independent Disks (RAID) — логічний модуль із кількох дисків.

Процесори та RAM можуть бути hot-swappable (підлягати заміні без вимкнення обладнання). Якщо зникне електроенергія, у серверній буде дизельний генератор.

Що стосується софтверної частини, ви можете ізолювати процеси та сервіси, щоби вони не потягли за собою систему в разі падіння. Також допомагає балансувальник — прошарок, який приймає запит і (залежно від алгоритму) повертає користувачеві адресу вільного сервера або бази даних (БД). Балансувальник може робити це кількома способами, наприклад по черзі (Round Robin), відштовхуючись від географічної прив’язки користувача (GEO DNS) або завантаження джерела даних.

Користь балансування не обмежується перерозподілом запитів. Вона також розв’язує проблеми із масштабуванням. Наприклад, ви можете робити резервні копії даних на декількох серверах відразу й перерозподіляти їхню роботу через оновлення системи.

Але балансування може впоратися не з усіма труднощами.

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

Не зберігайте дані в одній таблиці та навіть одній базі даних, перевіряйте, логуйте та аналізуйте роботу всіх служб.

Права та доступи слід розмежовувати, а всі дії користувачів — записувати. Тільки користувачі, відповідальні за інфраструктуру, повинні мати змогу змінювати конфігурацію системи та підключати зовнішні пристрої. Для того, щоби відокремити критично важливі приватні вервіси від загальнодоступних, ви можете створити демілітаризовану зону (DMZ).

Джерело: networkguru

Більшість цих проблем розв’язують інструменти хмарних платформ, наприклад, Amazon Web Services.

Михайло: «Ключові тренди останніх років у високонавантажених програмах:

  • перехід на хмарні рішення. Вони знижують поріг входу в хайлоад і дають змогу забути про мікроменеджмент масштабування.
  • тісна інтеграція з аналізом даних (від аналізу логів до машинного навчання на замовлення користувачів). Архітектура програм ускладнюється, і важливою вимогою є підтримка інструментів аналітики та обробки даних».
Ще статті
У два рази більше натхнення та інформації на другій онлайн-конференції від robot_dreams
Експертки про те, як оцінюють кандидатів на нетехнічних інтерв’ю