michPl / thinkpay

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DEPLOY

  • git clone
  • npm i
  • add environments like in EXAMPLE.env

Необходимо реализовать распределенную систему, состоящую из нескольких одинаковых процессов, использующую для коммуникации только redis.

Каждый запущенный воркер может быть в 1м из 2х состояний: Генератор / Обработчик

Генератор генерирует целочисленное значение от 0 до 10, раз в определенный конфигом промежуток времени.

Обработчик получает переданное генератором число и обрабатывает его по следующим условиям В случае, если число > 8 выполнение считается ошибочным, воркер добавляет ошибку в список, хранящийся в редисе В противном случае - увеличивает на единицу глобальный счетчик обработанных сообщений, хранящийся в редис.

Система должна удовлетворять следующим условиям:

В каждый момент времени должно быть активно не более одного генератора В случае, если в системе нет генератора - случайный воркер прекращает быть обработчиком и становится генератором Время отсутствия активного генератора в системе не должно превышать 10 секунд При разработки алгоритма работы нужно учесть, что процессы считаются запущенными на разных компьютерах, и единственным доступным средством коммуникации является редис.

Для разработки можно использовать любые utility библиотеки, но никаких оберток над редис, тоесть сам алгоритм работы должен быть реализован в коде программы.

Язык реализации не важен

About


Languages

Language:TypeScript 100.0%