Выборка переменной memcache при каждом запросе вызывает проблемы - PullRequest
1 голос
/ 22 октября 2011

Я использую memcache GAE для получения логического значения при каждом запросе. Это логическое значение является флагом для включения / отключения определенного URL.

Если это правда, все работает как обычно, если это ложь, то он отправляет ответ определенного формата.

Служба обслуживает около 7 запросов в секунду, и проблема в том, что Google, похоже, ввел ограничения на доступ к memcache, и теперь эта выборка постоянно дает сбой около 1 запроса в секунду, так как несколько дней назад, поэтому этот процесс стал совершенно ненадежно Мне пришлось сделать экстренный патч, убрать эту проверку из кода. Но мне нужна альтернативная процедура для включения / отключения службы.

Использование переменной экземпляра сервлета является опцией, но каждый экземпляр jvm будет иметь свой собственный, поэтому он не может работать.

Может кто-нибудь предложить способ сделать это?

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Нет ограничений (кроме проверок работоспособности) на то, как часто вы можете получить доступ к memcache.В любом случае, однако, вы никогда не должны полагаться исключительно на memcache для хранения значения;у вас всегда должен быть запасной механизм постоянного хранения, например хранилище данных.

0 голосов
/ 22 октября 2011

Для обеспечения согласованности может быть лучше использовать хранилище данных / транзакцию вместо memcache.

Чтобы уменьшить задержку хранилища данных / транзакции, вы можете попробовать смешать методы memcache и хранилище данных / транзакции. Например

# while reading status 
# 1. try to read from memcache
# 2. if memcache exists, return the value
# 3. if not, read from datastore, save to memcache, and return

# while writing status
# 1. use a transaction to write data to datastore and memcache
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...