Pergunta

Eu estou trabalhando em uma aplicação web em Java que recebe dados de servlets por meio de chamadas AJAX.

Esta aplicação apresenta vários elementos da página que obter novos dados do servidor em intervalos bastante rápida.

Com um grande número de usuários, a demanda no servidor tem um potencial para obter bastante elevado, por isso estou curioso:

Que abordagem oferece o melhor desempenho:

Muitos servlets (um para cada tipo de solicitação de dados)?

Ou:

um único servlet que pode lidar com todos os pedidos?

Foi útil?

Solução

Não há nenhuma razão de desempenho para ter mais de um servlet. Em uma aplicação web, apenas uma única instância de uma classe servlet é instantitated, não importa como muitos pedidos. Os pedidos não são serializados, eles são tratados simultaneamente, daí a necessidade de seu servlet para ser thread-safe.

Outras dicas

O struts-quadro usos um servlet para tudo em seu aplicativo. As velas de coisas em que um servlet. Se ele funciona para eles, ele provavelmente irá trabalhar para você.

Uma razão possível ter vários serviços é que, se você precisa para expandir a vários servidores para lidar com a carga no futuro, é mais fácil para mover um serviço separado para ele é servidor próprio do que para fazê-lo "nos bastidores" se tudo está vindo fora de um serviço.

Dito isto, há sobrecarga maintinence extra se você tiver vários servlets, por isso é uma questão de equilíbrio entre flexibilidade futuro com baixa manutenção.

Há, como tal, há melhorias de desempenho no caso de você usar vários servlets uma vez que para cada servlet pedido é tratado em um segmento separado, desde que não seja único segmento.

Mas manter modularidade e separação de código, você pode ter vários servlets.

Como Tony disse, não há realmente uma razão para usar mais de um servlet, a menos que você precisa para quebrar um complexo de classe Java Servlet ou talvez implementar um filtro interceptar.

Eu tenho certeza que você sabe que você pode ter várias instâncias do mesmo servlet, desde que você se registrar diferentes nós no arquivo web.xml para seu aplicativo -. Ou seja, supondo que você quer fazer isso

Além disso, a partir do que eu estou entendendo, você pode se beneficiar de arquitetura cometa - http://en.wikipedia.org/wiki/Comet_ (programação) .
Já existem algumas implementações de Comet em alguns contêineres de servlet - aqui está uma olhada em como usar Ajax e Comet - http://www.ibm.com/developerworks/java/library/j-jettydwr/ . Você deve estudar antes de decidir sobre a sua arquitetura.

BR,
~ A

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top