Поделиться через


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

Важно!

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

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

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

Данная тема охватывает следующие области, относящиеся к управлению подключением:

  • Объединение подключений в пул

  • Программная настройка пула подключений

  • Рекомендации

Объединение подключений в пул

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

Пулы подключений включены

Начиная с выпуска пакета AZURE SDK за ноябрь 2011 г. все предложения кэша на основе AppFabric в кэше Microsoft Azure могут подключаться к пулу. При настройке пула подключений к одному пулу подключений открывается доступ для экземпляров одного клиентского приложения. Количество общих подключений определяется параметром конфигурации maxConnectionsToServer , который по умолчанию соответствует количеству ядер процессора на клиентском компьютере. Следующий пример демонстрирует, как изменить этот параметр на 2 в файле конфигурации приложения.

<dataCacheClient maxConnectionsToServer="2">

Каждый экземпляр AppDomian использует соединения, заданные maxConnectionsToServer независимо от количества созданных объектов DataCacheFactory или DataCache . Таким образом, формула для общего числа подключений при использовании пула подключений — это значение maxConnectionsToServer , умноженное на число запущенных экземпляров этой роли Azure.

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

<dataCacheClients>
    <dataCacheClient name="default" maxConnectionsToServer="2">
      <!-- Other settings omitted for space -->
      <autoDiscover isEnabled="true" identifier="mycache.cache.windows.net" />
    </dataCacheClient>
    <dataCacheClient name="localcache" maxConnectionsToServer="3">
      <!-- Other settings omitted for space -->
      <autoDiscover isEnabled="true" identifier="mycache.cache.windows.net" />
    </dataCacheClient>
  </dataCacheClients>

В этом примере приложение может создать несколько экземпляров DataCacheFactory или DataCache , в которых некоторые используют default конфигурацию и используют конфигурацию localcache . Пул подключений относится к одной конфигурации. Таким образом, несмотря на то, что обе конфигурации указывают на один кэш, общее количество подключений к этому кэшу — это сумма значений maxConnectionsToServer , то есть 5.

Примечание

При использовании файла конфигурации приложения пул подключений включен по умолчанию в последнем пакете SDK Azure. Если вы программно настраиваете DataCacheFactoryConfiguration, пул подключений может быть отключен по умолчанию, а некоторые действия отключают пул подключений. См. раздел "Программная настройка пула подключений" в этом разделе.

Пулы подключений выключены

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

Если вы не используете пул подключений, число подключений между кэшем и клиентом определяется по следующей формуле:

[DataCacheFactory instances] * [MaxConnectionsToServer setting] 

По умолчанию maxConnectionsToServer — это количество ядер процессора на клиентском компьютере. Этот параметр можно увеличить, чтобы повысить производительность, если вы предоставляете общий доступ к объекту DataCacheFactory в потоках. Например, если задан параметр 2maxConnectionsToServer, каждый объект DataCacheFactory использует два соединения.

В этом сценарии несколько активных объектов DataCacheFactory используют количество подключений, указанных maxConnectionsToServer. Например, если это значение и 2 есть два экземпляра DataCacheFactory , используется в общей сложности четыре подключения.

В прошлом данное поведение являлось значением по умолчанию. С последней версией SDK пул подключений включен по умолчанию, если вы используете файл конфигурации приложения. Чтобы отключить пул подключений в файле конфигурации, задайте для атрибута connectionPool значение false. Следующий файл конфигурации демонстрирует данный вариант.

<dataCacheClient connectionPool="false">

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

Программная настройка пула подключений

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

  1. Создайте объект DataCacheFactoryConfiguration . Настройте стандартные параметры, такие как серверы и securityProperties.

  2. Вызовите статический метод DataCacheFactoryConfiguration. CreateNamedConfiguration, передав новое имя конфигурации, ранее созданный объект DataCacheFactoryConfiguration и логический флаг, указывающий, включена ли пул соединений (true) или отключена(false).

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

  4. Затем создайте объект DataCacheFactory , который использует такую конфигурацию.

DataCacheFactoryConfiguration Config = new DataCacheFactoryConfiguration();

// Configure the DataCacheFactoryConfiguration with appropriate settings for your cache here:
// ...

// Set the MaxConnectionsToServer to control the size of the connection pool
Config.MaxConnectionsToServer = 3;

// Create a named configuration from this configuration and enable connection pooling
DataCacheFactoryConfiguration.CreateNamedConfiguration("MyConfigWithConnectionPooling", Config, true);

// Create a DataCacheFactoryConfiguration using the new named configuration that enabled connection pooling
DataCacheFactoryConfiguration ConfigWithPooling = new DataCacheFactoryConfiguration("MyConfigWithConnectionPooling");

// Use this new named configuration in the call to DataCacheFactory
DataCacheFactory factory = new DataCacheFactory(ConfigWithPooling);

Обратите внимание, что при создании объекта DataCacheFactoryConfiguration также можно инициализировать конфигурацию из параметров в файле конфигурации приложения. Это совокупность подходов, которые используют как файл конфигурации, так и код для настройки клиента кэша. Если конструктор пуст, раздел конфигурации "по умолчанию" будет прочитан. Если строка передается конструктору, применяется этот именованный раздел dataCacheClient . В этом сценарии можно включить пул connnection из файла конфигурации, а не вызвать вызов CreateNamedConfiguration для этого.

Предупреждение

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

Рекомендации

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

Если пул подключений включен, необходимо проанализировать, подходит ли значение 1maxConnectionsToServer по умолчанию для приложения. При использовании объектов DataCacheFactory в нескольких потоках можно повысить производительность, увеличив количество подключений в пуле до нескольких потоков. Конечно, вам затем следует посчитать, как это влияет на общие требования к подключениям, основанных на числе экземпляров ролей, которые будут запускать этот код.

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

Важно понимать разницу в поведении пула подключений по умолчанию при использовании параметров файла конфигурации приложения по сравнению с программной настройкой вашего клиента кэша. Данные отличия описаны в предыдущем разделе данной темы. В связи со сложностью программной настройки проще будет использовать пул подключений, настраивая ваш кэш посредством файлов конфигурации (app.config или web.config).

В предыдущих версиях пакета SDK или при отключении пула подключений вручную необходимо создавать, хранить и повторно использовать минимальный объем объектов DataCacheFactory в коде. Это улучшает производительность в связи с отсутствием необходимости устанавливать новые подключения для каждой операции кэша. Это также помогает лучше управлять числом подключений. Опять же, если вы используете одни и те же объекты DataCacheFactory в потоках, можно увидеть увеличение производительности, увеличив значение maxConnectionsToServer . При отключении пула подключений следует тщательно отслеживать количество активных объектов DataCacheFactory , параметр maxConnectionsToServer и количество экземпляров ролей. Все эти факторы объединяются для определения количества используемых активных подключений.