Уведомления для управляемой службы кэша Azure

Важно!

Корпорация Майкрософт рекомендует всем новым разработкам использовать кэш Redis для Azure. Текущую документацию и рекомендации по выбору предложения кэша Azure см. в статье о том, какое предложение кэша Azure подходит для меня?

Microsoft Azure Кэш предлагает уведомления кэша, позволяющие приложениям получать асинхронные уведомления при возникновении различных операций кэша в именованном кэше. Уведомления кэша также обеспечивают автоматическое аннулирование локально кэшированных объектов.

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

Примечание

Уведомления доступны для размеров кэша Standard и Premium, но не доступны для размера кэша Basic. Дополнительные сведения см. в статье "Предложения кэша для azure управляемая служба кэша".

Активация уведомлений кэша

Эти операции кэша определяются членами класса DataCacheOperations .

Операции над областями

Приложения могут получать уведомления кэша при выполнении следующих операций кэша над областями:

  • CreateRegion: при создании региона в кэше.

  • ClearRegion: если регион очищается в кэше.

  • RemoveRegion: при удалении региона из кэша.

Операции над элементами

Приложения могут получать уведомления кэша при выполнении следующих операций кэша над кэшированными объектами (называемыми элементами кэша).

  • AddItem: при добавлении элемента в кэш.

  • ReplaceItem: при замене элемента в кэше.

  • RemoveItem: при удалении элемента из кэша.

Примечание

Сами по себе эти операции над элементами не зависят от областей. Можно ограничить область уведомлений для обратного вызова определенной областью. Эта возможность рассматривается в разделе "Область уведомлений" данного документа.

Область уведомлений

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

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

Чтобы задать область уведомления, выберите один из следующих трех методов для добавления обратного вызова уведомления кэша:

  • AddCacheLevelCallback: если требуется получать уведомления об операциях кэша на основе региона и элементов во всех регионах и элементах.

  • AddRegionLevelCallback: если вы хотите получать уведомления об операциях кэша на основе региона и элементов, выполняемых в одном конкретном регионе.

  • AddItemLevelCallback: если требуется получать уведомления об операциях кэша на основе элементов, выполняемых на одном конкретном элементе.

Порядок уведомления

Порядок уведомлений, получаемых клиентом кэша, гарантирован в контексте отдельной области. Например, предположим, что создана область с именем RegionA. Поскольку все данные, помещенные в область кэша, ограничены одной и той же областью, все операции кэша, относящиеся к RegionA (в области уведомлений на уровне области кэша), поступают к клиенту кэша поочередно в соответствующем относительном порядке. Операции кэша на уровне области и элемента, происходящие в других узлах кэша, необязательно будут поступать в правильном порядке относительно операций, выполняемых в RegionA.

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

Сведения о версии событий элемента в виде объекта DataCacheItemVersion передаются методу, вызываемого уведомлением кэша с параметром version . Этот объект DataCacheItemVersion соответствует версии объекта, вызвавшей событие элемента. С помощью метода CompareTo можно сравнить версии, чтобы определить, какие операции кэша были первыми.

Примечание

Сравнение версий имеет смысл только при сравнении версий одного и того же элемента, заданного с одним и тем же ключом. Невозможно вывести порядок, сравнивая версии из разных ключей; Метод CompareTo может возвращать результат, но результат действителен только для версий одного ключа.

Интервал опроса

При использовании уведомлений кэша приложение проверяет наличие новых уведомлений в кэше с регулярным интервалом. Этот интервал, называемый интервалом опроса, по умолчанию составляет 300 секунд. Приложения, часто записывающие данные, могут уменьшить это значение, но для редко меняющегося кэша лучше подойдет более крупный интервал. Значение по умолчанию в 300 секунд подходит для большинства случаев.

Интервал опроса задается в секундах в параметрах конфигурации приложения. Чтобы задать интервал, можно использовать атрибут pollInterval элемента clientNotifications в файле конфигурации приложения Можно также указать определенный интервал опроса программным способом со NotificationProperties свойством объекта DataCacheFactoryConfiguration .

Потеря уведомлений

Microsoft Azure кэш может содержать только определенный объем операций кэша в памяти. Некоторые клиенты кэша могут не получить уведомления до их усечения в очередях уведомлений. Клиенты кэша также могут пропускать уведомления при утере данных в результате сбоя кэша. В этих случаях клиент кэша может обнаружить, что он пропустил некоторые уведомления кэша, с помощью уведомлений об ошибках. Приложение может добавить обратный вызов для получения уведомлений о сбоях с помощью метода AddFailureNotificationCallback . Дополнительные сведения см. в разделе "Практическое руководство. Добавление обратного вызова уведомления об ошибке"

Утрата кэша

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

Примечание

Уведомления кэша служат только для сообщения об изменении данных в областях и элементах кэша; они не используются для уведомления о событиях самого кэша.

Включение уведомлений кэша

Уведомления настраиваются на уровне именованных кэшей на портале управления, на вкладке "Настройка". По умолчанию для уведомлений задан параметр Отключено.

Cache Notifications for Windows Azure Cache Servic

Параметры конфигурации приложения не требуются для добавления обратного вызова с целью получения уведомлений кэша. Можно использовать параметры конфигурации приложения для задания конкретного интервала опроса. По умолчанию интервал опроса составляет 300 секунд. Если требуется другая длительность, используйте clientNotification элемент в файле конфигурации приложения на основе XML или укажите требуемый интервал программным способом со NotificationsProperties свойством объекта DataCacheFactoryConfiguration .

Использование уведомлений кэша

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

См. также

Другие ресурсы

Функции управляемой службы кэша Azure