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.
NHibernate est un excellent outil ORM pour votre application et il simplifie vos normes de codage entre différentes équipes.
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.
Alors, pour surmonter ces limites NHibernate vous fournit un fournisseur de cache de niveau 2, où vous pouvez brancher un cache de second niveau.
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.
Donc, nous avons ici un tel fournisseur de cache de niveau 2 de NCache.
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.
Donc, voici un diagramme 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.
Ainsi, avec les modifications de configuration, vous pouvez configurer un certain nombre de fonctionnalités pour le fournisseur de cache de second niveau.
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.
Une fois que vous installez NCache, voici à quoi cela ressemble sur votre système.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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