O que são “continuações do Jetty 6” e como elas se comparam às continuações encontradas nas linguagens de programação?
-
05-07-2019 - |
Pergunta
Estou procurando uma resposta que descreva um mecanismo de "continuação" em um servidor da web versus uma linguagem de programação.
Meu entendimento é que, usando continuações, é trivial ter um produtor de "dígitos do PI" se comunicar com um consumidor "dígitos do pi", sem rosqueamento explícito.
Eu ouvi coisas muito boas sobre continuações de cais. Estou curioso para saber o que os outros pensam.
Talvez eu já tenha encontrado minha resposta, mas estou fazendo a pergunta aqui de qualquer maneira - para o registro.
Solução
Como eles se comparam às continuações encontradas nas linguagens de programação?
Eles não têm nada em comum além do nome. É apenas um mecanismo para libertar o tópico atual, dando Servlet
Uma API para armazenar e restaurar seu estado, mas tudo é gerenciado manualmente, em oposição às continuações reais, onde o estado é automaticamente inferido a partir do contexto atual.
O exemplo prototípico para casos em que isso faz sentido é em camadas (composto) Serviços da Web, onde um serviço precisa fazer muitas solicitações a outros serviços e, embora essas solicitações sejam feitas, o thread atual é liberado. Após as conclusões dos pedidos (que podem ser feitos de forma assíncrona em alguns outros tópicos), o servlet's resume
O método é chamado, que montará a resposta dos resultados das solicitações.
Outras dicas
De acordo com isso página:
As continuações serão substituídas por solicitações suspensas do servlet-3.0 padrão assim que a especificação for finalizada. As primeiras liberações do Jetty-7 estão agora disponíveis que implementam a API de suspensão/currículo padrão proposta
Ainda não usei o Jetty, mas parece que, com as continuações, o servidor não é obrigado a manter um segmento para cada cliente onde normalmente quando o servidor está "adiando" (acho que bloqueando) ao enviar uma resposta a um cliente que continuamente as pesquisas Com o Ajax, precisaria de um encadeamento para cada cliente, o que seria um problema de escalabilidade.