Уведомления

Уведомления в кэше роли Azure

Обновлено: Август 2015 г.

ImportantВажно!
Во всех новых разработках рекомендуется использовать кэш Redis для Azure. Текущую документацию и руководства по выбору предложения службы кэша Azure см. в статье Какое предложение службы кэша Azure подходит мне лучше всего?

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

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

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

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

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

  • ClearRegion: при очистке области в кэше.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Узлы кэша могут содержать в памяти только определенное количество операций кэша. Возможно, некоторые клиенты кэша не успеют получить уведомления до того, как они будут усечены в очередях узлов кэша. Клиенты кэша могут также пропускать уведомления при потере данных в связи со сбоем сервера кэша, в то время как остальной кластер работает. В этих случаях клиент кэша может обнаружить, что он пропустил некоторые уведомления кэша, с помощью уведомлений об ошибках. Приложение может добавить обратный вызов для получения уведомлений об ошибках с помощью метода AddFailureNotificationCallback. Дополнительные сведения см. в разделе How to: Add a Failure Notification Callback.

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

noteПримечание
Уведомления кэша сообщают только об относящихся к данным изменениях в областях и элементах кэша в кластере; они не сообщают о событиях самого кластера.

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

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

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

См. также

Показ:
© 2016 Microsoft