2009-03-11 2 views
2

Google AppEngine에서 실행할 응용 프로그램을 만들고 있습니다.수많은 "활성"클라이언트의 AppEngine 응용 프로그램을 확장 가능한 폴링으로 설정합니까?

AppEngine 서버에서 오는 알림을 기다리는 동안 해당 애플리케이션의 웹 인터페이스를 기다릴 계획입니다.

XMLHttpRequest()를 사용하여 응용 프로그램에서 다음 알림을받을 때까지 기다릴 서버에 요청하는 것이 이상적입니다.

그러나 AppEngine에서이 논리 유형을 지원하는 것으로 보이지 않습니다 (내가 틀렸다면 수정하십시오). 이것은 정기적 인 폴링으로 제한되는 것처럼 보입니다.

그래서 질문은 :

  • 사람 AppEngine에의 CPU 사용량 쿼터에 실행 방지하기 위해 최선의이 폴링 메커니즘을 설계하는 방법의 좋은 제안이 있습니까? "능동적 인"고객의 수가 늘어날수록 확장 성이 고려되어야합니다.

"적극적인"클라이언트의 수가 늘어남에 따라 AppEngine 응용 프로그램에서 요청을 효율적으로 처리하기위한 팁과 클라이언트 측의 폴링 간격을 효과적으로 관리하기위한 제안에 특히 관심이 있습니다.

PS : 서버에서 폴링 된 정보의 유형은 일반적으로 최근에 업데이트되거나 추가 된 정보 비트에 대한 JSON 인코딩 정보입니다 (최근 몇 초 또는 몇 분 동안 읽음).

  • 폴링 방식에 의해 생성 된 각각의 요청에 응답하는 데 필요한 CPU의 부하를 최소화하려면 :

    상태 업데이트 여기

    지금까지이 질문에 주위에 나의 생각의 요약 인을 사용 memcache를 사용하여 회신 정보를 수집하는 데 걸리는 시간을 최소화합니다. 의 좋은 예를 가리키는 포인터를 찾아야합니다.

  • 내가 몇 가지 단서가 "활성"클라이언트가 서버에 생성 된 요청의 수를 최소화하기 위해 : 사용자가 적극적으로 상호 작용하지 않는 경우
    • 계속 증가하는 서버에 연속 폴링 요청 사이의 대기합니다 (즉 클라이언트 웹 페이지에서 아무 것도 클릭하지 않음).
    • 다른 유형의 요청을 서버에 다시 피하십시오. 요청 수를 줄이기 위해 요청을 다른 요청 결과로 폴링 한 결과가 포함됩니다.

댓글과 포인터는 예 환영 코드에!

+0

어떤 정보를 폴링하나요? –

+0

AppEngine 애플리케이션에서 최근 수정 된 항목 (최근 몇 초 또는 몇 분 읽음)에 대해 JSON으로 인코딩 된 정보를 다시 가져 오도록 간단히 말해 보겠습니다. 조금 더 명확하게하기 위해 질문을 편집합니다. – Laurent

답변

1

또는

일부 pubsub 구현에 관심이있을 수 있습니다. Google 및 Jaiku의 사람들이 만든 훌륭한 예 : pubsubhubbub처럼

+0

흠, 힌트를 주셔서 감사합니다. 나는 그것에 대해 조사하고 있고, 그 일을 소화 할 시간이 걸릴 것입니다 ... – Laurent

+0

또 포인터에 감사드립니다. 필자의 경우에는 적용 할 수 없을 것이라고 생각하지만이 중 일부인 Web Hook 메커니즘은 나에게 꽤 많은 아이디어를주었습니다. – Laurent

관련 문제