Окончание срока действия и вытеснение (кэширование в Windows Server AppFabric)
В Windows Server AppFabric кэшированные объекты не хранятся в памяти постоянно. Кроме того что кэшированные объекты можно удалить из кэша явным образом с помощью метода Remove, их срок действия может истечь либо они могут быть вытеснены кластером кэша.
Срок действия
Срок действия кэша позволяет кластеру кэша автоматически удалять кэшированные объекты из кэша. При использовании методов Put или Add для помещаемого в кэш объекта можно задать необязательное значение тайм-аута, которое определяет срок его хранения в кэше. Если значение тайм-аута объекта не было указано в момент помещения объекта в кэш, срок хранения объекта в кэше будет определяться значениями, заданными в параметрах конфигурации кластера для именованного кэша.
Если кэшированные объекты блокируются в целях параллельной обработки, они не удаляются из кэша даже после истечения срока действия. Сразу после разблокирования объекты с истекшим сроком действия немедленно удаляются из кэша.
Для предотвращения немедленного удаления объектов с истекшим сроком действия при их разблокировании метод Unlock также поддерживает продление срока действия кэшированных объектов. Дополнительные сведения о поддерживаемых моделях и методах параллелизма см. в разделах Модели параллелизма (кэширование в Windows Server AppFabric) иМетоды параллелизма (кэширование в Windows Server AppFabric).
Недействительность локального кэша
Есть два дополнительных способа сделать локальный кэш недействительным: на основе тайм-аута и на основе уведомлений. Пример программного включения локального кэша см. в разделе Включение локального кэша Windows Server AppFabric. Пример использования файла конфигурации приложения для включения локального кэша см. в разделе Включение локального кэша Windows Server AppFabric (XML).
Совет
После того как объекты будут сохранены в локальном кэше, приложение будет использовать эти объекты, пока они не станут недействительными, вне зависимости от того, были ли они обновлены другим клиентом кластера кэша. По этой причине локальный кэш лучше использовать для хранения редко изменяемых данных.
Недействительность на основе тайм-аута
После загрузки объекта в локальный кэш он будет храниться там до достижения тайм-аута объекта, значение которого указано в параметрах конфигурации клиента кэша. После наступления тайм-аута объект становится недействительным и может быть заново помещен в кэш при следующем обращении к нему.
Недействительность на основе уведомлений
Если клиент кэша включил локальный кэш, можно также использовать уведомления кэша для того, чтобы делать недействительными помещенные в локальный кэш объекты. Сокращая по необходимости срок действия этих объектов, можно снизить вероятность использования устаревших данных приложением.
При использовании уведомлений кэша приложение регулярно обращается к кластеру кэша для проверки наличия новых уведомлений. Интервал таких обращений, называемый интервалом опроса, по умолчанию равен 300 секундам. Интервал опроса задается в секундах в параметрах конфигурации приложения. Обратите внимание, что при использовании недействительности на основе уведомлений, тайм-ауты по-прежнему применяются к объектам в локальном кэше. Таким образом, недействительность на основе уведомлений дополняет недействительность на основе тайм-аута.
Предупреждение
Чтобы приложение могло использовать уведомления, необходимо включить их для именованного кэша. Используйте параметр NotificationsEnabled
с командами New-Cache
или Set-CacheConfig
. Дополнительные сведения см. в разделе Использование Windows PowerShell для управления компонентами кэширования в Windows Server AppFabric.
Вытеснение
Для поддержания достаточного объема памяти, доступного для кэша на каждом узле кэша, AppFabric использует алгоритм вытеснения LRU (вытеснение наиболее давно использовавшихся объектов). Пороговые значения, называемые пределами, используются для обеспечения равномерного распределения памяти между всеми узлами кэша в кластере.
Когда потребление памяти службой кэша на сервере кэша превышает нижний предел, AppFabric начинает вытеснять объекты, срок действия которых истек.
Если потребление памяти превышает верхний предел, объекты вытесняются из памяти вне зависимости от того, истек их срок действия или нет, пока потребление памяти не достигнет нижнего предела. Впоследствии кэшированные объекты могут перенаправляться на другие узлы для обеспечения оптимального распределения памяти.
Настройка параметров окончания срока действия и вытеснения
Параметры окончания срока действия и вытеснения настраиваются на уровне именованного кэша в параметрах конфигурации кластера. Для настройки этих параметров на уровне кэша может использоваться средство администрирования кэша на основе Windows PowerShell. Дополнительные сведения см. в разделе Использование Windows PowerShell для управления компонентами кэширования в Windows Server AppFabric.
Кроме того, для переопределения параметров кэша по умолчанию могут использоваться следующие методы.
Методы Add и Put представляют собой методы перегрузки, позволяющие указывать значение тайм-аута только для объектов, добавляемых в кэш.
Методы PutAndUnlock и Unlock представляют собой методы перегрузки, позволяющие продлевать срок действия объекта после снятия блокировки.
Метод ResetObjectTimeout позволяет явным образом продлевать время жизни объекта, переопределяя параметры срока действия на уровне кэша.
Вне зависимости от настройки параметров срока действия или вытеснения, при перезапуске кластера кэша все объекты в кэше очищаются. В коде приложения должна быть предусмотрена перезагрузка кэша из источника данных, если данные отсутствуют в кэше. Такой способ часто называют шаблоном программирования отдельно от кэша.
См. также
Основные понятия
Схема физической архитектуры кэширования Windows Server AppFabric
Схема логической архитектуры кэширования Windows Server AppFabric
Клиенты кэша и локальный кэш (кэширование в Windows Server AppFabric)
Включение локального кэша Windows Server AppFabric
Включение локального кэша Windows Server AppFabric (XML)
Разработка клиента кэша (кэширование в Windows Server AppFabric)
2011-12-05