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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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