powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Спринговый контроллер как pipeline
10 сообщений из 10, страница 1 из 1
Спринговый контроллер как pipeline
    #39431046
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу асинхронности появилась задача.

Есть Rest сервис, который принимает http запросы. Запросов сильно много(тысячи, десятки тысяч) Они будут прилетать пачками, то есть времена пиковой нагрузки будут сменяться временами без работы.

пускай работа по обработке одного запроса это в среднем 1 минута(цифра даже не из головы)

Если взять spring mvc, то насколько я понимаю у него наверное есть некоторый thread pool внутри. Допустим у нас 4 ядра.

параллельно смогут работать только 4 потока, остальная работа будет висеть в очереди thread-pool-a.

Хочется сделать решение масштабируемым горизонтально( вроде так называется когда количество машин увеличивается).

допустим на одной машине будет поднят rest сервис, а на остальных 10/100/1000 (хз сколько) будут сидеть исполнятели запросов.

Прежде всего непонятно как в методе спрингового контроллера сделать так, чтобы он делал следующее
1. Регистрация новой работы
2. Освобождение ресурсов
3. Посыл ответа клиенту рест сервиса когда работа выполнена

Чо-то подобное слышал про ForkJoin pool, но четкого понимания нет
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431085
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerпускай работа по обработке одного запроса это в среднем 1 минута(цифра даже не из головы)
а из чего цифра? ))) Что то много для HTTP запроса. У тебя ослик вылетит по таймауту.
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431086
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questionerпускай работа по обработке одного запроса это в среднем 1 минута(цифра даже не из головы)
а из чего цифра? ))) Что то много для HTTP запроса. У тебя ослик вылетит по таймауту.
Ну дык клиент сервера не браузер.

Там на самом деле какая-то кодуля на C++ запускается. вот она и исполняется долго.
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431088
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerТам на самом деле какая-то кодуля на C++ запускается. вот она и исполняется долго.
)))
ну дак тогда это HTTP сервер ставить раком, т.к. он начнёт плодить потоки для обслуживания очереди запросов.
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431151
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerХочется сделать решение масштабируемым горизонтально( вроде так называется когда количество машин увеличивается).

допустим на одной машине будет поднят rest сервис, а на остальных 10/100/1000 (хз сколько) будут сидеть исполнятели запросов.

Для этого есть HAProxy . Не надо писать самому.
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431155
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin,

А чем она отличается от того же nginx ?
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431168
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerТам на самом деле какая-то кодуля на C++ запускается. вот она и исполняется долго.
вы же понимаете что по хорошему, в REST нужно тогда поставить задачу в очередь, и вернуть клиенту HTTP.OK=200.
Конечно это не по вашему ТЗ.
По вашему ТЗ балансировщик и 1000 серверов.
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431582
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questionerТам на самом деле какая-то кодуля на C++ запускается. вот она и исполняется долго.
вы же понимаете что по хорошему, в REST нужно тогда поставить задачу в очередь, и вернуть клиенту HTTP.OK=200.
Конечно это не по вашему ТЗ.
По вашему ТЗ балансировщик и 1000 серверов.

Я вижу 2 варианта как отмасштабироваться.

1. 1000 серверов и на каждом рест апи и приблуда на C++.

2. 1 рест сервер добавляет задачи в очередь и потом ждёт ответ из нёё в колбеке и 999 воркеров разбирают задачи из очереди А и как выполнили это - записывают результат в очередь Б

По поводу второго варианта насколько я понял, может быть 2 варианта.

1. Вернуть ОК с номером заявки, а потом клиент пулит сервер с вопросом "ну шо, готово уже или как?"
2. держать соединение долго. Как в лонг пуллинге. Тут так понял могут быть проблемы если сеть не стабильна
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431858
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerВернуть ОК с номером заявки,
у вас есть куки клиента.
Вернуть только OK. А в куку запишите что угодно. Хоть: "Вы были 5 минут назад".
Про очередь, есть уже готовые средства.
...
Рейтинг: 0 / 0
Спринговый контроллер как pipeline
    #39431862
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
второй вариант воткнуть задания в бизнес логику
Petro123Вернуть только OK.
и в БД записать задание - "ЗАЯВКУ" с номером и т.д.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Спринговый контроллер как pipeline
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]