на ларавеле
(помогите спроектировать функционал и выбрать нужные технологии для моей личной разработки )
Описываю задачу
основной сервер получает файл с сайта , далее валидирует и из него достает несколько файлов .
все файлы сохраняются на диске и в бд с айдишником юзера
каждый файл проверяется на колличество работы .
основной сервер проверяет коннекты к серверам из базы . те что отвечают что аткивны - он берет это колво , к примеру 7
к примеру мы имеем 100% работы и они иделяться на 7 серверов и это 14 %
на каждый сервер отправляется один и тот же файл
значит первый сервер стартанет с нуля до 14%
третий с 15% до 28% процента ) каждый возьмет свою часть в работу
и так далее
В чем собственно вопросы !
юзеру нужно прокидывать
1) если один сервер закончит работу с файлом раньше чем другие - сервера остальные должны остановиться, а юзеру нужно кинуть сообщение - ну вот типо работа по первому файлу завершена
2) когда все куски файла проработаны всеми серверами и работы по файлу не успешны - тогда говорим юзеру что не успешно
3) когда юзер сам нажимает кнопку - узнать процент выполнения
Собственно главный вопрос этого всего , я не знаю как связать сервера .
1)Мне нужно чтобы главный мог общаться с другими
2)Другие могли общаься и с главным и между собой
если бы они не должны были общаться между собой то я бы просто сделал бы запросы через газл или кинул бы вебхуку
Так же я смотрел в сторону очередей ребита , но с этим тоже пришел к вопросу к банальному -как задаче поставить complete если она завершена только когда все сервера закончили работу.Вообщем вопросов много , ребята помогите
а вот это тебе разве не подойдет: https://laravel.com/docs/10.x/queues#job-batching единый редис, единый код по всем семи серверам, 1 сервер как основной, контролирующий Job Batching, остальные только выполняют работу, но вот как это все равномерно распределить по разным серверам, вот это уже другой вопрос.
Обсуждают сегодня