Размещается ли memcached между серверами в google app engine? - PullRequest
8 голосов
/ 10 августа 2009

На веб-сайте memcached говорится, что memcached - это кеш распределенной памяти. Это означает, что он может работать на нескольких серверах и поддерживать некоторую согласованность. Когда я делаю запрос в Google App Engine, существует высокая вероятность того, что запрос в той же группе объектов будет обслуживаться одним и тем же сервером.

Мой вопрос: скажем, два сервера обслуживают мой запрос, одинаково ли представление memcached с этих двух серверов? То есть вещи, которые я помещаю в memcached на одном сервере, отражаются в экземпляре memcached для другого сервера, или это два совершенно отдельных экземпляра memcached (по одному для каждого сервера)?

В частности, я хочу, чтобы каждый сервер фактически запускал свой собственный экземпляр memcached (без репликации в других экземплярах memcached). Если это тот случай, когда эти два экземпляра memcached обновляют друг друга в отношении изменений, внесенных в них, есть ли способ отключить это?

Я прошу прощения, если эти вопросы глупы, так как я только начал читать об этом, но это начальные вопросы, с которыми я столкнулся. Спасибо.

Ответы [ 4 ]

12 голосов
/ 10 августа 2009

App Engine на самом деле не использует memcached, а скорее реализует API-совместимое переопределение (главным образом тот же парень , я полагаю - в его "20% времени"; -).

Кэшированные значения могут исчезнуть в любое время (из-за явного истечения срока, сбоя на одном сервере или из-за нехватки памяти, в этом случае они выселяются в порядке наименьшего количества использованных файлов и т. Д.), Но если они этого не делают исчезают, они согласованы при просмотре на разных серверах.

4 голосов
/ 10 августа 2009

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

Каждый сервер запускает свой собственный экземпляр memcached, и каждый сервер будет хранить процент объектов, которые вы храните в memcache. Это работает так: когда вы используете API memcached для хранения чего-либо под данным ключом, выбирается сервер memcached (на основе ключа).

Нет репликации между экземплярами memcached, если один из этих блоков выйдет из строя, вы потеряете 1 / N ваших данных memcached (N - количество экземпляров memcached, запущенных в AppEngine).

2 голосов
/ 10 августа 2009

Как правило, memcached не обменивается данными между серверами. Сервер приложений хеширует ключ для выбора сервера memcached, а затем связывается с этим сервером для получения или установки данных.

0 голосов
/ 24 сентября 2013

Исходя из того, что я знаю, существует только ОДИН экземпляр Memcache всего вашего приложения, может быть много экземпляров вашего кода, каждый из которых выполняет свою память, и много хранилищ данных по всему миру, но существует только один сервер Memcache за раз, и имейте в виду, что он подвержен сбоям, даже не является SLA для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...