REST: InputStream и управление памятью - PullRequest
0 голосов
/ 24 октября 2018

В настоящее время у меня есть конечная точка POST, и конечная точка принимает поток октетов.Итак, мне интересно, где хранится поток ввода, когда несколько запросов продолжают попадать на сервер (несколько потоков ввода кэшируются на уровне сети?).Находятся ли эти потоки пакетов данных в сети, и если да, что произойдет, если моя пропускная способность достигнет 100%.Кроме того, я собираюсь обработать запрос только после проверки.Итак, в таком случае я не обрабатываю поток ввода, если аутентификация не удалась.Это хороший подход, учитывая минимальную конфигурацию кучи моих приложений (скажем, 2 ГБ).Кроме того, интересно, какой будет компромисс между памятью и пропускной способностью.Я использую реализацию JERSEY (приложение JAVA) и развернул службу REST на Tomcat.

1 Ответ

0 голосов
/ 24 октября 2018

Когда RESTful API, использующий HTTP в качестве транспортного протокола, потоки данных не кэшируются на сетевом уровне, так как протокол HTTP не имеет состояния .

Что касается аутентификации, перед публикацией огромной загрузки данных вы можете сделать Basic HTTP Auth , с помощью которой ваш клиент получит временный токен сеанса и затем отправит данные.

Если вы действительно обеспокоены тем, что можете достичь пропускной способности сети, есть несколько вариантов, которые вы можете попробовать применить:

  • Реализация асинхронной связи между клиентом и сервером.Таким образом, сервер будет извлекать входные данные в виде сообщений, когда он будет готов их обслуживать.
  • Включить сжатие HTTP
  • Поток содержимого POST

Дополнительная информация:

...