Le seul but de NCache est de fournir des performances optimales pour votre application. Et pour atteindre ces performances, votre environnement de mise en cache doit pouvoir évoluer facilement et de manière rentable.
As NCache est un magasin de données en mémoire, la première préoccupation est la mémoire limitée qui lui a été allouée sur une boîte physique. La seconde est la limite de calcul. Nous savons tous que NCache, en plus de fournir opérations CRUD de base, prend également 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. Et lorsque les demandes des clients sur ces fonctionnalités deviennent nombreuses, 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. Quand cela arrive, NCache ne t'abandonne pas. Au lieu de cela, il existe une solution à cela et je suis ici pour vous l'expliquer.
NCache Détails Mise en cache distribuée dans .NET Hautement disponible NCache
É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. L'ajout d'un nouveau serveur consiste essentiellement à ajouter un nouveau nœud physique au cluster via NCache Web Manager or NCache Outil PowerShell qui améliore la mémoire globale et vous fournit une autre ressource pour traiter les demandes entrantes en excès.
Cela garantit une évolutivité linéaire. Comment? Parce que plus vous ajoutez de nœuds, meilleures sont les performances que vous obtiendrez. Dans NCache, l'ajout de nœuds supplémentaires au cluster n'induit aucune surcharge susceptible d'altérer le débit cohérent. Et selon les benchmarks de performance récemment effectués, NCache atteint 2 millions d'opérations/seconde avec 5 nœuds de serveur! Si ce n'est pas une victoire, alors je ne sais pas ce que c'est.
Et la meilleure partie de tout cela vient avec le Dynamic nature de NCache regroupement. Cela signifie que vous n'avez pas besoin d'arrêter les processus, les applications ou les nœuds existants simplement pour ajouter un nouveau nœud au cluster.
NCache Détails NCache Benchmarks de Performance NCache Benchmarks de performance – Vidéo
Creusons un peu plus et éclairons ce NCache fonctionnalités apportent à la table d'évolutivité.
Opérations client pour l'évolutivité
NCache client a cette fonctionnalité intégrée qu'il se connecte automatiquement directement à chaque nœud de serveur. Et NCache La carte de distribution permet au client de savoir quel nœud possède 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 vous aide à 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 qui doivent être effectuées sur plusieurs nœuds. Au lieu d'envoyer ces opérations à chaque nœud en 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 l'ensemble de données qu'il a stocké et partage le résultat avec le client. Le client fusionne tous les résultats provenant de tous les nœuds du serveur et renvoie un seul résultat à toutes les applications finales. Chaque nœud exécute la même requête en parallèle, ce qui induit une évolutivité et accélère le système.
Pipelining pour les opérations de mise à l'échelle
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 surcharge liée à l'envoi de plusieurs requêtes une par une et à l'attente de leur accusé de réception.
Prenons un exemple ici. Dire que le NCache le client envoie 100 opérations au serveur, ce qui signifie généralement que le client effectuera 100 opérations d'E/S. Pour le succès de ces opérations, chaque transaction du mode utilisateur au mode noyau va consommer beaucoup de puissance CPU. Trop de consommation CPU coûte cher et cela réduira les performances de mon application.
Ici, ce que fait le pipelining côté client, c'est de combiner toutes les opérations qui vont à un serveur et d'envoyer ce morceau dans un appel d'E/S dédié. Le pipeline côté serveur s'assure que le serveur reçoit plusieurs appels d'E/S en un seul appel. Les réponses renvoyées par les serveurs sont également reçues ensemble. Non seulement cela, mais 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 qui ont été 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.
NCache Détails Opérations côté client Canalisation dans NCache
Réplication évolutive en arrière-plan dans Partition-Replica
Quelle que soit l'opération de mise à jour effectuée par le client sur un nœud de serveur, elle doit être répliquée pour la tolérance aux pannes et la haute disponibilité sur le serveur répliqué. NCache le serveur effectue cette réplication en arrière-plan sans aucune implication du client. En plus d'être un processus d'arrière-plan, cette réplication est effectuée en masse pour réduire au maximum les coûts. Ce processus induit une évolutivité car toutes les opérations sont mises à l'échelle via la réplication en arrière-plan, et il rend également votre cache hautement disponible. Gagnant-gagnant.
Mise en cache en écriture différée pour l'évolutivité
Si le client souhaite écrire des données dans la base de données, la même requête envoyée au serveur écrira ces données dans le cache et dans la base de données.
Une implémentation asynchrone de cette fonctionnalité est Écriture derrière qui permet à votre serveur d'accéder à la base de données sans aucun délai de calcul. De cette façon, votre base de données et votre cache restent synchronisés tout en conservant les mêmes performances que vous attendiez d'un cache en mémoire.
Si la NCache le client envoie au serveur de cache une demande avec Write-behind activé, le serveur écrit ces données dans le cache, renvoie le contrôle au client et utilise un système de traitement par lots en arrière-plan pour s'assurer que les données sont également stockées dans la base de données. Ce mécanisme est ce qui rend votre application évolutive.
Évolutivité grâce à la mise en commun d'objets dans la gestion de la mémoire
Dans l'environnement .NET, lorsque le Garbage Collector (GC) automatique s'active, toutes les activités en cours dans l'application sont interrompues, ce qui crée des pauses dans le calcul des données en mémoire. Ces pauses nuisent grandement aux performances de votre application. Plus vous créez d'objets de grande taille, plus le GC se déclenchera et plus ce coup sera 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é.
NCache Détails Opérations côté serveur Canalisation dans NCache
Cache client pour induire l'évolutivité
Concernant l'évolutivité, Cache Client s'avère être l'une des caractéristiques les plus importantes de NCache.
Le cache client stocke les données les plus fréquemment utilisées de votre cache en cluster sur la même machine sur laquelle votre application s'exécute. L'utilisation du cache client entre votre application et le cache en cluster vous fournit une ressource de cache local qui réside à proximité de votre application. Ce cache traitera la plupart des requêtes de lecture de votre application, ce qui entraînera inévitablement une réduction des coûts d'E/S. Ainsi, non seulement vous obtenez un accès rapide aux données mises à jour, mais votre application évolue également.
Ce tableau d'évolutivité peut être encore optimisé si vous passez du cache client OutProc au cache client InProc en réduisant le coût d'accès au nœud local.
Évolutivité finale dans NCache
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 l'évolutivité dans votre environnement. Alors qu'est-ce que tu attends? Obtenez NCaching !
NCache Détails Télécharger NCache Comparaison Des Éditions