Уведомления кэша (кэширование в Windows Server AppFabric)
Windows Server AppFabric поддерживает уведомления кэша, позволяющие приложениям получать асинхронные уведомления при выполнении различных операций кэша в кластере кэша. Уведомления кэша также предоставляют возможность использования автоматической недействительности локально кэшированных объектов. Дополнительные сведения см. в разделе Окончание срока действия и вытеснение (кэширование в Windows Server AppFabric).
Для получения асинхронных уведомлений кэша следует добавить обратный вызов уведомления кэша в приложение. При добавлении обратного вызова определяются типы операций кэша, вызывающих уведомление кэша, и указывается метод приложения, вызываемый при выполнении указанных операций. В этом разделе описываются подробности данного процесса.
Примечание
Для использования уведомлений кэша следует включить уведомления кэша для именованного кэша с помощью команды New-Cache
или Set-CacheConfig
в Windows PowerShell с помощью средства администрирования кэша на основе Windows PowerShell.
Активация уведомлений кэша
Как показано на следующем рисунке, активация уведомлений кэша может происходить как при изменении областей, так и при изменении кэшированных объектов (называемых элементами кэша).
Эти операции кэша определяются членами класса DataCacheOperations.
Операции над областями
Приложения могут получать уведомления кэша при выполнении следующих операций кэша над областями:
CreateRegion: при создании области в кэша.
ClearRegion: при очистке области в кэше.
RemoveRegion: при удалении области из кэша.
Операции над элементами
Приложения могут получать уведомления кэша при выполнении следующих операций кэша над кэшированными объектами (называемыми элементами кэша).
AddItem: при добавлении элемента в кэш.
ReplaceItem: при замене элемента в кэше.
RemoveItem: при удалении элемента из кэша.
Примечание
Сами по себе эти операции над элементами не зависят от областей. Можно ограничить область уведомлений для обратного вызова определенной областью. Эта возможность рассматривается в разделе «Область уведомлений» данного документа.
Область уведомлений
В зависимости от конкретного действия и потребностей приложения уделять внимание событиям во всех объектах и областях кэша в целом может быть необязательно. AppFabric позволяет сузить область уведомления с уровня кэша до уровня области или элемента. Как показано на следующей схеме, выбираемая при добавлении обратного вызова область уведомления существенно влияет на получаемые уведомления кэша.
На уровне кэша приложение может получать уведомления о всех операциях кэша для всех объектов и областей в нем. На уровне области приложение будет получать только уведомления об операциях кэша для конкретной области и объектов в ней. На уровне элемента приложение будет получать уведомления только об операциях кэша, относящихся к конкретному объекту.
Чтобы задать область уведомления, выберите один из следующих трех методов для добавления обратного вызова уведомления кэша:
AddCacheLevelCallback: если требуется получать уведомления об операциях кэша для областей и элементов, выполняемых над всеми областями и элементами.
AddRegionLevelCallback: если требуется получать уведомления об операциях кэша для областей и элементов, выполняемых над отдельной областью.
AddItemLevelCallback: если требуется получать уведомления об операциях кэша для элементов, выполняемых над отдельным элементом.
Порядок уведомления
Порядок уведомлений, получаемых клиентом кэша, соблюдается в контексте одной области. Например, предположим, что создана область с именем RegionA
. Поскольку все данные, помещенные в область кэша, ограничены одной и той же областью, все операции кэша, относящиеся к RegionA
(в области уведомлений на уровне области кэша) поступают к клиенту кэша поочередно в соответствующем относительном порядке. Операции кэша на уровне области и элемента, происходящие в других узлах кэша, необязательно будут поступать в правильном порядке относительно операций, выполняемых в RegionA
.
В интересах производительности соблюдение относительного порядка уведомлений из нескольких областей или объектов, относящихся к разным областям, не гарантируется.
Сведения о версии для событий элементов в форме объекта DataCacheItemVersion передаются методу, вызванному уведомлением кэша, в параметре version
. Этот объект DataCacheItemVersion соответствует версии объекта, вызвавшего событие элемента. С помощью метода CompareTo можно сравнить версии, чтобы определить, какие операции кэша были выполнены раньше.
Примечание
Сравнение версий имеет смысл только при сравнении версий одного и того же элемента, заданного с одним и тем же ключом. Нельзя определить порядок, сравнивая версии с разными ключами; метод CompareTo может вернуть результат, но он будет действителен только для версий с одним и тем же ключом.
Интервал опроса
При использовании уведомлений кэша приложение проверяет наличие новых уведомлений в кластере кэша с регулярным интервалом. Этот интервал, называемый интервалом опроса, по умолчанию составляет 300 секунд.
Интервал опроса задается в секундах в параметрах конфигурации приложения. Чтобы задать интервал, можно использовать атрибут pollInterval
элемента clientNotifications
в файле конфигурации приложения. Можно также указать определенный интервал опроса программными средствами с помощью свойства NotificationProperties
объекта DataCacheFactoryConfiguration.
Потеря уведомлений
Узлы кэша могут хранить в памяти лишь определенное количество операций кэша. В зависимости от загрузки системы некоторые клиенты кэша могут не получить уведомления до их усечения в очередях на узлах кэша. Клиенты кэша также могут пропускать уведомления при утере данных в результате сбоя сервера кэша, хотя остальная часть кластера может продолжать работу. В этих случаях клиент кэша может обнаружить, что он пропустил некоторые уведомления кэша, с помощью уведомлений об ошибках. Приложение может добавить обратный вызов для получения уведомлений об ошибках с помощью метода AddFailureNotificationCallback. Дополнительные сведения см. в разделе Добавление обратного вызова уведомления об ошибках (кэширование в Windows Server AppFabric)
Утрата кластера кэша
Существует важное различие между утерей уведомлений и утратой кластера кэша. Если приложение потеряет несколько уведомлений, оно может узнать об этом с помощью уведомлений об ошибках. Если же весь кластер кэша будет остановлен, перезапущен или утерян по иным причинам, уведомлений не будет. Вместо этого при следующей попытке обращения к кэшу клиент кэша, неспособный связаться с кластером, породит исключение.
Примечание
Уведомления кэша служат только для сообщения об изменении данных в областях и элементах кластера кэша; они не используются для уведомления о событиях самого кластера.
Включение уведомлений кэша
Уведомления кэша настраиваются на уровне кэша в параметрах конфигурации кластера. В качестве свойства кэша их можно включить при создании кэша с помощью команды New-Cache
и параметра NotificationsEnabled
. По умолчанию уведомления кэша отключены при создании нового кэша. Дополнительные сведения об изменении параметров конфигурации кэша см. в разделе Изменение параметров конфигурации кэша с помощью Windows PowerShell (кэширование в Windows Server AppFabric).
Параметры конфигурации приложения не требуются для добавления обратного вызова с целью получения уведомлений кэша. Можно использовать параметры конфигурации приложения для задания конкретного интервала опроса. По умолчанию интервал опроса составляет 300 секунд. Если нужно задать другое значение, используйте элемент clientNotification
В XML-файле конфигурации приложения или задайте интервал программными средствами через свойство NotificationsProperties
объекта DataCacheFactoryConfiguration.
Использование уведомлений кэша
При включении уведомлений кэша имеются три задачи, относящиеся к использованию уведомлений кэша: добавление обратных вызовов для уведомлений кэша, добавление обратных вызовов для уведомлений об ошибках и удаление обратных вызовов для уведомлений кэша. Процедуры выполнения всех этих задач описаны в разделе Использование уведомлений кэша (кэширование в Windows Server AppFabric).
См. также
Основные понятия
Схема физической архитектуры кэширования Windows Server AppFabric
Схема логической архитектуры кэширования Windows Server AppFabric
Разработка клиента кэша (кэширование в Windows Server AppFabric)
2011-12-05