NCache est conçu pour offrir des performances optimales à votre application, et pour y parvenir, il faut un environnement de mise en cache qui évolue de manière transparente et rentable. NCache fonctionne comme un magasin de données en mémoire, la principale préoccupation est la mémoire limitée disponible sur un seul serveur physique, suivie de près par les limites de calcul. opérations CRUD de base, NCache prend en charge de nombreuses fonctionnalités avancées telles que Pub / Sous-marin, Requêtes, appels de récupération basés sur des critères, etc. À mesure que les demandes des clients pour ces fonctionnalités augmentent, le besoin de plus de puissance de traitement augmente. Cela signifie que tôt ou tard, votre serveur de cache atteindra sa limite de traitement maximale. Lorsque cela se produit, NCache ne vous laisse pas en plan, mais propose une solution.
Points clés à retenir
Évolutivité linéaire grâce à une architecture distribuée : NCache permet d'ajouter des nœuds de serveur à un cluster en production, autorisant une croissance linéaire de la capacité de transactions et du stockage sans dégradation des performances.
Réduction de la charge du processeur grâce au pipeline : En regroupant plusieurs requêtes client en un seul appel TCP, NCache minimise les transitions coûteuses entre le mode « utilisateur » et le mode « noyau » et réduit les échanges de données sur le réseau.
Gestion efficace de la mémoire grâce au regroupement d'objets : Le moteur réutilise les objets internes au lieu de les créer et de les détruire constamment, ce qui réduit considérablement les pauses du ramasse-miettes .NET (GC) pendant les périodes de forte charge.
Accès aux données localisées via le cache client : Le stockage des données fréquemment utilisées directement sur le serveur d'applications (InProc ou OutProc) élimine les allers-retours réseau inutiles vers le cache en cluster, améliorant ainsi les performances des applications gourmandes en lecture.
Évolutivité linéaire dans NCache
Lorsque votre environnement atteint les limites susmentionnées, NCache vous permet d'ajouter un nouveau nœud de serveur (ou plusieurs nœuds) à votre cluster de cache. Cela implique l'ajout d'un nouveau nœud physique au cluster via le NCache Centre de gestion or NCache Outil PowerShell qui améliore la mémoire globale et vous fournit des ressources supplémentaires pour gérer le volume croissant de demandes entrantes.

Figure 1 : Obtention d'une évolutivité linéaire par l'ajout de nœuds de serveur à un NCache .
Cette approche garantit une évolutivité linéaire. Comment ? Plus vous ajoutez de nœuds, plus votre application sera performante. Avec NCache, l'ajout de nœuds au cluster n'entraîne aucune surcharge entraînant une baisse du débit constant. Selon les récents tests de performances, NCache atteint 2 millions d'opérations/seconde avec 5 nœuds de serveur! Si ce n'est pas une victoire, alors il est difficile de dire ce que c'est !

