Выбор ответа Middle Кластер, воркеры, масштабирование обновлено
Память у воркеров cluster
Вопрос
В сервисе счётчик просмотров хранится в переменной модуля let views = 0. После перехода на cluster с 4 воркерами цифры стали «прыгать». Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Каждый воркер это процесс со своей копией views. Воркеры cluster это процессы, памяти у них общей нет.
Варианты ответа
- cluster сбрасывает переменные модулей каждые 60 секунд
- Round-robin отправляет все запросы в первый воркер
- Гонка потоков: воркеры одновременно пишут в одну переменную
- Каждый воркер это процесс со своей копией
viewsправильный ответ
Разбор
Воркеры cluster это процессы, памяти у них общей нет. У каждого свой views, и ответ зависит от того, какой воркер принял запрос. Общее состояние выносят в Redis или базу.
- Никакого периодического сброса нет.
- Гонки потоков нет: переменная не общая, в каждом процессе своя.
- Round-robin как раз распределяет запросы по всем воркерам.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Кластер, воркеры, масштабирование»
- Консистентное хеширование с виртуальными узлами
- Балансировка least connections
- Плавный взвешенный round-robin как в nginx
- Код-ревью: сервис перед масштабированием в 4 инстанса
- Модуль cluster
- setInterval-крон при нескольких экземплярах
- Флаг --max-old-space-size
- Как Node.js использует несколько ядер