Es Memcache (Java) para Google App Engine un caché global?

Soy nuevo en Google App Engine, y pasé los últimos días creando una aplicación usando Memcache de GAE para almacenar datos. Según mis hallazgos iniciales, parece que Memcache de GAE NO es global.

Déjame explicarte más. Soy consciente de que diferentes solicitudes a GAE pueden ser atendidas por diferentes instancias (de hecho, esto parece suceder con bastante frecuencia). Es por esta razón, que estoy usando Memcache para almacenar algunos datos compartidos, en lugar de un Mapa estático. Pensé (quizás incorrectamente) que este era el punto de usar un caché distribuido para que cualquier nodo pudiera acceder a los datos.

Otra posibilidad definitiva es que estoy haciendo algo mal. He intentado tanto JCache como la API de Memcache de bajo nivel (estoy escribiendo Java, no Python). Esto es lo que estoy haciendo para recuperar el caché:

MemcacheService cache = MemcacheServiceFactory.getMemcacheService();

Después de la implementación, esto es lo que examino (a través de los registros de mi aplicación):

La solicitud inicial es atendida por un nodo particular, y los datos se almacenan en la memoria caché recuperada anteriormente.Las nuevas solicitudes recuperan este mismo caché y los datos están allí.Cuando se genera un nuevo nodo para atender una solicitud (de los registros que sé cuando esto sucede porque GAE registra el hecho de que "Esta solicitud provocó que se iniciara un nuevo proceso para su aplicación ..."), el caché se recupera y se recupera ¡¡VACÍO!

Ahora también sé que no hay garantía de cuánto tiempo estarán los datos en Memcache, pero según mis hallazgos, parece que los datos se han ido en el momento en que una instancia de diff intenta acceder al caché. Esto parece ir en contra de todo el concepto de un caché global distribuido no?

Esperamos que alguien pueda aclarar exactamente cómo se DEBE comportar esto. Si se supone que Memcache NO es global y cada instancia de servidor tiene su propia copia, ¿por qué incluso usar Memcache? Simplemente podría usar un HashMap estático (que hice inicialmente hasta que me di cuenta de que no sería global debido a las diferentes instancias que atienden mis solicitudes).

¿Ayuda

Respuestas a la pregunta(3)

Su respuesta a la pregunta