Figure 2: NCache Test de débit démontrant une évolutivité linéaire sur un cluster de 5 nœuds.
Et la meilleure partie de tout cela vient avec le nature dynamique de NCache regroupement. Vous pouvez ajouter de nouveaux nœuds au cluster sans interrompre les processus, applications ou nœuds existants. Cette évolutivité transparente garantit des opérations ininterrompues et une extension facile de votre infrastructure de mise en cache.
Creusons un peu plus profondément et découvrons quelles fonctionnalités NCache apporte à la table de l'évolutivité.
Opérations client pour l'évolutivité
NCache Le client dispose de cette fonctionnalité intégrée qui lui permet de se connecter automatiquement à chaque nœud du serveur. NCache La carte de distribution aide le client à identifier le nœud qui contient les données dont il a besoin. Ainsi, l'opération provenant du client ne passe pas par plusieurs sauts et nœuds. Au lieu de cela, il faut un saut direct vers le serveur qui contient les données spécifiques. Cette fonctionnalité simple mais intelligente permet de faire évoluer votre environnement.
Parallélisme pour l'évolutivité des opérations
NCache prend en charge diverses opérations avancées telles que Requêtes, Opérations en masse, Tags, et de nombreuses autres opérations sur plusieurs nœuds de manière efficace. Au lieu d'envoyer ces opérations à chaque nœud selon un mode Round Robin, NCache vous permet d'envoyer chaque opération à chaque nœud en parallèle.
Par exemple, un client souhaite interroger les données stockées dans le cache. Il envoie donc cette requête à tous les nœuds du cluster. Chaque nœud va exécuter cette requête localement sur son ensemble de données et partager les résultats avec le client. Le client fusionne les résultats de tous les nœuds du serveur et renvoie une réponse unique à toutes les applications finales. Cette exécution parallèle améliore non seulement l'évolutivité, mais accélère également les performances du système en répartissant la charge de travail sur tous les nœuds simultanément.
Comment le pipeline améliore-t-il les choses ? NCache Évolutivité ?
Contrairement aux mécanismes de mise en cache traditionnels qui souffrent d'une communication réseau « bavarde », NCacheLe système de pipelines de [Nom de l'entreprise] réduit le nombre total d'allers-retours. NCache Usages Pipelining pour créer des blocs d'opérations qui doivent être envoyés sur un réseau en un seul appel TCP. Cette technique réduit la charge de travail liée à l'envoi de plusieurs requêtes individuellement et à l'attente de leurs accusés de réception.
Par exemple, si un NCache Si le client envoie 100 opérations au serveur, cela se traduit généralement par 100 opérations d'E/S distinctes. Chaque opération nécessite une transition du mode utilisateur au mode noyau, ce qui peut consommer une quantité importante de puissance CPU. Une consommation CPU trop importante est coûteuse et peut entraîner une dégradation potentielle des performances de l'application. Cependant, avec le pipeline côté client, ces opérations sont combinées en un seul appel d'E/S au serveur.
Le pipeline côté serveur garantit que le serveur reçoit plusieurs appels d'E/S en un seul appel simple, les réponses renvoyées par les serveurs étant également reçues ensemble. De plus, le serveur essaie également de générer un maximum de réponses à ces opérations entrantes en une seule fois. Ainsi, les 100 opérations envoyées au serveur dans des appels dédiés sont reçues par le serveur en un seul appel. Et les résultats des opérations qu'il a obtenues sont envoyés en un seul appel par le serveur. Cette technique permet de faire évoluer considérablement le système.
Réplication évolutive en arrière-plan dans Partition-Replica
Lorsqu'un client effectue une opération de mise à jour sur un nœud de serveur, NCache gère la réplication sur un serveur de réplication pour la tolérance aux pannes et la haute disponibilité. Cette réplication s'effectue en arrière-plan sans aucune intervention du client. En plus d'être un processus d'arrière-plan, cette réplication est effectuée en masse pour économiser un coût maximal. Cette approche améliore l'évolutivité en déchargeant la charge de travail de réplication vers l'arrière-plan tout en garantissant que votre cache reste hautement disponible. Il s'agit d'une solution gagnant-gagnant qui améliore à la fois les performances et la fiabilité.
Mise en cache en écriture différée pour l'évolutivité
Lorsqu'un client demande d'écrire des données, NCache garantit que les données sont écrites à la fois dans le cache et dans la base de données. Ceci est réalisé grâce à un mécanisme asynchrone appelé Écriture derrière. Lorsque l'écriture différée est activée, le serveur écrit initialement les données dans le cache et restitue rapidement le contrôle au client, minimisant ainsi les délais de calcul. En arrière-plan, NCache utilise un système de traitement par lots pour mettre à jour de manière asynchrone la base de données avec les données mises en cache. Cette approche garantit que le cache et la base de données restent synchronisés tout en préservant les hautes performances du cache en mémoire.
Le mécanisme d'écriture différée améliore l'évolutivité en déchargeant les opérations d'écriture de base de données vers l'arrière-plan, permettant à votre application de gérer plus de transactions efficacement sans compromettre les performances.
Évolutivité grâce à la mise en commun d'objets dans la gestion de la mémoire
Dans l'environnement .NET, lorsque le récupérateur de mémoire automatique (GC) s'active, toutes les activités en cours dans l'application sont interrompues, ce qui entraîne des pauses dans le calcul des données en mémoire. Ces pauses ont un impact considérable sur les performances de votre application. Plus vous créez d'objets, plus le GC intervient et plus l'impact est important.
Pour éviter ces longues pauses GC, NCache étant un cache .NET natif, il utilise la technique de mise en commun d'objets comme sa propre gestion de la mémoire. Dans ce mécanisme, NCache le serveur regroupe les objets et les réutilise au lieu d'en créer de nouveaux, ce qui réduit le besoin d'invoquer GC. Plus ce besoin est faible, plus vous obtiendrez de performances de votre application, donc plus d'évolutivité.
Cache client pour induire l'évolutivité
Concernant l'évolutivité, la Cache Client est la caractéristique la plus importante de NCache. Il stocke les données les plus fréquemment utilisées de votre cache en cluster sur la même machine sur laquelle votre application est exécutée. L'utilisation du cache client entre votre application et le cache en cluster vous fournit une ressource de cache locale qui réside à proximité de votre application. Ce cache traitera la plupart des demandes de lecture de votre application, ce qui entraîne inévitablement une réduction des coûts d'E/S. Ainsi, non seulement vous bénéficiez d'un accès rapide aux données mises à jour, mais votre application évolue également.
Cette évolutivité peut être encore optimisée si vous passez de SortieProc Cache client vers En cours Cache client en réduisant le coût d'accès au nœud local.
Le tableau suivant récapitule les principales caractéristiques architecturales abordées dans cet article qui pilotent NCache,s capacité à gérer des charges transactionnelles extrêmes :
| Fonctionnalité d'évolutivité | Rôle technique | Impact sur les performances |
|---|---|---|
| Pipelining | Regroupe plusieurs commandes client en une seule requête TCP. | Réduit la surcharge des E/S réseau et le nombre de cycles CPU par opération. |
| Regroupement d'objets | Réutilise les objets internes à l'intérieur du NCache moteur. | Réduit les pauses de la collecte des déchets (GC) en cas de charge élevée. |
| Évolutivité côté client | Répartit le traitement des requêtes sur plusieurs instances client. | Empêche la couche application de devenir un goulot d'étranglement. |
| Mise en cache du client | Stocke localement les données fréquemment utilisées (InProc/OutProc). | Réduit considérablement les coûts et la latence des E/S pour les charges de lecture intensives. |
Conclusion
Tout en tirant le meilleur parti de votre application, vous pouvez rencontrer deux revers majeurs. Soit la charge de calcul sur votre cache augmente, soit vous atteignez les limites définies de stockage de données, qui peuvent toutes deux être considérablement améliorées par la mise à l'échelle NCache. Vous avez un contrôle total sur NCache qui est riche en fonctionnalités prêtes à apporter de l'évolutivité à votre environnement. Alors, qu'attendez-vous ? Télécharger NCache dès aujourd'hui !
Questions fréquentes
Q: Comment NCache Comment éviter l’effet de « goulot d’étranglement » lors de l’ajout de nœuds de serveur supplémentaires ?
A: NCache Elle utilise une architecture distribuée où le traitement des données et des requêtes est réparti sur tous les nœuds du cluster. Ainsi, l'ajout de serveurs garantit une croissance linéaire de la capacité du processeur et du stockage, évitant qu'un nœud unique ne devienne un goulot d'étranglement en termes de performances.
Q : Pourquoi les transitions « mode utilisateur vers mode noyau » sont-elles un problème de scalabilité ?
A : Chaque opération d'entrée/sortie réseau nécessite que le processeur passe du mode utilisateur au mode noyau. Dans les environnements à forte activité transactionnelle, des milliers de ces transitions engendrent une surcharge importante du processeur. NCacheLe pipeline de [nom de l'entreprise] résout ce problème en combinant de nombreuses opérations en une seule, réduisant considérablement le nombre de transitions nécessaires.
Q : Quel est l'avantage spécifique de l'utilisation du regroupement d'objets dans un environnement .NET ?
A : Dans .NET, la création et la destruction fréquentes d'objets volumineux peuvent déclencher le ramasse-miettes (GC), ce qui interrompt l'exécution de l'application. Le regroupement d'objets permet NCache réutiliser les objets internes existants, en maintenant la stabilité du « tas » et en garantissant la réactivité du cache même en cas de charge extrême.
Q : Quand un architecte doit-il choisir InProc plutôt qu'OutProc pour un cache client ?
A : Alors que le cache client OutProc utilise un processus local, le cache client InProc est idéal pour une évolutivité maximale car il réside dans l'espace mémoire de l'application. Ceci élimine le coût des communications interprocessus locales et garantit un accès ultra-rapide aux données fréquemment utilisées.






