Как в кластере NodeJS сделать модуль, который запустится только в одном инстансе?

Рейтинг: 0Ответов: 1Опубликовано: 27.04.2015

Есть NodeJS приложение, запускается несколько инстансов. У этого приложения есть модуль планировщик и он, естественно, должен быть запущен только в единственном экземпляре(в пределах хоста). Т.е при старте нод, только одна должна запустить этот модуль.

Была мысль - открывать в модуле сетевой порт, а если уже открыт, то не запускать модуль. Этакий семафор на уровне ОС. Нужно придумать надежный индикатор, показывающий, работает ли сейчас планировщик.

Знаю, самый лучший способ - выделить планировщик в отдельное приложение, и запускать только один экземпляр, но это не мой вариант.

Ответы

▲ 1

Ну можно блокировать не только портом, можно делать файл и открывать его как например делает mongo. то есть если в директории есть файл и он locked значит процесс уже есть, можно более "умно" обмениватся event'ами через ChildProcess