|
|
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
По поводу асинхронности появилась задача. Есть Rest сервис, который принимает http запросы. Запросов сильно много(тысячи, десятки тысяч) Они будут прилетать пачками, то есть времена пиковой нагрузки будут сменяться временами без работы. пускай работа по обработке одного запроса это в среднем 1 минута(цифра даже не из головы) Если взять spring mvc, то насколько я понимаю у него наверное есть некоторый thread pool внутри. Допустим у нас 4 ядра. параллельно смогут работать только 4 потока, остальная работа будет висеть в очереди thread-pool-a. Хочется сделать решение масштабируемым горизонтально( вроде так называется когда количество машин увеличивается). допустим на одной машине будет поднят rest сервис, а на остальных 10/100/1000 (хз сколько) будут сидеть исполнятели запросов. Прежде всего непонятно как в методе спрингового контроллера сделать так, чтобы он делал следующее 1. Регистрация новой работы 2. Освобождение ресурсов 3. Посыл ответа клиенту рест сервиса когда работа выполнена Чо-то подобное слышал про ForkJoin pool, но четкого понимания нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 16:39 |
|
||
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
questionerпускай работа по обработке одного запроса это в среднем 1 минута(цифра даже не из головы) а из чего цифра? ))) Что то много для HTTP запроса. У тебя ослик вылетит по таймауту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:37 |
|
||
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
Petro123questionerпускай работа по обработке одного запроса это в среднем 1 минута(цифра даже не из головы) а из чего цифра? ))) Что то много для HTTP запроса. У тебя ослик вылетит по таймауту. Ну дык клиент сервера не браузер. Там на самом деле какая-то кодуля на C++ запускается. вот она и исполняется долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:39 |
|
||
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
questionerТам на самом деле какая-то кодуля на C++ запускается. вот она и исполняется долго. ))) ну дак тогда это HTTP сервер ставить раком, т.к. он начнёт плодить потоки для обслуживания очереди запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 17:41 |
|
||
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
questionerХочется сделать решение масштабируемым горизонтально( вроде так называется когда количество машин увеличивается). допустим на одной машине будет поднят rest сервис, а на остальных 10/100/1000 (хз сколько) будут сидеть исполнятели запросов. Для этого есть HAProxy . Не надо писать самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 19:57 |
|
||
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, А чем она отличается от того же nginx ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 20:08 |
|
||
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
questionerТам на самом деле какая-то кодуля на C++ запускается. вот она и исполняется долго. вы же понимаете что по хорошему, в REST нужно тогда поставить задачу в очередь, и вернуть клиенту HTTP.OK=200. Конечно это не по вашему ТЗ. По вашему ТЗ балансировщик и 1000 серверов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2017, 20:41 |
|
||
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
Petro123questionerТам на самом деле какая-то кодуля на C++ запускается. вот она и исполняется долго. вы же понимаете что по хорошему, в REST нужно тогда поставить задачу в очередь, и вернуть клиенту HTTP.OK=200. Конечно это не по вашему ТЗ. По вашему ТЗ балансировщик и 1000 серверов. Я вижу 2 варианта как отмасштабироваться. 1. 1000 серверов и на каждом рест апи и приблуда на C++. 2. 1 рест сервер добавляет задачи в очередь и потом ждёт ответ из нёё в колбеке и 999 воркеров разбирают задачи из очереди А и как выполнили это - записывают результат в очередь Б По поводу второго варианта насколько я понял, может быть 2 варианта. 1. Вернуть ОК с номером заявки, а потом клиент пулит сервер с вопросом "ну шо, готово уже или как?" 2. держать соединение долго. Как в лонг пуллинге. Тут так понял могут быть проблемы если сеть не стабильна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2017, 16:38 |
|
||
|
Спринговый контроллер как pipeline
|
|||
|---|---|---|---|
|
#18+
questionerВернуть ОК с номером заявки, у вас есть куки клиента. Вернуть только OK. А в куку запишите что угодно. Хоть: "Вы были 5 минут назад". Про очередь, есть уже готовые средства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2017, 09:58 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=70&tid=2123010]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 351ms |

| 0 / 0 |
