Рекомендовать стратегию обновления кэша - PullRequest
1 голос
/ 20 января 2011

В последнее время наш сайт разделен на несколько небольших сайтов, которые затем распределяются по разным IDC.

Один из этих сайтов обслуживает аутентификацию пользователей и другие связанные с пользователями услуги, другие сайты получают к нему доступ через веб-службы.

На каждом сайте, который извлекает данные удаленно, мы создаем локальный кэш, чтобы нам не приходилось выполнять удаленный доступ каждый раз, когда требуется информация о пользователе.

Какую стратегию обновления кэша вы бы порекомендовалиобеспечить целостность данных?

1 Ответ

1 голос
/ 20 января 2011

Поскольку вам нужна обновленная политика, близкая к реальному времени, вам определенно нужен механизм уведомлений о недействительности кэша.

Для него есть 2 возможные модели реализации:

1.Pull Главный сервер извлекает дочерние серверы с уведомлениями типа "resourceID=34392 not more valid in your cache".Это сообщение следует отправлять при каждом обновлении данных на главном сервере.

  1. Опрос Каждый дочерний сервер запрашивает у основного сервера правильность элемента кэша непосредственно перед его отправкой пользователю.Конечно, в этом случае главный сервер должен обновлять список объектов в течение последнего периода существования кэша и очень быстро отвечать на "If-object-was-updated" запросов.

Как вы видите в обоих случаях, ваш главныйСервер должен инициировать событие при каждом изменении данных.В первом случае это событие будет передано через «шину уведомлений» на дочерний сервер, а во втором случае это событие будет сохранено в списке recently-updated-objects.Таким образом, обе опции нуждаются в некоторых изменениях кода на главном сервере.

На мой взгляд, вторая опция гораздо проще реализовать совместно, но она очень зависит от используемого программного стека.

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