NCache en tant que cache de second niveau NHibernate

Apprenez à utiliser NCache comme cache de second niveau pour NHibernate. NCache fournit un fournisseur de cache de deuxième niveau NHibernate que vous pouvez brancher via les modifications de web.config ou app.config. NCache a également implémenté la fonction de synchronisation de la base de données afin que vous puissiez spécifier quelles classes doivent être synchronisées avec la base de données. NCache vous permet de spécifier SqlDependency ou toute dépendance de base de données compatible OLEDB pour cela.

NCache est une solution de mise en cache distribuée d'entreprise, destinée à l'évolutivité et aux performances de votre application. Dans le didacticiel d'aujourd'hui, nous allons voir comment nous pouvons faire évoluer les applications NHibernate à l'aide d'un fournisseur de cache de niveau 2 de NCache.

Limitations avec NHibernate L1 Cache

NHibernate est un excellent outil ORM pour votre application et il simplifie vos normes de codage entre différentes équipes.

Limitations avec NHibernate L1 Cache
Limitations avec NHibernate L1 Cache

NHibernate vous offre par défaut un cache in-process où vous pouvez conserver temporairement les données dans votre processus de travail pour chaque transaction. Cela fonctionne bien pour les applications à serveur unique, mais cela devient un goulot d'étranglement pour les applications d'entreprise.

Dans les applications d'entreprise, vous avez généralement plusieurs serveurs Web dans un scénario d'équilibrage de charge et leurs multiples processeurs de travail s'exécutant sur chacun d'eux. Ainsi, cela se traduit par le placement de plusieurs requêtes redondantes sur votre base de données pour les mêmes données de chaque processus de travail, ce qui ralentit votre application en tant que résultat net et entraîne également un stockage redondant individuellement de chaque côté du processus de travail dans sa propre mémoire, et vous ne peut pas évoluer lorsque vous devez développer votre base d'utilisateurs.

Modèle de fournisseur de cache NHibernate L2

Alors, pour surmonter ces limites NHibernate vous fournit un fournisseur de cache de niveau 2, où vous pouvez brancher un cache de second niveau.

  • Idéalement, le cache L2 devrait être
    • hors processus
    • en mémoire
    • Cache distribué
  • Fiable et hautement disponible
  • Evolutif

Modèle de fournisseur de cache NHibernate L2

Le cache de second niveau est utilisé conjointement avec votre cache en cours. Chaque fois que vous obtenez les données de votre base de données pour la première fois, NHibernate pousse automatiquement ces données dans le cache de second niveau, qui est partagé par tous les processus de travail.

Idéalement, le cache de second niveau devrait être un cache en mémoire, car vous souhaitez augmenter les performances de votre application. Il doit s'agir d'un cache hors processus qui n'est pas vidé même si votre processus de travail est recyclé. Il doit être distribué, il peut donc être partagé entre plusieurs processus de travail sur différents serveurs Web.

N'oubliez pas que vous ne pouvez augmenter votre évolutivité et performances des applications, si votre infrastructure de mise en cache sous-jacente est hautement évolutive et axée sur les performances.

NCache - Fournisseur de cache NHibernate L2

Donc, nous avons ici un tel fournisseur de cache de niveau 2 de NCache.

NCache - Fournisseur de cache NHibernate L2
NCache - Fournisseur de cache NHibernate L2

Il s'agit d'une solution de mise en cache distribuée en mémoire hors processus, qui a un regroupement dynamique capacité et il s'étend sur plusieurs serveurs. La charge de transaction de votre application est répartie de manière égale sur tous les serveurs de cache au moment de l'exécution, pour vous offrir plus de performances et NCache conserve les données répliquées sur l'ensemble du cluster pour vous fournir un basculement cohérent au cas où vous perdriez l'un de vos serveurs de cache.

NCache prend en charge les modes de réplication synchrone et asynchrone. Ainsi, vous pouvez conserver les données répliquées sans aucune surcharge de performances. La performance de NCache croît de manière linéaire, lorsque vous ajoutez plus de serveurs au niveau de mise en cache. Il n'y a pas de limite à la taille du cache, vous pouvez donc augmenter autant que vous le souhaitez la taille de vos données.

