Compartir a través de


Entender y administrar conexiones para el Servicio de caché administrado de Azure

Importante

Microsoft recomienda todos los nuevos desarrollos que usen Azure Redis Cache. Para obtener documentación actual e instrucciones sobre cómo elegir una oferta de Azure Cache, consulte ¿Qué oferta de Azure Cache es adecuada para mí?

Las aplicaciones que usan Managed Cache Service deben comprender cómo se abren las conexiones a la caché de destino.

Aunque Managed Cache Service no tiene cuotas para las conexiones, las conexiones son un recurso importante, ya que pueden ser un recurso costoso para crear. El uso compartido de las conexiones puede mejorar el rendimiento.

En este tema se analizan las áreas siguientes relacionadas con la administración de conexiones:

  • Agrupar conexiones

  • Configuración mediante programación de una agrupación de conexiones

  • Recomendaciones

Agrupar conexiones

La forma en que se administran las conexiones depende de si la agrupación de conexiones está habilitada o deshabilitada. En las secciones siguientes se describen los dos escenarios posibles, así como su impacto en la administración de conexiones.

Agrupación de conexiones habilitada

A partir de la versión de noviembre de 2011 del SDK de Azure, todas las ofertas de caché basadas en AppFabric de Microsoft Azure Cache tienen la capacidad de agrupar conexiones. Cuando la agrupación de conexiones está configurada, se comparte el mismo grupo de conexiones para una única instancia de la aplicación cliente. El número de conexiones compartidas viene determinado por el valor de configuración maxConnectionsToServer , que tiene como valor predeterminado el número de núcleos de procesador en la máquina cliente. En el ejemplo siguiente se muestra el modo en que puede modificarse este valor para establecerlo en 2 en un archivo de configuración de la aplicación.

<dataCacheClient maxConnectionsToServer="2">

Cada instancia de AppDomian comparte las conexiones especificadas por maxConnectionsToServer independientemente del número de objetos DataCacheFactory o DataCache creados. Por lo tanto, la fórmula del número total de conexiones al usar la agrupación de conexiones es el valor maxConnectionsToServer multiplicado por el número de instancias en ejecución de ese rol de Azure.

El ejemplo anterior supone que se usa una configuración de cliente de caché única. Tenga en cuenta el siguiente archivo de configuración que contiene dos secciones dataCacheClient con nombre.

<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>

En este ejemplo, la aplicación podría crear varias instancias de DataCacheFactory o DataCache de las que algunos usan la default configuración y algunas usan la localcache configuración. La agrupación de conexiones está relacionada con una única configuración. Por lo tanto, aunque ambas configuraciones apunten a la misma caché, el número total de conexiones posibles para esta caché son la suma de sus valores maxConnectionsToServer , que es 5.

Nota

Al usar el archivo de configuración de la aplicación, la agrupación de conexiones está habilitada de forma predeterminada en el SDK de Azure más reciente. Si configura mediante programación DataCacheFactoryConfiguration, es posible que la agrupación de conexiones no esté habilitada de forma predeterminada y algunas acciones deshabilitan la agrupación de conexiones. Consulte la sección Configuración mediante programación de la agrupación de conexiones en este tema.

Agrupación de conexiones deshabilitada

Cuando la agrupación de conexiones está deshabilitada, cada objeto DataCacheFactory usa una conexión. Es importante inicializar y almacenar las instancias de DataCacheFactory para controlar tanto el número de conexiones abiertas como para lograr el mejor rendimiento.

Si no se usa la agrupación de conexiones, el número de conexiones establecidas entre la caché y un cliente se define con la siguiente fórmula:

[DataCacheFactory instances] * [MaxConnectionsToServer setting] 

De forma predeterminada , maxConnectionsToServer es el número de núcleos de procesador en el equipo cliente. Puede aumentar esta configuración para mejorar el rendimiento si comparte un objeto DataCacheFactory entre subprocesos. Por ejemplo, si maxConnectionsToServer es 2, cada objeto DataCacheFactory usa dos conexiones.

En este escenario, varios objetos DataCacheFactory activos usan cada uno el número de conexiones especificadas por maxConnectionsToServer. Por ejemplo, si este valor es 2 y hay dos instancias de DataCacheFactory , se usan un total de cuatro conexiones.

Anteriormente, este comportamiento era el predeterminado. Con el SDK más reciente, la agrupación de conexiones se habilita de forma predeterminada si se usa un archivo de configuración de la aplicación. Para deshabilitar la agrupación de conexiones en el archivo de configuración, establezca el atributo falseconnectionPool en . El archivo de configuración siguiente muestra esta configuración.

