2012-08-14 2 views
0

AppEngine을 사용하는 웹 애플리케이션의 수명주기를 고려해 볼 때 의심의 여지가 있습니다. 다음과 같은 상황을 생각해 보겠습니다. 현재 연결된 사용자에 대한 정보를 제공하는 내 P2P 네트워크에서 서블릿을 수퍼 피어로, P2P 프로토콜을 사용하는 동안 유용한 기타 모든 세부 정보를 제공하고 싶습니다.App Engine 서블릿 수명주기

Datastore Java API를 사용하여 이러한 데이터를 저장하기로 결정했습니다. 요청이 앱에 오면 데이터가 데이터베이스에서 검색되어 사용자에게 전송됩니다. 단순한. 여기에 데이터 검색이 다소 중복되는 것 같습니다. 일단 앱이 시작될 때 데이터를 한 번 불러 와서 사용자에게 보낼 수 있는지 궁금합니다.

요청 및 응답 제한이 60 초임을 알고 있으며이 주제에 따라 Google App Engine Instance Life Cycle을 기반으로 모든 사용자 요청이 서블릿의 다른 인스턴스를 만들고 모든 데이터를 사용자가 보낼 때마다 검색해야한다고 생각합니다. 요청. 내가 맞습니까? 중복 데이터베이스 액세스를 제거하기 위해 수행 할 수있는 작업이 있습니까? Google에서 제공하는 백엔드를 사용하는 것이 어떻습니까?

미리 감사드립니다.

답변

0
  1. 모든 요청마다 새 인스턴스가 시작되지 않습니다.

  2. GAE에서 요청을 처리하는 데 더 많은 컴퓨팅 성능이 필요할 때 인스턴스가 시작됩니다.

  3. 요청을 처리 할 인스턴스를 결코 알 수 없습니다.

  4. 백엔드는 고정 된 인스턴스이므로 (실행중인 구성 개수) 공유 데이터를 유지하기에 적합합니다. 주의 사항 : 백엔드는 영구 저장 장치가 아니며 언제든지 다시 시작할 수 있습니다 (내 경험에 따르면 하루에 한 번씩). 따라서 데이터를 저장해야합니다.

  5. 공유 데이터 및 데이터 저장소를 폴백 (= 안정적이지만 느리고 값 비싼)으로 유지하기 위해 memcache (= 휘발성이지만 빠르며 저렴)를 사용할 수 있습니다.

0

아니요, 올바르지 않습니다. 서블릿 - 즉 인스턴스 -는 여러 요청에 대해 지속됩니다. 그러나 일생은 예측할 수 없으며, 당신은 그것에 의지해서는 안됩니다.

이 유형의 데이터를 저장하려면 memcached를 사용해야합니다.