문제

AJAX 호출을 통해 서블릿에서 데이터를 얻는 Java의 웹 응용 프로그램을 작업 중입니다.

이 응용 프로그램에는 여러 페이지 요소가있어 서버에서 새로운 데이터를 상당히 빠른 간격으로 가져옵니다.

많은 사용자와 함께 서버에 대한 수요는 상당히 높아질 가능성이 있으므로 궁금합니다.

어떤 접근법이 최고의 성능을 제공하는지 :

많은 서블릿 (각 유형의 데이터 요청마다 하나)?

또는:

모든 요청을 처리 할 수있는 단일 서블릿?

도움이 되었습니까?

해결책

하나 이상의 서블릿을 가질 수있는 성능의 이유는 없습니다. 웹 애플리케이션에서는 요청 수에 관계없이 서블릿 클래스의 단일 인스턴스 만 인스턴스화됩니다. 요청은 직렬화되지 않으므로 동시에 처리되므로 서틀이 스레드 안전해야합니다.

다른 팁

그만큼 스트럿 프레임 워크 앱의 모든 것에 하나의 서블릿을 사용합니다. 당신의 물건은 그 하나의 서블릿에 꽂습니다. 그것이 그들에게 효과가 있다면 아마 당신에게 효과가있을 것입니다.

여러 서비스를 제공하는 한 가지 가능한 이유 중 하나는 미래에로드를 처리하기 위해 여러 서버로 확장해야한다면 모든 것이 시작되는 경우 "무대 뒤에서"하는 것보다 분리 된 서비스를 자체 서버로 이동하는 것이 더 쉽기 때문입니다. 하나의 서비스 중.

즉, 여러 개의 서블릿이있는 경우 추가 주요 오버 헤드가 있으므로 미래의 유연성을 낮은 유지 보수 성의 균형을 유지하는 문제입니다.

각 서블릿 요청이 별도의 스레드로 처리되기 때문에 여러 서블릿을 사용하는 경우 성능 향상이 없습니다. 단일 스레드가 아닌 경우 별도의 스레드로 처리됩니다.

그러나 코드의 모듈성과 분리를 유지하면 여러 개의 서블릿을 가질 수 있습니다.

Tony가 말했듯이, 복잡한 Java Servlet 클래스를 분해하거나 인터셉트 필터를 구현할 필요가 없다면 Tony가 말했듯이, 두 개 이상의 서블릿을 사용할 이유가 없습니다.

나는 당신이 앱에 대한 web.xml 파일에 다른 노드를 등록하는 한, 즉, 당신이 그렇게하고 싶다고 가정 할 때 동일한 서틀의 여러 인스턴스를 가질 수 있다는 것을 알고 있습니다.

그 외에, 내가 이해하는 것에서, 당신은 혜성 아키텍처로부터 혜택을받을 수 있습니다. http://en.wikipedia.org/wiki/comet_(programming).
일부 서블릿 컨테이너에는 이미 일부 혜성 구현이 있습니다. 여기 Ajax 및 Comet을 사용하는 방법에 대한 한 가지가 있습니다. http://www.ibm.com/developerworks/java/library/j-jettydwr/. 건축을 결정하기 전에 공부해야합니다.

Br,
~ a

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top