Перед погружением в математику веб-сокетов введем несколько терминов. Без них будет сложно оценивать нагрузку на систему.
Concurrency
Concurrency — сколько задач система может делать одновременно. Представь кафе с несколькими столиками, но официант в нем работает один. И вот concurrency — это как этот официант, который умеет дробить свое внимание.
Он не стоит над каждым столиком, пока посетители едят, а переключается между задачами:
- принимает заказ у первого столика;
- относит напитки ко второму;
- приносит счет третьему;
- возвращается к первому, чтобы проверить, не нужен ли десерт.
Как это связано с ИТ-системами?
Сервер работает похоже: он не выполняет все запросы одновременно, а быстро переключается между ними. Пользователям кажется, что всё происходит «в один момент», но на самом деле задачи обрабатываются по чуть-чуть, вперемешку.
Важно: Конкурентность не значит, что задачи выполняются быстрее или строго в один момент. Система жонглирует ими (переключает контекст), создавая иллюзию параллельной работы.
В то же время есть такая вещь, как параллелизм — по аналогии, это когда в кафе уже два официанта: один работает с залами, другой — с летней верандой. Они делают задачи одновременно, не передавая очередь друг другу.
CPU
Следующий термин, важный для понимания ресурсов системы:
CPU — центральный процессор. Это как основной «работник», который выполняет все вычисления, связанные с приложением: что-то считает, обрабатывает запросы пользователей, запускает код или работает с данными.
Чтобы вся мощь CPU не перебрасывалась на одну задачу, он разделяется на контейнеры: пока один контейнер что-то обрабатывает, остальные свободны для других задач.
CPU cores — ядра процессора. Чем больше ядер, тем больше задач он может выполнять одновременно, а значит, работа идет быстрее.
Давай на очень простом примере — представим повара на кухне.
Если у процессора одно ядро, это как один повар, который делает всё сам. Он может готовить только одну вещь за раз. А если ядер четыре, это как четыре повара, которые делят между собой работу:
- Один повар режет овощи для салата.
- Второй жарит мясо.
- Третий варит суп.
- Четвёртый делает десерт.
В итоге весь обед на столе уже через час, а готовить по очереди заняло бы часа четыре. Чем больше ядер, тем легче компьютеру справляться с многозадачностью, например, одновременно запускать браузер, музыку и видеозвонок.
Сколько ядер нужно для разных задач
- 2 ядра — подходит для базовых задач, типа работы в браузере или текстовом редакторе.
- 4 ядра и больше — идеально для игр, программирования или обработки видео
- Много ядер (8, 12 и больше) — это уже для профессиональных задач, например, для машинного обучения, моделирования или серверов.
И последний в этом блоке термин.
RAM
RAM — это временное хранилище данных, которые приложение использует прямо сейчас. Например, загрузил данные из базы, положил их в RAM, обработал и отправил результат.
Если приложение — это повар, то RAM — это рабочий стол, на котором он раскладывает посуду и ингредиенты. Если там тесно некуда поставить блюдо с коржом для торта, то торт целиком собрать будет сложно.
Точно также, если контейнеру CPU не хватает памяти, он начнет «тормозить» или вообще упадет.
Вот теперь действительно всё.
А на следующей неделе мы детально погрузимся в путь от клиента до нашей системы, а еще посмотрим на архитектуру социальной сети.