Avant de sauter dans le Cache client, dézoomons un peu et comprenons les bases de la mise en cache. En informatique, un cache est une mémoire à grande vitesse utilisée comme magasin auxiliaire pour éviter des déplacements de données coûteux et optimiser les performances d'applications plus simples qui s'exécutent sur un seul nœud de serveur. Mais dans un système distribué à charge équilibrée, une seule demande est gérée par plusieurs nœuds d'application. C'est là que le cache provoque une baisse des performances.
Pour répondre à cette exigence, un cache distribué en mémoire est introduit pour les applications qui répondent à des charges de transaction extrêmes par seconde et nécessitent une haute disponibilité et évolutivité linéaire.
Les développeurs peuvent choisir parmi de nombreuses options de mise en cache distribuée populaires disponibles sur le marché, telles que NCache. NCache est un cache distribué en mémoire extrêmement rapide et linéairement évolutif qui met en cache les données d'application pour réduire les déplacements coûteux de la base de données et améliorer le temps de réponse. Mais malgré tout cela, il reste encore de la place pour une amélioration des performances qui peut être rendue possible en ajoutant un cache au-dessus d'un cache -un cache client.
NCache Détails Mise en cache distribuée dans .NET Hautement disponible NCache
Comment fonctionne le cache client dans NCache?
Dans la plupart des cas, un cache distribué est hébergé sur un ensemble de serveurs de cache dédiés sur le réseau, de sorte que votre application doit effectuer des allers-retours sur le réseau pour récupérer des données. Et ce n'est pas aussi rapide que d'accéder aux données localement et depuis le processus de candidature.
Pour gérer ce problème, NCache Fournit le Cache Client. Le cache client fonctionne comme un stockage temporaire qui réside à proximité du processus d'application afin que la récupération des données soit plus facile et plus rapide. Le cache client élève les performances de votre application à un niveau supérieur, car plusieurs applications exécutées sur le même ordinateur client peuvent communiquer et partager des données à l'aide de Mode OutProc. Le cache client rapproche l'ensemble de données chaudes de votre application, même à l'intérieur du processus de l'application avec le Mode InProc ce qui donne un énorme gain de performances.
In NCache, l'utilisation du cache client est assez simple. Aucune modification de code n'est requise à la fin de l'application. Il s'agit d'une option de configuration simple. Vous pouvez créer un cache client via le NCache Web Manager au sein de l’ NCache-applets de commande PowerShell prises en charge. Une fois le client configuré, les applications clientes commenceront automatiquement à l'utiliser.
Comprenons le fonctionnement du Cache Client (appelé aussi Cache de premier niveau ou Cache L1) avec un exemple d'application E-Commerce. L'application accède fréquemment au catalogue de produits et aux données des utilisateurs actuellement actifs. Ces données peuvent être conservées dans le cache client, exécuté sur le boîtier client (où réside l'application). Ainsi, un voyage réseau à travers le cache en cluster (également appelé cache de deuxième niveau ou cache L2) peut être évité et les données sont fournies à partir du cache L1 beaucoup plus rapidement.
Vous devez maintenant réfléchir à la façon dont les données sont synchronisées entre deux caches afin que l'application soit toujours servie avec des données mises à jour à partir du cache L1.
Synchronisation des données entre le cache L1 et L2
Pour s'assurer que l'application obtient toujours des données à jour, deux threads d'arrière-plan fonctionnent dans le cache client. Ces deux puissants mécanismes de synchronisation exécutés dans le cache client garantissent que l'application obtient toujours les dernières données avec des performances et une évolutivité accrues. Les deux threads d'arrière-plan sont :
Thread basé sur les notifications
Lorsque des données sont ajoutées au cache L1, il enregistre instantanément une notification de modification de données et le cache L2 garde une trace des éléments de cache que le cache L1 détient et surveille les modifications lorsqu'une modification de mise à jour/suppression des données se produit. Lors de la modification des données dans le cache L2, le cache L1 reçoit une notification de changement et en réponse, le cache L1 se synchronise avec L2.
Thread basé sur les sondages
Il s'agit d'un mécanisme de secours qui se déclenche uniquement lorsque la communication entre le cache L1 et L2 est arrêtée en raison d'un problème réseau ou d'une perte de connexion. Dans ce cas, le cache L1 attend 10 secondes, puis s'interroge et demande les modifications de données dans le cache L2. Dès réception des notifications de modification, il se synchronise avec le cache L2.
Pour profiter pleinement des avantages de Client Cache, vous pouvez l'utiliser dans l'un des deux modes d'isolation au niveau du processus disponibles.
Modes d'isolation dans le cache client
Cache Client s'exécute sur le nœud client sur lequel vos applications s'exécutent. En fonction de vos besoins en performances et de l'architecture de l'application, vous pouvez choisir l'un des modes d'isolation au niveau du processus suivants pris en charge par le cache client. NCache Le cache client existe en deux modes : InProc et OutProc.
Mode InProc :
In Mode InProc, le cache client s'exécute à l'intérieur du processus d'application, éliminant ainsi la communication inter-processus. Le mode InProc offre des performances maximales à l'application car les données restent sous forme d'objet, ce qui réduit le coût de sérialisation et désérialisation.
En mode InProc, les données entre les autres instances d'application ne sont pas partagées, de sorte que chaque instance de l'application héberge une instance de cache client dédiée qui améliore les performances.
Mode OutProc :
In Mode OutProc, Client Cache s'exécute dans son processus dédié sur le nœud client. La communication entre les applications et le cache client s'effectue via des sockets TCP. Le mode OutProc prend en charge le partage de données afin que plusieurs instances d'application puissent communiquer avec le même cache client. Il présente un avantage majeur puisque les données sont partagées entre plusieurs applications, de sorte que les données chargées ou mises à jour par une application deviennent disponibles pour les autres.
Comparaison des performances des modes InProc et OutProc :
Il existe plusieurs facteurs sur lesquels les performances des modes InProc et OutProc sont mesurées, à savoir la disponibilité des données, la consommation de ressources et la vitesse.
Disponibilité des données: En mode OutProc, le redémarrage du cache n'entraîne pas de perte de données, ce qui assure la stabilité des données. Alors qu'en mode InProc, le redémarrage du cache entraîne une perte de données.
La consommation de ressources: Le mode InProc offre des performances maximales lorsque les ressources telles que la mémoire ne sont pas limitées, car chaque instance Client Cache contient sa copie des données. Le mode OutProc nécessite moins de ressources physiques que le mode InProc.
La vitesse: Le mode Client Cache InProc est ultra-rapide car il est comme un objet sur votre tas et il conserve les choses de manière désérialisée, ce qui permet d'économiser le coût de sérialisation/désérialisation que vous devez faire pour tout OutProc ou tout accès à distance au cache.
NCache Détails Cache Client Notifications d'événements dans le cache
Le flux opérationnel de Client Cache
Le cache client est plus proche de la couche d'application et le cache client est le sous-ensemble du cache en cluster. Ainsi, toutes les opérations se déroulent de manière distribuée.
Toutes les opérations de lecture basées sur des clés sont directement effectuées sur le cache L1, les opérations d'écriture basées sur des clés telles que l'ajout, l'insertion et la suppression sont d'abord effectuées sur le cache L2, puis ajoutées au cache L1 avant de revenir à l'application.
Les données sont renvoyées au cache L1 avant de retourner à l'application afin que la prochaine fois que les mêmes données soient demandées, elles soient directement fournies par le cache L1.
Les opérations de lecture et d'écriture non basées sur des clés ne sont effectuées qu'au niveau du cache L2, car le cache L1 contient le sous-ensemble du cache L2.
Les autres instances de Client Cache sont mises à jour via une base de données mécanisme de synchronisation.
Modes de synchronisation dans le cache client :
Tout en étant local à votre application, un cache client n'est pas autonome. Au lieu de cela, il est toujours synchronisé avec le cache en cluster. Cela garantit que les données du cache client ne sont jamais obsolètes.
NCache Le cache client fournit deux modes pour synchronisation des données entre le cache client et le cache en cluster. Le cache du client contient une copie des données du cache en cluster. Toute modification qui se produit dans le cache en cluster doit être synchronisée dans le cache client puisque la couche application communique directement avec le cache client. Deux modes de synchronisation des données sont optimiste et pessimiste.
Mode optimiste est le mode par défaut pour la synchronisation des données dans NCache. La synchronisation a lieu en arrière-plan et lorsqu'une application demande les données, elles sont renvoyées à l'application à partir du cache client.
Applications plus sensibles et nécessitant une nouvelle utilisation des données mode pessimiste pour la synchronisation des données. lorsqu'une application demande les données, le cache L1 vérifie la version avec le cache L2 et fournit les données mises à jour.
Conclusion
NCache vous permet de tirer parti du cache client avec un cache distribué. La meilleure partie de l'utilisation de Client Cache est qu'aucune programmation n'est effectuée du côté de l'utilisateur. Il s'agit d'un paramètre de configuration simple et le cache client est automatiquement connecté. Le cache client améliore les performances dans de nombreux domaines pour les applications qui effectuent plus de lectures que d'écritures. Alors, téléchargez une version d'essai complète de 60 jours de NCache Enterprise et essayez-le par vous-même.