Я новичок в Google App Engine, и последние несколько дней я потратил на создание приложения с использованием Memcache GAE для хранения данных. Исходя из моих первоначальных результатов, кажется, что Memcache GAE НЕ глобален?
Позвольте мне объяснить подробнее. Мне известно, что разные запросы к GAE могут потенциально обслуживаться разными экземплярами (на самом деле это, кажется, происходит довольно часто). Именно по этой причине я использую Memcache для хранения общих данных, а не статической карты. Я подумал (возможно, неправильно), что это было смыслом использования распределенного кэша, чтобы к данным мог получить доступ любой узел.
Другая определенная возможность состоит в том, что я делаю что-то не так. Я пробовал и JCache, и низкоуровневый Memcache API (я пишу на Java, а не на Python). Вот что я делаю, чтобы получить кеш:
MemcacheService cache = MemcacheServiceFactory.getMemcacheService();
После развертывания я проверяю (через журналы приложений):
- Первоначальный запрос обслуживается конкретным узлом, а данные сохраняются в кеше, полученном выше.
- Несколько новых запросов извлекают этот же кеш, и данные там.
- Когда новый узел создается для обслуживания запроса (из журналов, которые я знаю, когда это происходит, потому что GAE регистрирует тот факт, что «Этот запрос вызвал запуск нового процесса для вашего приложения ...»), кэш извлекается и пуста !!
Теперь я также знаю, что нет никакой гарантии того, как долго данные будут храниться в Memcache, но из моих выводов выясняется, что данные исчезают в тот момент, когда экземпляр diff пытается получить доступ к кэшу. Кажется, это идет вразрез с концепцией распределенного глобального кэша?
Надеюсь, кто-то сможет прояснить, как именно СЛЕДУЕТ вести себя. Если Memcache НЕ предполагается глобальным и каждый экземпляр сервера имеет свою собственную копию, то зачем вообще использовать Memcache? Я мог бы просто использовать статический HashMap (который я первоначально делал, пока не понял, что он не будет глобальным из-за различных случаев, обслуживающих мои запросы).
Помощь?