Memcached: обновление уведомлений для клиентских кешей - PullRequest
1 голос
/ 13 марта 2011

Давайте возьмем .NET-клиента Memcached, например:

Как мы знаем, если мы хотим поместить некоторые данные на сервер кеша, мы вызываем некоторый API-интерфейс, например Cache.Add(string key, object data), и клиент-механизатор сериализует data и затем отправляет его на серверы кеша. Если data является сложным объектом (имеет большой граф объектов), процесс сериализации может быть очень медленным. Итак, я пытаюсь использовать двухуровневый кеш: Распределенный кеш и In-Memory Cache .

Код приложения всегда запрашивает кэш в памяти для кэшированных данных. Если в кэше в памяти нет кэшированных данных, он будет запрашивать у кэшированных данных кэшированные данные. Производительность может выиграть от использования кэша In-Memory, для кэша In-Memory не требуется операция сериализации, и он намного ближе к приложению.

Однако существует проблема синхронизации. Если один веб-сервер изменяет данные, он обновляет базу данных, свой кэш в памяти и распределенный кэш. Но другие веб-серверы не будут уведомлены об этом событии «обновления», поэтому их кэш в памяти не будет обновлен.

Итак, вопрос: Как другие веб-серверы могут получать уведомления, когда один веб-сервер обновляет данные (чтобы они могли обновлять свои кэши в памяти)? Спасибо!

КСТАТИ: Я хочу синхронизировать кэшированные данные в режиме "Push Sync" , то есть кэшированные данные будут обновляться только , когда они изменились Потому что в моем приложении много операций чтения, в то время как только некоторые записи.

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