2010-02-24 5 views
0

사이트의 한 사용자가 내 장고 사이트의 다른 사용자에게 채팅을 요청할 수 있도록하고 싶습니다. 요청자가 실시간으로 대화 상자를 열어서 "대화하고 싶니?"라고 말하고 싶습니다. 장고의 채팅 요청에 대한 클라이언트 폴링 (역방향 AJAX)?

어떻게 다음과 같은 클라이언트 폴링 접근 사운드 : 데이터베이스에 형 CHAT_REQUEST의 메시지를 생성 일부/메시지/요청에 POST 요청을 생성 users2 별 *에

USER1 클릭. 한편 user2의 브라우저에있는 자바 스크립트는 서버에 메시지 업데이트를 반복적으로 쿼리합니다. CHAT_REQUEST 유형의 메시지를 받으면 팝업을 엽니 다.

이 접근 방식의 문제점은 데이터베이스 액세스 인 것 같습니다.

클라이언트가 10 초마다 폴링하고 100 명의 사용자가 브라우저 창을 열어두면 즉, 초당 10 데이터베이스 요청입니다.

이 메시지를 데이터베이스에 저장하는 대신 Django RAM 또는 세션 정보에 저장하는 것이 더 좋습니까? 아니면이 데이터베이스 테이블은 PostgreSQL을 사용하여 RAM에 캐시되고 검색은 빠릅니까?

+1

메시지 대기열 사용에 대해 생각해보십시오. –

답변

2

당신이 말한 것처럼이 데이터베이스 테이블은 서버에 부하를가하지만 어떤 이유로 든 이러한 요청을 기록하려는 경우 유용 할 수 있습니다.

memcached 또는 AMQP 서버와 같은 것을 사용하면 성능이 향상 될 수 있습니다. 도쿄 도내/도쿄 폭군 (Tokyo Cabinet/Tokyo Tyrant)과 같은 더 높은 성능의 키 - 값 저장소를 사용할 수도 있습니다.

0

서버 성능 및 대역폭 사용에 대해 걱정할 경우 "AJAX like"대신 "COMET like"통신을 찾아 보시기 바랍니다.

그런데 REDIS은 그런 메모리 내 데이터 구조를 처리하는 데 매우 적합합니다.

관련 문제