2012-02-04 4 views
3

웹 서버 개발의 다양한 접근 방식은 무엇입니까? 그래서 (1) 멀티 스레드 (2) 이벤트 루프가있는 것 같습니까? 각 접근법의 장단점은 무엇입니까? 언제 각각 사용 하시겠습니까? 각각의 접근에 대해 특정 impl을 열거 할 수 있습니까?웹 서버 개발의 다른 접근 방식은 무엇입니까?

답변

0

비 차단 I/O를 추가해야합니다. Netty을 살펴보십시오.

+1

(일반적으로) event-loop와 nio가 함께 표시됩니다. – DuduAlul

4

다른 방법은 다음과 같습니다

  1. 단일 스레드 : 모든 연결은 가 "수신"및 연결을 기다리고 및 프로세스가 구현하는 간단 requests.It하지만임을 단일 스레드에 의해 처리됩니다 이 는 한 번

  2. 멀티 스레드에서 요청을 처리 할 수있는 가장 쓸모 서버 : 서버가 요청을 수신하고 각 수신 요청이 it.So 각 클라이언트를 처리하기 위해 새 스레드에 할당 연결은 전용 스레드에 의해 처리됩니다. ( 1과 달리)이 방법은 클라이언트 요청의 동시 처리를 지원하지만, 각각의 새로운 요청이 서버 에 새로운 스레드를 생성하기 때문에하지 규모 잘 수행하고이 서버가 제한

  3. 에게 명중 할 resources.Eventually이 많이 걸립니다
  4. 멀티 스레드 풀 : (2)와 같은 아이디어이지만, 각 들어오는 요청을 처리하기 위해 새로운 스레드를 생성하는 대신 스레드 풀 의 스레드가 사용됩니다. 스레드가 생성되어 나중에 재사용을위한 풀에 배치됩니다.이 방법은 여러 클라이언트 요청을 지원하는 데 매우 효과적이며 표준 접근 방식입니다. Tomcat은 이와 같이 작동합니다.

  5. 이벤트 큐 : 들어오는 각 요청은 대기열에 배치되고 은 대기열의 요청을 처리하는 백그라운드 스레드에 의해 처리됩니다. 그것은 non-blocking이고 비동기 처리의이 유형은 또한 도 잘 맞습니다. 솔직히 말해서 그것이 성능에서 (3)보다 나은지 확실하지 않습니다. 그 바람둥이가 NIO 아키텍처를 사용하여 구성 될 수 있다고 생각합니다. 서버가 많은 연결을 처리 각 스레드와 CPU 코어를 포화시키는 G-WAN 믹스 멀티 스레드 - 풀이벤트 큐 같은

0

일부 서버.

동료 : 저는이 프로젝트의 개발에 관여하고 있습니다.

관련 문제