Добрый день, прошу совета у знающих людей.
Стоит задача по реализации своего сервера API, который в дальнейшем будет использовать как веб приложение так и мобильное приложение.
Способ реализации понятен и все задачи ясны, но с серверами очередей никогда не работал и нет понимаю его целесообразности на том или ином проекте
Подскажите пожалуйста, нужно ли для такого рода сервера использовать сервер очередей ? так как будут и мобильные и веб клиенты.
И еще вопрос: Сервер очереди, если он нужен, он выступает посредником между моим АПИ и клиентом ? или запросы идут на ссылки АПИ но там их сразу принимает сервер очередей ?
Технически серверу без разницы на чей запрос отвечать: веб-приложения или мобильного приложения. Так что 10 запросов от веб-приложения это всё-равно что 5 запросов от веб-приложения + 5 запросов от мобильного приложения.
К тому же, сервер очередей используется для постановки и распределения задач, а не для балансирования нагрузки http-сервера. Поэтому если вы беспокоитесь за нагрузку, то вам балансировщик нужен. Но вероятно в данном случае не нужен и балансировщик.
Да, вы правы. Изначально думал о нагрузке, но еще есть нюанс с задачами, которые могут выполняться долго (до 30 сек). Пример это формирования отчета. Клиент запрашивает отчет за период, и сервера связываются с другой базой для того, что бы выбрать данные, принять к себе и потом отдать клиенту в хорошем виде. Если есть задачи такого рода, нужны ли очереди ?
И буду задачи а-ля Cron, где клиент сможет настроить получение PUSH сообщений например об изменениях в свое кабинете и выбрать период, например каждый час, каждые 12 часов, каждые 24 часа
Это все как может быть связано с необходимостью сервера очереди?
>> Если есть задачи такого рода, нужны ли очереди ?
Тут очередь тоже не нужна, так как вам в любом случае нужно держать соединение пока вы не сформируете отчёт, чтобы его отправить. Если бы вам не нужно было на REST-вызов отправлять отчёт, а нужно было бы его просто сгенерировать, тогда очередь была бы уместна: добавили в очередь задачу на формирование отчёта, отдали клиенту ответ, что мол всё ок, и разорвали соединение. Но т.к., вам нужно отдать в ответ на REST-запрос отчёт, очередь тут просто лишняя — вам всё-равно нужно ждать.
>> получение PUSH сообщений
Тут можно и очередь использовать, но удобно ли? Задачи на формирование и отправку push придётся ставить заранее, причём ещё и убивать уже поставленные и ставить новые, если настройка периода уведомлений поменялась. И сколько задач ставить наперёд? Если уведомления каждый час, то ставить одну задачу в очередь, а по её выполнении/невыполнении ставить новую, или сразу 24 задачи на сутки вперёд поставить, а потом добавлять новые? В общем, очередь тут как-то костыльно выглядит.
Валерий, Спасибо, вы немного прояснили мне взгляд на этот момент. А то попробовать технологию хочется, и задача серьезная, но решить точно нужна ли она у меня нет оснований. Думаю у меня сводится к классическому REST серверу
Сервер очередей нужен в нескольких случаях:
1. Если вам нужно отдавать множеству книентов какой-то контент (например в мессенджерах отправлять сообщение группе)
2. Если нужно много контента отдавать клиентам которые постоянно висят в ждущем режиме (push уведомления)
3. Если нужно отправлять какие-либо сообщения не волнуясь о доставке
Опишите немного задачу приложений и вам скажут нужен он вам или нет