Всем привет.
Ребята, надо наладить архитектурку — подскажите, от чего можно оттолкнуться.
Общая схема:
У клиентов имеется фронтенд, постоянно отсылающий с помощью сокетов данные на основной node.js-бекенд.
Этот бекенд должен связываться с удаленными серверами либо виртуалками на том же сервере (все под linux), выбирать менее загруженную машину и отсылать туда задачу (задача — выполнение скрипта либо консольной программы с переданными параметрами и возвращением результата в виде строки, время выполнения конкретной задачи и количество требуемых на нее ресурсов может быть произвольным).
После того, как задача решена и результат ее решения передается назад основному бекенду, оный применяет к этим данным основную логику приложения, подготавливает и отправляет новые данные на фронтенд всем клиентам.
Пожелания:
Возможность автоматизированно перезапускать удаленные сервера в случае подвисания или сбоя. Возможность в любое время отменять задачи (например, при получении основным бекендом соответствующих инструкций с фронтенда.
Вопрос, скорее, ближе к администрированию — буду благодарен за наводки и подсказки, как это более грамотно сделать. Балансировщики? Менеджеры очередей?
Куда покопать и на кого посмотреть?
PS: Для примера, можно представить, что это игровой сервер, на котором множество различных игр разных тематик. Клиенты отсылают ходы на основной бекенд, там они распределяются по машинам, обрабатываются и передаются назад в основной бекенд, который высылает клиентам ответный ход компьютера.