@EpicUsaMan

Параллелизм и Node.js?

5a4b0d01d3f2c958783150.png

Каждый процесс имеет кэш данных из базы о пользователях (Почему? Набор данных о пользователе содержит целое море статистики, которую в реалтайме считать очень невыгодно и не продуктивно с точки зрения написания кода)

Таким образом worker-ы и master должны синхронизировать данные между собой.
Они это делают между собой посредством метода update, который передает данные в master, сравнивает их используя timestamp для строк и разницу для числового типа и вносит измененные данные в базу, после чего рассылает объединенный обьект другим worker-ам.

А теперь вопрос, как быть с массивами? Ведь там значения могут как удаляться, так и добавляться.

Плюс, какие подводные камни можно словить с таким подходом.
  • Вопрос задан
  • 337 просмотров
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Жуть какая. Ваш сервис будет деградировать с повышением нагрузки И повышением количества воркеров.

А теперь вопрос, как быть с массивами?

Наверное заюзать мютексы, которых нет.

Нода - это однопоточная штука, не надо эмулировать многопоточность. Вам же это еще и поддерживать.

Вполне нормальный кейс:
Кэш хранить в Redis, или чем-то типа того, ну а сервисы на ноде уже stateless.
Да, в такой схеме вы потеряете на издержках сети, зато получите простоту в горизонтальном масштабировании.

з.ы. посмотрите в сторону golang
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы