Exporter (0) Imprimer
Développer tout

Compréhension et gestion des connexions dans Azure Cache

Mis à jour: juillet 2010

noteRemarque
Pour obtenir des conseils sur le choix de l'offre Azure Cache appropriée pour votre application, consultez Choix de l'offre Azure Cache appropriée.

Les applications qui utilisent la Cache Microsoft Azure doivent comprendre le mode d'ouverture des connexions vers le cache cible. Cela est particulièrement important pour la Microsoft Azure Shared Caching, car chaque offre de Service Caching partagé limite différemment le nombre de connexions pouvant être ouvertes simultanément vers le même cache. Pour plus d'informations, consultez le Forum Aux Questions relatif à Azure Shared Caching.

La Cache dans le rôle dans des rôles n'inclut pas de quotas de connexions, car le cache est exécuté sur des machines virtuelles dans votre propre déploiement de . Toutefois, même dans ce scénario dédié ou colocalisé, les connexions constituent une ressource importante, car leur création peut être onéreuse. Le partage des connexions peut améliorer les performances.

Cette rubrique traite des aspects suivants liés à la gestion des connexions :

La méthode de gestion des connexions change selon que le groupement de connexions soit activé ou non. Les sections suivantes décrivent les deux scénarios possibles et leur impact sur la comptabilité des connexions.

À partir de la version du Kit de développement logiciel (SDK) de de novembre 2011, mise en cache peut grouper les connexions. Lorsque le groupement de connexions est configuré, un groupe de connexion est partagé pour une seule instance d'application. Le nombre de connexions partagées est déterminé par le paramètre de configuration maxConnectionsToServer (sa valeur par défaut est 1). L'exemple suivant montre comment définir ce paramètre sur 2 dans un fichier de configuration d'application.

  <dataCacheClient maxConnectionsToServer="2">

Chaque instance d'application partage les connexions spécifiées par maxConnectionsToServer quel que soit le nombre d'objets DataCacheFactory qui sont créés. La formule du nombre total de connexions lors de l'utilisation du groupement de connexions est donc la valeur maxConnectionsToServer multipliée par le nombre d'instances en cours d'exécution de ce rôle .

L'exemple précédent suppose l'utilisation d'une seule configuration du client de cache. Examinez le fichier de configuration de la Service Caching partagé suivant contenant deux sections dataCacheClient nommées.

<dataCacheClients>
  <dataCacheClient name="default" maxConnectionsToServer="2">
    <hosts>
      <host name="ExampleCache.cache.windows.net" cachePort="22233" />
    </hosts>
    <!-- Other Sections -->
  </dataCacheClient>

  <dataCacheClient name="SslEndpoint" maxConnectionsToServer="3">
    <hosts>
      <host name="ExampleCache.cache.windows.net" cachePort="22243" />
    </hosts>
    <!-- Other Sections -->
  </dataCacheClient>
</dataCacheClients>

Dans cet exemple, l'application peut créer plusieurs instances de DataCacheFactory dont certaines utilisent la configuration "default" et d'autres la configuration "SSlEndpoint". Le pool de connexions est lié à une seule configuration. Donc, même si les deux configurations pointent vers le même cache, ExampleCache, le nombre total de connexions possible à ce cache reste la somme de leurs valeurs maxConnectionsToServer, qui est égale à 5.

Lorsque vous utilisez la Cache dans le rôle hébergée sur des rôles , le groupement de connexions n'est pas toujours la valeur par défaut, même dans le fichier de configuration de l'application. Il s'agit d'un problème connu avec la Cache dans le rôle basée sur des rôles. Pour activer le groupement de connexions avec la Cache dans le rôle basée sur des rôles, vous devez définir useLegacyProtocol sur false de façon explicite. La section de configuration suivante montre l'utilisation de ce paramètre lorsque le rôle qui héberge la Cache dans le rôle est nommé WebRole1.

<dataCacheClients>
  <tracing sinkType="DiagnosticSink" traceLevel="Error" />
  <dataCacheClient name="default" useLegacyProtocol="false" >
    <autoDiscover isEnabled="true" identifier="WebRole1" />
  </dataCacheClient>
</dataCacheClients>

Dans cet exemple, l'utilisation de useLegacyProtocol défini sur false garantit l'utilisation du groupement de connexions. Sinon, le groupement de connexions n'est pas activé par défaut pour la Cache dans le rôle basée sur des rôles.

noteRemarque
Lors de l'utilisation du fichier de configuration d'application, le groupement de connexions est activé par défaut dans la dernière version du Kit de développement logiciel (SDK) de . Si vous configurez DataCacheFactoryConfiguration par programme, il est possible que le groupement de connexions ne soit pas activé par défaut et que certaines actions désactivent ce groupement. Consultez la section Configuration du groupement de connexions par programme de cette rubrique.

Lorsque le groupement de connexions est désactivé, chaque objet DataCacheFactory utilise une seule connexion. Il est important d'initialiser et stocker vos instances de DataCacheFactory pour contrôler le nombre de connexions ouvertes et obtenir de meilleures performances.

Si vous n'utilisez pas le regroupement de connexions, le nombre de connexions nécessaires pour un cache est défini par la formule suivante :

[DataCacheFactory instances] * [MaxConnectionsToServer setting] * [Azure role instance count]

La valeur par défaut de maxConnectionsToServer est 1. Vous pouvez augmenter ce paramètre pour améliorer les performances si vous partagez un objet DataCacheFactory entre les threads. Par exemple, si maxConnectionsToServer a la valeur 2, chaque objet DataCacheFactory utilise deux connexions.

Dans ce scénario, plusieurs objets DataCacheFactory actifs utilisent chacun le nombre de connexions spécifié par maxConnectionsToServer. Par exemple, si cette valeur est 2 et qu'il y a deux instances DataCacheFactory, le nombre total de connexions utilisées est 4. Si trois instances de ce rôle sont en cours d'exécution, le nombre total de connexions passe à 12.

Ceci était l'ancien comportement par défaut. Avec le dernier Kit de développement logiciel (SDK), le groupement de connexions est activé par défaut si vous utilisez un fichier de configuration d'application. Pour désactiver le groupement de connexions dans le fichier de configuration, définissez l'attribut connectionPool sur false. Le fichier de configuration suivant montre ce paramètre.

  <dataCacheClient connectionPool="false">

Le groupement de connexions n'est pas activé par défaut si vous configurez votre client de cache par programme. Pour plus d'informations sur la configuration par programme et le groupement de connexions, consultez la section suivante, Configuration du groupement de connexions par programme.

Lorsque vous configurez un client de cache par programme sans utiliser les paramètres du fichier de configuration de Cache, le groupement de connexions n'est pas activé par défaut. Pour activer le groupement de connexions via le code, il faut suivre une procédure spéciale.

  1. Créez un objet DataCacheFactoryConfiguration. Configurez les paramètres standard tels que Servers et SecurityProperties.

  2. Appelez la méthode statique, DataCacheFactoryConfiguration. CreateNamedConfiguration, qui transfère un nouveau nom de configuration, l'objet DataCacheFactoryConfiguration créé précédemment, ainsi qu'un indicateur booléen qui indique si le groupement de connexions est activé (true) ou désactivé (false).

  3. Créez un objet DataCacheFactoryConfiguration, qui transmet au constructeur le nouveau nom de la configuration pour laquelle le groupement de connexions est activé. Il s'agit du nom que vous avez spécifié durant l'étape précédente.

  4. Puis, créez un objet DataCacheFactory utilisant cette configuration.

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

Notez que lorsque vous créez un objet DataCacheFactoryConfiguration, il est également possible d'initialiser la configuration depuis les paramètres dans un fichier de configuration d'application. Il s'agit d'une approche combinée utilisant le fichier de configuration et le code, afin de configurer le client de cache. Si le constructeur est vide, la section de configuration « par défaut » est lue. Si une chaîne est transmise au constructeur, cette section nommée dataCacheClient est appliquée. Dans ce scénario, vous pouvez activer le groupement de connexions depuis le fichier de configuration, plutôt que d'appeler CreateNamedConfiguration pour qu'il s'en charge.

WarningAvertissement
Lors de l'initialisation de DataCacheFactoryConfiguration depuis un fichier de configuration d'application, les modifications apportées à cette configuration peuvent entraîner la désactivation du groupement de connexions. Ces paramètres incluent les propriétés « server », « security », « compression », « maxConnectionsToServer » et « transport ». Dans ce cas, vous devrez peut-être utiliser la méthode CreateNamedConfiguration, comme décrit précédemment, pour créer une configuration basée sur la configuration que vous avez modifiée en activant le groupement de connexions.

Lors de l'activation de la Cache dans le rôle dans des rôles , il n'existe aucune limitation de quota sur les connexions, à part les ressources physiques sous-jacentes des clients et serveurs. Toutefois, il est malgré tout recommandé d'utiliser un groupement de connexions pour réutiliser et gérer plus facilement les connexions afin d'améliorer les performances.

Si le groupement de connexions est activé, vous devez vérifier si la valeur par défaut maxConnectionsToServer1 convient à votre application. Si vous utilisez les objets DataCacheFactory dans plusieurs threads, vous pouvez améliorer les performances en augmentant le nombre de connexions dans le groupement. Bien sûr, vous devez ensuite calculer l'impact de cette augmentation sur le nombre total de connexions requises, en vous basant sur le nombre d'instances de rôle qui vont exécuter ce code.

Comme indiqué, chaque configuration nommée obtient son propre pool de connexions. Il est très important de comprendre ceci lorsque vous calculez le nombre total de vos connexions au cache.

Il est important de reconnaître les différences dans le comportement de groupement de connexions par défaut lors de l'utilisation des paramètres du fichier de configuration de l'application par rapport à la configuration par programme pour votre client de cache. Ces différences sont décrites dans les sections précédentes de cette rubrique. Comme la configuration par programme est complexe, il est plus facile d'utiliser le groupement de connexions en configurant votre cache à l'aide des fichiers de configuration (app.config ou web.config).

Si vous utilisez une version antérieure du Kit de développement logiciel (SDK) ou que vous avez désactivé manuellement le groupement de connexions, vous devez créer, stocker puis réutiliser une quantité minimale d'objets DataCacheFactory dans votre code. Ceci améliore les performances en vous évitant de devoir établir de nouvelles connexions pour chaque opération de cache. Cela permet également de mieux gérer le nombre de connexions. De plus, si vous partagez les mêmes objets DataCacheFactory à travers les threads, vous pouvez améliorer les performances en augmentant la valeur maxConnectionsToServer. Lorsque le groupement de connexions est désactivé, vous devez surveiller attentivement le nombre d'objets DataCacheFactory actifs, le paramètre maxConnectionsToServer et le nombre d'instances de rôle. Tous ces facteurs se combinent pour déterminer le nombre de connexions actives utilisées.

Afficher:
© 2014 Microsoft