Поддерживает ли кэширование выходных данных Azure AppFabric сквозные считывания или программную ошибку? - PullRequest
2 голосов
/ 08 сентября 2011

Мне интересно, поддерживается ли то, что описано в (1), поставщиками кэширования вывода, которые в настоящее время поставляются в Azure AppFabric SDK:

Обычно при сбое запроса get клиент отвечает зазагрузка недостающих данных из медленного хранилища (например, базы данных, файлового сервера или удаленного сервиса) и заполнение кеша.Это утроит количество поездок туда и обратно, необходимых для запроса, и открывает возможность для состояния гонки.При включенной поддержке Read-Through сама AppFabric выполняет вторичный вызов медленного хранения.AppFabric получает эту возможность благодаря пользовательской реализации абстрактного класса DataCacheStoreProvider.

Раздел " Что дальше " (3), по-видимому, предполагает, что это не так:

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

Мы будем оценивать эти и другие функции на предмет возможного включения в будущие выпуски Windows Azure AppFabric Caching.Тем временем мы рекомендуем вам поэкспериментировать с текущей реализацией службы кэширования и сообщить нам, как она работает для вас.

Существует ли какой-либо другой механизм для программной а) аннулирования и б) замены кэшируемойстраница, не позволяя ей естественным образом повторно обрабатывать запросы клиентов (которые потенциально могут вызвать проблемы под нагрузкой, поскольку все запросы стремятся повторно увлажнить элемент)?

Другие задокументированные различия с Windows Server (4):

Кэширование ASP.NET

Windows Azure AppFabric предоставляет как поставщика состояния сеанса, так и поставщика кэша вывода.Этот поставщик отличается от того, который поставлялся с первым выпуском Windows Server AppFabric.Это также обеспечивает дополнительные функции.В связи с этим важно внимательно следовать инструкциям по корректному изменению файла web.config для Windows Azure AppFabric.Дополнительные сведения см. В разделе Использование поставщиков кэширования ASP.NET 4 для AppFabric.

Недоступные функции кэширования

Windows Azure AppFabric поддерживает подмножество функций кэширования, доступных в Windows.Сервер AppFabric.В следующем списке описаны некоторые из этих отличий.

Уведомления

Уведомления не поддерживаются в Windows Azure AppFabric Caching.Это также означает, что вы не можете использовать уведомления для аннулирования локального кэша.В Windows Azure AppFabric локальный кеш может использовать только политику недействительности на основе тайм-аута.Дополнительные сведения о функции уведомлений в Windows Server AppFabric см. В разделе Уведомления кэша (кеширование Windows Server AppFabric).

Срок действия и выселение

По умолчанию элементы в WindowsКэш Azure AppFabric не имеет срока действия.Это означает, что когда вы превышаете ваш максимальный размер кэша, наименее недавно использованные элементы в кэше удаляются.В отличие от Windows Server AppFabric, нет способа изменить этот параметр или значение срока действия по умолчанию.Однако, если вы добавляете элементы в кэш с явным временем истечения, например, 10 минут, кеш будет учитывать это значение срока действия.Это может быть сделано с различными перегрузками методов Add и Put.Обратите внимание, что поставщики ASP.NET автоматически используют эти перегрузки для предоставления явных тайм-аутов для состояния сеанса и кэширования вывода.

Кэширование Windows Azure AppFabric не поддерживает отключение вытеснения из кэша.Под давлением памяти всегда возможно, что предметы могут быть выселены.Приложения должны быть разработаны, чтобы предвидеть, что элементыможет отсутствовать и потребовать перезагрузки в любое время.Если кеш слишком мал для требований приложения, его можно динамически увеличить с портала управления Windows Azure.

Дополнительные сведения об истечении срока действия и выселении в Windows Server AppFabric см. В разделе Истечение срока действия и выселение (Windows Server AppFabricКэширование).

Высокая доступность

Кэширование Windows Azure AppFabric не поддерживает функцию высокой доступности.Дополнительные сведения о высокой доступности в Windows Server AppFabric см. В разделе Высокая доступность (кэширование Windows Server AppFabric).

Области и теги

Кэширование Windows Azure AppFabric не поддерживает пользователейсозданные регионы или поиск по тегам.

Поддержка API

В большинстве случаев вы можете использовать те же API для написания клиентов кэша, которые используют Windows Azure AppFabric или WindowsСервер AppFabric.Есть некоторые исключения из-за различий между двумя решениями.Подробный обзор API-интерфейсов, доступных для клиентов кэширования Windows Azure AppFabric, см. В разделе Справочник по API (кэширование Windows Azure AppFabric).

Ссылки:

(1)В Windows Server AppFabric добавлена ​​поддержка чтения и обратной записи: http://www.infoq.com/news/2011/08/AppFabric-CTP

(2) Расширяемое кэширование вывода с помощью ASP.NET 4 (VS 2010 и .NET 4.0 Series): http://weblogs.asp.net/scottgu/archive/2010/01/27/extensible-output-caching-with-asp-net-4-vs-2010-and-net-4-0-series.aspx

(3) Представление службы кэширования Windows Azure AppFabric:
http://msdn.microsoft.com/en-us/magazine/gg983488.aspx

(4) Различия между локальным и облачным кэшированием:
http://msdn.microsoft.com/en-us/library/gg185678.aspx

1 Ответ

0 голосов
/ 29 июля 2012

Как указывает документ, на который вы ссылаетесь, нет способа аннулировать локальный кеш с помощью службы общего кэширования Windows Azure (ранее известной как Windows Azure AppFabric Caching).Это потому, что этот сервис не поддерживает уведомления.Если вы не используете опцию локального кэша с этой службой, вы можете аннулировать элементы кэша, явно удалив его.Это удалит его из распределенного кэша в службе, и все экземпляры, запрашивающие его, не получат ничего.

Что касается замены кэшированной страницы, я полагаю, вы могли бы сделать это, обновив кэш напрямую;однако, учитывая количество факторов, которые учитываются при удалении чего-либо из кэша, вы не сможете на 100% гарантировать, что страница в конечном итоге не выпадет из-за давления и гонка произойдет в любом случае.

Если вы хотите гораздо больше контроля над кэшем, я настоятельно рекомендую взглянуть на новый предварительный просмотр кэширования Windows Azure.Это пока в предварительном просмотре, так что вы можете не рисковать своей производственной работой, но это даст вам БОЛЬШОЙ контроль над кешем.

...