Vous pouvez également inclure dynamiquement plus de serveurs lors de l'exécution dans le cluster de cache, pour augmenter la capacité transactionnelle et disposer de plus de mémoire.

Il vous fournit également une surveillance de style tableau de bord, qui vous aide d'un coup d'œil rapide, à voir les performances du cache, l'activité de votre application cliente sur le cache et les différentes ressources système consommées par le cache.

La photo de droite montre le Topologie de partition-réplication, qui maintient les données partitionnées et répliquées sur plusieurs serveurs. Partition-Replica est la topologie la plus populaire dans NCache.

NCache Cache distribué de niveau 2 pour NHibernate

Donc, voici un diagramme d'architecture de haut niveau.

Schéma d'architecture de haut niveau
Schéma d'architecture de haut niveau

Lorsque vous branchez ce fournisseur de niveau 2 à partir de NCache dans votre application d'entreprise, il ne nécessite aucune modification du code dans votre application. Vous n'avez besoin que de quelques changements de configuration dans votre web.config or app.config, nous en reparlerons. Ainsi, il n'y a plus d'appels redondants vers votre base de données, si vous avez déjà récupéré les données dans la transaction précédente.

Dans une ferme Web d'équilibrage de charge comme celle-ci, les données sont automatiquement poussées vers le cache de second niveau par NHibernate, une fois que vous les obtenez pour la première fois à partir de votre base de données et ce cache est partagé par tous les serveurs Web. Ainsi, cela vous aide à réduire la charge sur votre base de données.

NCache Fonctionnalités configurables du cache de niveau 2

Ainsi, avec les modifications de configuration, vous pouvez configurer un certain nombre de fonctionnalités pour le fournisseur de cache de second niveau.

  • Utiliser les régions NHibernate
  • Faites expirer les objets du cache avec :
    • Temps de glissement ou de mort
    • Expiration absolue
  • Synchronisation de la base de données avec :
    • Dépendance SQL
    • Dépendance d'interrogation
  • Utilisez la synchronisation. / Asynchrone. opérations de cache
  • Définir la priorité de l'élément de cache

NCache Fonctionnalités configurables du cache de niveau 2

Par exemple, vous pouvez utiliser des régions NHibernate, vous pouvez définir des objets de cache pour qu'ils expirent avec une expiration de temps absolue ou d'inactivité, vous pouvez également configurer la dépendance SQL pour synchronisation de la base de données. Les opérations de cache synchrones et asynchrones sont prises en charge et vous pouvez également configurer la priorité des éléments de cache.

Donc, je vais vous guider à travers une session pratique rapide étape par étape pour configurer NCache Fournisseur de cache de niveau 2 pour un exemple d'application.

je te suggérerais de téléchargez l'édition Entreprise gratuite de 30 jours de notre site Web. Il s'agit d'un produit entièrement fonctionnel et riche en fonctionnalités, même pendant les jours d'évaluation.

Exemple d'intégration d'Hibernate dans NCache

Une fois que vous installez NCache, voici à quoi cela ressemble sur votre système.

Exemple d'intégration NHibernate
Exemple d'intégration NHibernate

Il installe un tas d'exemples Visual Studio. Passons à l'exemple NHibernate par exemple, ouvert dans Visual Studio. Vous devrez peut-être reconstruire l'exemple si vous utilisez Video Studio 2010. Vous aurez peut-être également besoin de la conversion.

Examinons les modifications de configuration que vous devez effectuer pour votre app.config pour le fournisseur de cache de second niveau à partir de NCache.

fichier app.config
fichier app.config

Tout ce dont vous avez besoin pour définir une section nommée 'ncache' pour le fournisseur de cache comme celui-ci dans votre app.config, puis vous pouvez ajouter une propriété pour le fournisseur de cache comme celle-ci.

