2009-11-24 3 views
0

더 많은 이론을 말하면, 어떻게 게으른 소켓을 사용하는 서버 (또는 응용 프로그램)를 만들 수 있습니까? JSON 교환을 통해 모든 데이터를 중앙 API와 같은 서블릿으로 이동시키는 웹 앱을 구상 중입니다. 게으른 푸시 기술의 일종으로, 클라이언트에 더 많은 것을 쓰기 위해 모든 데이터를 전송 한 후 약간의 시간 동안 HTTP 연결을 열어 둘 수 있습니다. 시간 초과가 소켓을 닫은 후에도 브라우저가 다시 연결할 수 있습니다.지연 성 소켓 - 확장 성?

해당 모델을 조사 할 때 지수형 스레드 분기를 통해 메모리가로드되지 않는 방식으로 앱을 작성하는 방법은 무엇입니까? 각 스레드가 하나 또는 여러 개의 연결을 처리합니까? 각각 새로운 데이터를 어떻게 발견 할 수 있습니까? - 아마 각 스레드가 자체적으로 데이터를 적극적으로 검색하지 않고 스레드 간 대화가 필요합니까? x + 1 자식 스레드를 생성 한 부모 스레드를 작성한 경우 각 스레드는 1 : 1 또는 여러 : 1로 클라이언트가 될까요? 교착 상태 문제가 발생할 수 있습니까? 각 추가 연결 처리기의 메모리 사용 공간은 얼마입니까?

누구에게도이 의견이 있습니까? 나는 이론이 연습보다 어떻게 보이는지 궁금해.

답변

2

여러 개의 소켓을 열고 select() 또는 poll()을 사용하여 운영 체제에서 어떤 작업을 수행해야하는지 알 수 있습니다. 이렇게하면 임의의 수의 소켓을 처리하기 위해 하나의 스레드 만 있으면됩니다. 읽기/쓰기는 운영 체제가 사용할 수있는 데이터/버퍼 공간이 있음을 알리는 경우에만 비 차단으로 수행됩니다.

1

Twisted을 살펴 보시기 바랍니다. 비동기 I/O를 처리하는 단일 프로세스와 여러 개의 작업자 프로세스로 구성된 경량 방식을 사용합니다. 작업자가 파일 및 데이터베이스 호출을 차단할 수 있으므로 스레드 된 작업자와 동기화하는 것이 더 쉽습니다. 열린 소켓의 대부분은 비동기 IO를 사용하는 단일 부모 스레드에 의해 처리 될 수 있습니다.