Кэширование Windows Azure
функция распределенного кэширования в памяти, разработанная для приложений Microsoft Azure. Кэширование было доступно как часть Windows Azure SDK. Службы управляемого кэша Azure и внутриролевого кэша были прекращены, и Microsoft рекомендовала перейти на Azure Redis Cache.
Архитектура
[ редактировать ]Кэширование Windows Azure позволяет облачной службе размещать кэширование в роли Windows Azure. [1] Кэш распределяется по всем запущенным экземплярам этой роли. Таким образом, объем доступной памяти в кэше определяется количеством запущенных экземпляров роли, в которой размещается кэширование, и объемом физической памяти, зарезервированной для кэширования в каждом экземпляре. [2]
Существует две топологии развертывания кэширования:
Выделенная топология
[ редактировать ]В выделенной топологии вы определяете рабочую роль, предназначенную для кэширования. Это означает, что вся доступная память рабочей роли используется для кэширования и операционных издержек.
На следующей диаграмме показано кэширование в выделенной топологии. Показанная облачная служба имеет три роли: Web1, Worker1 и Cache1. Существует два запущенных экземпляра каждой роли. В этом примере кэш распределяется по всем экземплярам выделенной роли Cache1.
Преимущество выделенной топологии заключается в масштабировании уровня кэширования независимо от любой другой роли в облачной службе. [5] Для достижения наилучшей производительности кэширования рекомендуется использовать выделенную топологию, поскольку экземпляры ролей не используют свои ресурсы совместно с другим кодом приложения и службами. [3]
Совмещенная топология
[ редактировать ]В совмещенной топологии для кэширования используется процент доступной памяти существующих веб- или рабочих ролей. [4]
На следующей диаграмме показано кэширование в совмещенной топологии. Облачный сервис имеет две роли: Web1 и Worker1. Существует два запущенных экземпляра каждой роли. В этом примере кеш распределяется по всем экземплярам роли Web1. Поскольку в этой роли также размещается веб-интерфейс облачной службы, кэш настроен на использование только определенного процента физической памяти в каждом экземпляре роли Web1.
Совместное размещение кэша — это экономичный способ использования существующей памяти для роли в облачной службе. [4]
Примеры
[ редактировать ]В следующих разделах показаны конфигурация кэширования Windows Azure и примеры кода.
Пример конфигурации
[ редактировать ]В Visual Studio Кэширование настраивается на вкладке Кэширование свойств роли, на которой размещается Кэширование. [6] Это вносит базовые изменения в файл ServiceConfiguration.cscfg. [7] Эти настройки определяют используемую топологию (выделенную или совмещенную) и количество именованных кэшей. [8] и их настройки.
Другие роли должны быть настроены на использование кэширования. [9] Один из способов сделать это — использовать пакет NuGet . Это включает в себя изменение файла web.config, чтобы он содержал правильно настроенный dataCacheClients. [10] раздел. В следующем примере раздела dataCacheClients указано, что роль, на которой размещается кэширование, называется «CacheWorker1».
<dataCacheClients>
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
</dataCacheClient>
</dataCacheClients>
Примеры кода
[ редактировать ]Обратите внимание, что примеры кода в этом разделе показаны на C# .
При размещении кэширования в ролях конструктор класса DataCache можно использовать для указания как именованного кэша, так и раздела dataCacheClient для настроек клиента кэша. В следующем коде показано, как создать именованный кэш NamedCache2 с использованием параметров из раздела dataCacheClient с именем customClient .
var cache = new DataCache("NamedCache2", "customClient");
Следующий метод показывает, как использовать объект Cache для извлечения данных из кэша. В этом примере идентификатор пользователя ( userid ) является ключом для связанного объекта информации о пользователе. Код сначала пытается получить эту информацию о пользователе из кэша, используя ключ идентификатора пользователя . Если это не удается, код извлекает информацию с помощью запроса к базе данных, а затем сохраняет возвращенные пользовательские данные в кеше. При следующем запуске того же кода информация о пользователе будет возвращена из кэша, а не из базы данных. При этом предполагается, что срок действия кэшированных данных не истек или они не были удалены.
dataType GetUserData(string userId)
{
dataType data = null;
// Attempt to retrieve the user data from the cache:
object dataObject = Cache.Get(userId);
if (dataObject != null)
data = (dataType)dataObject;
else
{
// If it doesn't exist in the cache, retrieve it from the database:
data = GetUserDataFromDatabase("SELECT * FROM users WHERE userId = @userId", userId);
// Put the returned data in the cache for future requests:
Cache.Add(userId, data);
}
return data;
}
Следующий метод показывает, как обновить данные, которые уже находятся в кеше.
void UpdateUserData(string userId, dataType data)
{
// Update the user information in the database:
result = UpdateUserDataInDatabase(userId, data);
if (result)
{
// If successfully updated, update the cache:
Cache.Put(userId, data);
}
}
Следующий вызов удаляет элемент из кэша.
Cache.Remove(userId);
Общее кэширование
[ редактировать ]Общее кэширование Windows Azure предоставляет кэширование как управляемую службу. [11] В отличие от совмещенных или выделенных топологий, кэш не размещается в ролях Windows Azure в одном развертывании облачной службы. Вместо этого кеш предоставляется как мультитенантная служба с квотами на использование. [12] Услуга разделена на уровни в диапазоне от 128 МБ до 4 ГБ. [13] Помимо емкости хранилища, каждый уровень обеспечивает увеличение возможностей процессора и сети. [13] Общее кэширование позволяет нескольким облачным службам получать доступ к одному и тому же кешу.
История
[ редактировать ]Кэширование Windows Azure основано на локальной технологии AppFabric. Первоначально он был выпущен как один из нескольких сервисов Windows Azure AppFabric, но с тех пор от обозначения AppFabric в Windows Azure отказались. Многие имена сборок, пространства имен и API идентичны в кэшировании Windows Azure и кэшировании AppFabric. [14] Первый выпуск кэширования для Windows Azure в апреле 2011 года предоставлял кэширование как управляемую службу в Windows Azure. [15] Это предложение теперь называется Shared Caching.
В октябре 2012 г. была добавлена поддержка размещения кэширования ролей в развертывании облачной службы. [16] Теперь это называется кэшированием Windows Azure.
Сопутствующие технологии кэширования
[ редактировать ]Кэширование Windows Azure связано с другими технологиями кэширования Microsoft. Эти технологии имеют схожие функции, такие как имя сборки, пространство имен и типы. [14] Однако есть некоторые различия. В таблице ниже описаны эти технологии.
Технология кэширования | Цель | Установлено | Описание |
---|---|---|---|
Кэширование AppFabric | Локально | AppFabric | Распределенный локальный кэш, использующий серверы, которые пользователь подготавливает и управляет. |
Кэширование Windows Azure | Облако | Windows Azure SDK | Кэширование распределяется по экземплярам одной роли в развертывании облачной службы Windows Azure. |
Общее кэширование Windows Azure | Облако | Windows Azure SDK | Кэширование предоставляется как мультитенантная служба для использования облачными службами Windows Azure. |
Ссылки
[ редактировать ]- ^ «Кэширование в Windows Azure» . Библиотека MSDN . Майкрософт . Проверено 12 февраля 2013 г.
- ^ «Вопросы планирования емкости для кэширования Windows Azure» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ Jump up to: а б «Кэширование Windows Azure для выделенных ролей» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ Jump up to: а б с «Кэширование Windows Azure для существующих ролей» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ «О кэшировании Windows Azure, кластере кэша» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ «Как использовать кэширование Windows Azure» . Веб-сайт Windows Azure . Майкрософт . Проверено 13 февраля 2013 г.
- ^ «Параметры конфигурации роли кэширования Windows Azure (ServiceConfiguration.cscfg)» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ «О кэшировании Windows Azure, именованных кэшах» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ «Начало разработки для кэширования Windows Azure, настройка клиентов» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ «Параметры конфигурации клиента кэширования Windows Azure (Web.config), dataCacheClients» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ Jump up to: а б «Различия между кэшированием локально и в облаке» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ «Представляем службу кэширования Windows Azure» . Журнал MSDN . Майкрософт . Проверено 13 февраля 2013 г.
- ^ «Примечания к выпуску кэширования Windows Azure (октябрь 2012 г.)» . Библиотека MSDN . Майкрософт . Проверено 13 февраля 2013 г.