2011-09-21 7 views
2

일부 Java 서버 호스팅을 위해 Google App Engine을 사용하는 것을 거의 고려하고 있지만 일부 문서를 읽는 동안 조금 문제가있는 것으로 나타났습니다. 필자가 작성한 서버와 내가 염두에두고있는 서버 중 대부분은 세션간에 지속되는 메모리 기반 저장소를 필요로하지만 GAE는 이러한 메커니즘을 제공하지 않는 것으로 보입니다.Google App Engine에서 메모리 기반 데이터 공유

  • 데이터는 정적 개체로 저장할 수 있지만 앱은 여러 서버를 사용할 수 있으며 서버간에 데이터를 공유 할 수 없습니다.

  • 공유되는 memcache가 있지만 캐시이므로 신뢰할 수 없습니다.

  • 완벽하게 작동하지만 데이터가 너무 느립니다.

실제로 필요한 것은 모든 클라이언트 요청에 액세스 할 수 있고 일관성있는 고성능 (즉, 메모리 기반) 저장소입니다. 이 경우 데이터 저장소 앞에있는 특수 잠금 및 동기화 메커니즘을 제공하는 것입니다.

여기에는 기능상 큰 차이가있는 것으로 보입니다. 아니면 뭔가를 놓친 것일까 요?

의견이나 제안이 있으십니까?

+0

당신이 요구하는 것은 실제로 확장 가능한 시스템에는 존재하지 않습니다. 적어도 디스크 검색만큼 오래 걸리지 않는 것은 무엇이든 상관 없습니다. 따라서 선택은 memcache와 같이 빠르고 신뢰할 수없고 데이터 저장소와 같이 느리고 안정적입니다. 하지만 세션 데이터를 저장하는 데 데이터 저장소가 너무 느려지는 이유는 무엇입니까? –

+0

예, 실제로 이것이 확장 가능한 시스템에는 존재하지 않는다는 것이 맞지만, 실제로 필요한 "백엔드"(아래 참조)에 의해 실제로 제공됩니다. 나는 쿼리 당 수백 또는 수천 개의 데이터 객체에 잠금 정보를 저장하는 독점적 인 지속성 계층을 개발했습니다. 메모리 기반 솔루션을 사용하면 이것이 완벽하게 실현 가능하지만,이 데이터를 데이터 저장소에 기록하는 것은 너무 느립니다. – chris

+0

왜 잠금을해야합니까? 당신이 달성하고자하는 것에 대해 우리에게 더 많이 말한다면 아마도 우리는 대안을 제안 할 수 있습니다. –

답변

3

정적 데이터 (앱과 함께 업로드 한 데이터)는 모든 인스턴스에 대해 읽기 전용으로 표시됩니다.

인스턴스간에 데이터를 공유하려면 데이터 저장소를 사용하십시오. 대기 시간이 중요하지 않은 곳에서는 memcache에 캐시하십시오. 이것이 기본 옵션입니다. 데이터 저장소를 읽는 것은 매우 빠르며, 사용자가 염려 할 필요가있는 글만 쓸 수 있으며, 쿼리 할 필요가없는 엔티티 속성의 인덱스가 해제되었는지 확인하여이 데이터 저장소를 완화 할 수 있습니다.

또 다른 옵션은 예산에 맞으면 항상 접속 된 백엔드 서버에서 자신의 캐시를 실행하는 것입니다.

+0

그래, 고마워, 당신은 백엔드 부분과 내 질문에 대답했습니다. 백엔드는 정확히 내가 실제로 찾고있는 것입니다. 그러나 가장 싼 백엔드 비용에 대한 빠른 계산은 불행히도 약간 비싸지 만 약 $ 60/월에 해결되는 것으로 보입니다. – chris

+0

@chris 값이 비싸다고 말할 때 비교할 때 무엇을 사용하고 있습니까? 단지 당신이 고려하고있는 다른 옵션이 무엇인지 궁금해. –

관련 문제