@sergey228_G

Как релизаовать двустороннюю связь серверов в веб разработке?

(помогите спроектировать функционал и выбрать нужные технологии для моей личной разработки )
Описываю задачу

основной сервер получает файл с сайта , далее валидирует и из него достает несколько файлов .
все файлы сохраняются на диске и в бд с айдишником юзера

каждый файл проверяется на колличество работы .

основной сервер проверяет коннекты к серверам из базы . те что отвечают что аткивны - он берет это колво , к примеру 7

к примеру мы имеем 100% работы и они иделяться на 7 серверов и это 14 %
на каждый сервер отправляется один и тот же файл

значит первый сервер стартанет с нуля до 14%
третий с 15% до 28% процента ) каждый возьмет свою часть в работу
и так далее

В чем собственно вопросы !
юзеру нужно прокидывать
1) если один сервер закончит работу с файлом раньше чем другие - сервера остальные должны остановиться, а юзеру нужно кинуть сообщение - ну вот типо работа по первому файлу завершена
2) когда все куски файла проработаны всеми серверами и работы по файлу не успешны - тогда говорим юзеру что не успешно
3) когда юзер сам нажимает кнопку - узнать процент выполнения

Собственно главный вопрос этого всего , я не знаю как связать сервера .
1)Мне нужно чтобы главный мог общаться с другими
2)Другие могли общаься и с главным и между собой

если бы они не должны были общаться между собой то я бы просто сделал бы запросы через газл или кинул бы вебхуку

Так же я смотрел в сторону очередей ребита , но с этим тоже пришел к вопросу к банальному -как задаче поставить complete если она завершена только когда все сервера закончили работу.Вообщем вопросов много , ребята помогите
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
Для "общения" серверов между собой можно использовать WebSocket, gRPC, HTTP и много чего ещё. Если они в одной подсети, то это значительно упрощает их взаимодействие.
Сервер в роли диспетчера может отправлять задачи и контролировать их выполнение: отправить задачу с её идентификатором, а при получении ответа записать в СУБД, что задача Х выполнена. Там же и проверить, что если все задачи подсерверов выполнены, то перейти к следующему этапу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы