/demo

Primary LanguageJavaScript

Задание:

  1. Реализовать на платформе Node.JS кластер, без использования сторонних библиотек и модуля Cluster. Разрешается использовать Redis.
  • В момент запуска приложения какой-либо из node должен становиться master-node (кол-во node должно задаваться в конфигурационном файле).
  • Master-node генерирует данные (рандомные числа) и отправляет их worker'ам на обработку (достаточно просто залоггировать полученные данные).
  • Если выключить master-node, то главным должен становится любой другой worker.
  • Сгенерированные данные должны быть обработаны единожды одним из worker'ов!
  1. При помощи библиотеки ReactJS сделать UI в котором в виде списка должны выводиться активные node с их статусами (master/worker) и кол-во сгенерированных/обработанных сообщений (всего и отдельно для каждого node). Добавить возможность выключать любой из node через UI.

Реализация:

  • Весь сетевой стек как для IPC так и для клиент-серверного взаимодействия (за исключением статики) выполнен без использования сторонних библиотек для того, чтобы показать понимание механизмов сетевого взаимодействия.
  • В качестве сервера статики использован Express.js
  • В качестве IPC использованы сокеты типа unix домен, реализованн на возможностях модуля Net
  • Для кластеризации использован модуль child_process

web интерфейс

реализация модуля кластеризации

реализация IPC через TCP

код серверной части

код клиентской части