<dataCacheClient connectionPool="false">

La agrupación de conexiones no es el valor predeterminado si se configura el cliente de caché mediante programación. Para obtener más información sobre la configuración mediante programación y la agrupación de conexiones, consulte la sección siguiente Configuración mediante programación de la agrupación de conexiones.

Configuración mediante programación de una agrupación de conexiones

Al configurar mediante programación un cliente de caché sin usar ninguna configuración de archivo de configuración de Managed Cache Service, la agrupación de conexiones no está habilitada de forma predeterminada. Deben tomarse medidas especiales para habilitar la agrupación de conexiones mediante código.

  1. Cree un objeto DataCacheFactoryConfiguration . Configure las opciones estándar, como Servidores y SecurityProperties.

  2. Llame al método estático DataCacheFactoryConfiguration. CreateNamedConfiguration, pasando un nuevo nombre de configuración, el objeto DataCacheFactoryConfiguration creado anteriormente y una marca booleana que indica si la agrupación de conexiones está habilitada(true) o deshabilitada(false).

  3. Cree un nuevo objeto DataCacheFactoryConfiguration y pase el constructor el nuevo nombre de la configuración que tiene habilitada la agrupación de conexiones. Este nombre es el especificado en el paso anterior.

  4. A continuación, cree un objeto DataCacheFactory que use esa configuración.

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);

Tenga en cuenta que, al crear un objeto DataCacheFactoryConfiguration , también es posible inicializar la configuración a partir de los valores de un archivo de configuración de la aplicación. Este método consiste en combinar distintos enfoques, usando tanto el archivo de configuración como el código para configurar el cliente de caché. Si el constructor está vacío, se lee la sección de configuración "predeterminada". Si se pasa una cadena al constructor, se aplica esa sección dataCacheClient con nombre. En este escenario, puede habilitar la agrupación de connnection desde el archivo de configuración en lugar de llamar a la llamada CreateNamedConfiguration para hacerlo.

Advertencia

Al inicializar DataCacheFactoryConfiguration desde un archivo de configuración de aplicación, los cambios realizados en esa configuración podrían provocar la deshabilitación de la agrupación de conexiones. Estos valores incluyen las propiedades de servidor, seguridad, compresión, maxConnectionsToServer y transporte. En ese caso, tendría que usar el método CreateNamedConfiguration como se ha descrito anteriormente para crear una nueva configuración basada en la configuración modificada con la agrupación de conexiones habilitada.

Recomendaciones

Con Managed Cache Service, no hay restricciones de cuota en las conexiones que no sean los recursos físicos subyacentes de los clientes y servidores. Sin embargo, aún es recomendable usar la agrupación de conexiones para volver a usar y administrar conexiones con mayor facilidad para mejorar el rendimiento.

Si la agrupación de conexiones está habilitada, debe analizar si el valor predeterminado maxConnectionsToServer de 1 es adecuado para la aplicación. Si usa objetos DataCacheFactory en varios subprocesos, es posible que pueda lograr un mejor rendimiento aumentando el número de conexiones del grupo a más de una. Por supuesto, deberá calcularse el modo en que esto puede afectar a los requisitos de conexiones totales basándose en el número de instancias de rol que ejecutan dicho código.

Como se ha indicado, cada configuración con un nombre distinto tiene su propia agrupación de conexiones. Es importante ser consciente de ello al calcular las conexiones totales a la caché.

Es importante reconocer la diferencia entre el comportamiento de una agrupación de conexiones predeterminada al usar los valores del archivo de configuración de la aplicación y la configuración mediante programación del cliente de caché. Estas diferencias se han descrito en secciones anteriores de este tema. Dada la complejidad implícita de la configuración mediante programación, resulta más sencillo agrupar las configuraciones configurando la caché mediante archivos de configuración (app.config o web.config).

Con versiones anteriores del SDK o cuando la agrupación de conexiones está deshabilitada manualmente, debe crear, almacenar y volver a usar una cantidad mínima de objetos DataCacheFactory en el código. De este modo se mejora el rendimiento, puesto que no es imprescindible establecer nuevas conexiones para cada operación de caché. También se mejora la administración de las distintas conexiones. De nuevo, si comparte los mismos objetos DataCacheFactory entre subprocesos, podría ver un aumento del rendimiento aumentando el valor maxConnectionsToServer . Cuando la agrupación de conexiones está deshabilitada, debe supervisar cuidadosamente el número de objetos DataCacheFactory activos, la configuración maxConnectionsToServer y el número de instancias de rol. Todos estos factores se combinan para determinar el número de conexiones activas empleadas.