Что такое & # 8220; Jetty 6 Continuations & # 8221; и как они сравниваются с продолжениями, найденными в языках программирования?
-
05-07-2019 - |
Вопрос
Я ищу ответ, который описывает " продолжение " механизм веб-сервера и язык программирования.
Насколько я понимаю, используя продолжения, тривиально иметь "цифры числа пи"; производитель связывается с «цифрами числа пи» потребитель, без явных потоков.
Я слышал очень хорошие вещи о продолжениях Jetty. Мне любопытно, что думают другие.
Возможно, я уже нашел свой ответ, но я все равно задаю вопрос здесь - для протокола.
Решение
как они соотносятся с продолжениями, найденными в языках программирования?
У них нет ничего общего, кроме названия. Это всего лишь механизм для освобождения текущего потока, предоставляющий Servlet
API для хранения и восстановления его состояния, но все это, скорее, выполняется вручную, в отличие от реальных продолжений, где состояние автоматически выводится из текущего контекста. . р>
Типичным примером для случаев, когда это имеет смысл, являются многоуровневые (составные) веб-сервисы, где одному сервису нужно сделать много запросов к другим сервисам, и пока эти запросы выполняются, текущий поток освобождается. По завершении запросов (что может быть сделано асинхронно в некоторых других потоках) вызывается метод resume
сервлета, который затем собирает ответ из результатов запросов.
Другие советы
Согласно этой странице :
продолжения будут заменены на стандартный сервлет-3.0 подвесной запрашивает, как только спецификация завершена. Ранние выпуски Jetty-7 теперь доступны, которые реализуют предлагаемый стандарт приостановить / возобновить API
Я еще не использовал Jetty, но, похоже, что при продолжениях серверу не требуется хранить поток для каждого клиента, где обычно, когда сервер "удерживает" (я предполагаю блокирование) при отправке ответа клиенту, который непрерывно опрашивает его с помощью AJAX, ему потребуется поток для каждого клиента, что будет проблемой масштабируемости.