Nous définissons également la NCache section elle-même avec plusieurs régions. Ces régions sont les régions NHibernate. Chaque région correspond à un nom de cache différent à partir de NCache.

Donc, nous avons une région par défaut ici, qui s'adresse à toutes les entités sur lesquelles vous ne spécifiez aucune région NHibernate et nous avons une région de nom spécifique comme cette région 'Client'. Dans chaque région, vous pouvez spécifier plusieurs propriétés pour chacune des classes appartenant à cette région.

Régions d'hibernation
Régions d'hibernation

Par exemple, définissez la dépendance SQL pour cela, définissez la priorité des éléments du cache, utilisez synchrone ou asynchrone, définissez la stratégie d'expiration sur un temps relatif ou inactif.

Exécution des caches

Donc, pour exécuter l'exemple, vous devez disposer de quelques caches. Le cache par défaut et 'myPartitionReplicaCache' en cours d'exécution, dans votre NCache Gérante.

Allons à NCache Manager, j'ai configuré cela avec 'myPartionedReplicaCache' et le cache par défaut avec 2 configurations de serveur en ce moment. Exécutons votre application, visualisons la liste des clients, par exemple, surveillez simplement la requête/seconde envoyée aux deux serveurs qui lui envoient les données, une fois que vous les avez obtenues de la base de données.

Demandes/sec également répondues
Demandes/sec également répondues

Donc, il y a environ 49 plus 42 éléments sur ces deux serveurs, également répartis sur les deux et si j'exécute à nouveau la requête, je pourrai obtenir ces résultats directement à partir du cluster de cache de deuxième niveau, au lieu d'aller dans votre base de données. Alors, regardez simplement les requêtes/sec auxquelles les deux serveurs ont répondu de la même manière.

Test de fiabilité du cache

Nous pouvons faire le test de fiabilité. Nous pouvons supprimer l'un des serveurs de cache et vous verrez toujours que le cluster de cache est capable de vous donner les éléments et de les récupérer sur les serveurs restants.

Pour cela, nous devrons arrêter l'un des serveurs et je vais le faire. Nous avons les 2 serveurs, 21 et 22. Je vais arrêter 22, comme s'il était sorti du cluster, puis relancer la requête.

Arrêt du serveur de cache
Arrêt du serveur de cache

Vous verrez 49 plus 42, les 91 objets sont toujours disponibles sur l'un des serveurs. Ils ont été récupérés à partir de l'autre serveur maintenant et si je relance à nouveau la requête, visualise à nouveau la liste des clients, je devrais pouvoir obtenir tous les éléments de ce serveur, à partir du cluster. Vous pouvez voir les requêtes/sec en cours, les récupérations/sec en cours, à partir de ce serveur.

Test de fiabilité réussi
Test de fiabilité réussi

Ainsi, vous disposez maintenant d'une mise en cache fiable, peu importe si l'un de vos serveurs de cache n'est pas disponible au moment de l'exécution. Les autres serveurs de cache peuvent récupérer les données et bien répondre à vos requêtes. En même temps, vous réduisez la charge sur votre base de données. Plus aucune requête redondante n'est envoyée à votre base de données.

Code d'intégration pour NHibernate dans NCache

Nous fournissons le code d'intégration pour le NHibernate dans NCache, comme vous pouvez le voir dans le projet que j'ai ouvert et ce code source est disponible pour que vous puissiez l'optimiser ou le personnaliser pour vos versions spécifiques de NHibernate.

Code d'intégration pour NHibernate dans NCache
Code d'intégration pour NHibernate dans NCache

Si vous allez à la NCache dossier d'installation, nous avons ici le code. Donc, merci beaucoup pour votre temps aujourd'hui et nous avons vu aujourd'hui, comment NCache peut être utile. Comment fiable et évolutif NCache est d'augmenter les performances de votre application NHibernate. Restez à l'écoute pour plus de mises à jour de NCache. Nous aborderons diverses fonctionnalités dans les prochains tutoriels. Si vous avez des questions, envoyez-nous un e-mail sur support@alachisoft.com

© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.