Методы параллелизма
Кэш Microsoft AppFabric 1.1 для Windows Server поддерживает оптимистичную и пессимистичную модели параллелизма. В следующих разделах обсуждается соответствие методов клиента кэша этим моделям. Дополнительные сведения о параллелизме см. в разделе Модели параллелизма (кэширование в AppFabric 1.1).
Оптимистичная модель параллелизма
В оптимистичной модели параллелизма обновления кэшированных объектов не блокируются. Вместо этого клиент кэша сначала считывает версию объекта, который должен быть обновлен, затем отправляет сведения о версии вместе с обновленным объектом. Система обновляет объект только в том случае, если переданная версия совпадает с текущей версией объекта. Каждое обновление объекта изменяет номер его версии. Это препятствует переопределению при обновлении изменений других объектов.
Метод | Описание |
---|---|
Не блокируется; Get всегда выполняется успешно, если элемент существует. Если объект обновляется, метод Get не ожидает завершения обновления и возвращает текущую версию объекта. |
|
Возвращает все объекты DataCacheItem. Помимо кэшированных объектов и других сведений, таких как теги, возвращаются также сведения о версиях объектов. |
|
Может использоваться для проверки изменений кэшированного объекта на источнике данных. Чтобы снизить сетевой трафик, кэшированный объект возвращается только в том случае, если доступна более новая версия. |
|
Не имеет каких-либо перегрузок, относящихся к оптимистичному параллелизму. Метод Add или завершается успешно, или со сбоем. |
|
Поддерживает оптимистичный параллелизм, принимая сведения о версии в качестве дополнительного параметра; метод Put завершается успешно, только если заменяемый объект имеет ту же версию. |
|
Поддерживает оптимистичный параллелизм, принимая сведения о версии в качестве дополнительного параметра; метод Remove завершается успешно, только если удаляемый объект имеет ту же версию. |
Пессимистичная модель параллелизма
В пессимистичной модели параллелизма клиент явно блокирует объекты для выполнения операций. Прочие операции, запрашивающие блокировку, отклоняются (система не блокирует запросы), пока блокировки не будут сняты. При блокировке объектов возвращается дескриптор блокировки (в качестве выходного параметра). Дескриптор блокировки необходим для разблокирования объектов. Если клиент не может освободить заблокированный объект, для снятия блокировок используются периоды ожидания. Срок действия заблокированных объектов никогда не истекает, однако этот срок тут же истекает после снятия блокировки и превышения срока действия.
Примечание
Операции объединения транзакций не поддерживаются. Использующее кэш приложение несет ответственность за определение порядка блокировки и обнаружения взаимоблокировок.
Предупреждение
Заблокированные объекты в кэше могут быть заменены любым клиентом кэша с помощью метода Put. Поддерживающие кэш приложения несут ответственность за согласованное использование PutAndUnlock для элементов, использующих пессимистичную модель параллелизма.
В следующей таблице показаны методы, которые можно использовать для блокировки объекта и снятия блокировки.
Метод | Описание |
---|---|
Возвращает и блокирует объект в кэше (при его наличии). Другие вызовы метода GetAndLock для того же объекта завершаются со сбоем, пока блокировка остается действующей. Обычные вызовы метода Get не блокируются и всегда получают доступ к последней версии кэшированного объекта. |
|
Обновляет заблокированный объект и снимает блокировку. Дескриптор блокировки, полученный от GetAndLock, является обязательным параметром и должен соответствовать дескриптору блокировки, чтобы операция была успешно завершена. |
|
Явно снимает блокировку кэшированного объекта, если параметр дескриптора блокировки соответствует дескриптору заблокированного объекта. Unlock также поддерживает расширение срока действия текущего элемента, чтобы предотвратить истечение срока действия в момент снятия блокировки (если снятие блокировки произошло после истечения срока действия). |
См. также
Основные понятия
Общие сведения о классах
Основные методы кэша
Методы на основе тегов
Методы настройки
Использование основных методов кэша
Основные принципы кэширования AppFabric (кэширование в AppFabric 1.1)
2012-03-05