- git clone
- npm i
- add environments like in EXAMPLE.env
Необходимо реализовать распределенную систему, состоящую из нескольких одинаковых процессов, использующую для коммуникации только redis.
Каждый запущенный воркер может быть в 1м из 2х состояний: Генератор / Обработчик
Генератор генерирует целочисленное значение от 0 до 10, раз в определенный конфигом промежуток времени.
Обработчик получает переданное генератором число и обрабатывает его по следующим условиям В случае, если число > 8 выполнение считается ошибочным, воркер добавляет ошибку в список, хранящийся в редисе В противном случае - увеличивает на единицу глобальный счетчик обработанных сообщений, хранящийся в редис.
Система должна удовлетворять следующим условиям:
В каждый момент времени должно быть активно не более одного генератора В случае, если в системе нет генератора - случайный воркер прекращает быть обработчиком и становится генератором Время отсутствия активного генератора в системе не должно превышать 10 секунд При разработки алгоритма работы нужно учесть, что процессы считаются запущенными на разных компьютерах, и единственным доступным средством коммуникации является редис.
Для разработки можно использовать любые utility библиотеки, но никаких оберток над редис, тоесть сам алгоритм работы должен быть реализован в коде программы.
Язык реализации не важен