Camp de code .NET de Philadelphie

Optimiser l'ASP.NET Core Performances avec cache distribué

Par Iqbal Khan
Président et évangéliste de la technologie

ASP.NET Core devient rapidement populaire pour le développement d'applications Web à fort trafic. Apprenez à optimiser l'ASP.NET Core performances pour gérer des charges de transaction extrêmes sans ralentir en utilisant un cache distribué .NET Open Source. Cette conversation porte sur :

  • Aperçu rapide de l'ASP.NET Core goulets d'étranglement de performance
  • Présentation de la mise en cache distribuée et de la manière dont elle résout les problèmes de performances
  • Où pouvez-vous utiliser la mise en cache distribuée dans vos applications
  • Quelques fonctionnalités importantes du cache distribué
  • Exemples pratiques utilisant Open Source NCache en tant que cache distribué

Le sujet d'aujourd'hui est de savoir comment optimiser l'ASP.NET core performance. Je préfère avoir des discussions plus interactives, alors, pendant que je parle, si vous avez des questions, veuillez lever la main pour que nous puissions répondre. Donc, je suis sûr que vous êtes ici parce que l'ASP.NET core est maintenant la technologie populaire pour développer de nouvelles applications .NET ou applications Web .NET car elle possède une architecture propre et légère. Vous êtes probablement déjà sur MVC depuis ASP.NET. Donc, si c'est le cas, passez à un ASP.NET core va être assez facile. ASPIC.NET core est léger. C'est multiplateforme, c'est open source et il y a une énorme base d'utilisateurs ASP.NET héritée qui en fait un cas très probable que la plupart d'entre vous passeront à ASP.NET Core.

Alors, ASP.NET core aller de l'avant va être le choix, le choix technologique pour .NET, pour développer des applications Web à fort trafic ou des applications serveur à fort trafic et des applications Web. Cela signifie ASP.NET core a besoin d'évolutivité et je suis sûr que c'est pourquoi vous êtes ici. Faisons juste comprendre les définitions avant de plonger plus en profondeur.

Qu'est-ce que l'évolutivité?

Qu'est-ce que l'évolutivité ? L'évolutivité signifie essentiellement que si vous avez une application avec cinq utilisateurs et qu'elle offre un temps de réponse ultra-rapide et bon, vous pouvez conserver le même temps de réponse, les mêmes performances avec cinq mille ou cinquante mille ou cinq cent mille utilisateurs, utilisateurs simultanés puis votre application est évolutif. Si votre application ne fonctionne pas bien avec cinq utilisateurs, ce n'est pas la conversation pour vous, alors vous en avez d'autres, vous devez probablement regarder la façon dont vous accédez à votre base de données et vous faites votre programmation globale. Cela suppose que vous avez fait du bon travail, en développant une application pour au moins quelques utilisateurs, puis vous devez savoir comment la mettre à l'échelle.

Qu'est-ce que l'évolutivité linéaire ?

L'évolutivité linéaire signifie que vous pouvez ajouter plus de serveurs en production et que vous ajoutez plus de serveurs, vous pouvez ajouter de manière linéaire la capacité de transaction.

évolutivité linéaire

Maintenant, je vais entrer dans les détails, mais ce qui se passe, disons que vous commencez avec deux serveurs Web équilibrés. Après un certain nombre d'utilisateurs, ces deux serveurs vont atteindre leur maximum et vos performances vont commencer à ralentir, puis vous ajoutez le troisième serveur et tout à coup la capacité devrait augmenter d'au moins un tiers ou quelle que soit la nouvelle formule, puis lorsque vous partez lorsque vous maximisez trois serveurs, ajoutez à nouveau une valeur incrémentielle. si vous êtes capable de le faire, vous disposez d'une architecture d'application linéairement évolutive. Si vous n'êtes pas en mesure de le faire, vous avez un non linéaire.

Qu'est-ce que l'évolutivité non linéaire ?

Non linéaire signifie essentiellement qu'après quelques serveurs, ajouter plus de serveurs ne fera aucune différence car il y a un goulot d'étranglement dans votre application qui l'empêche de se mettre à l'échelle. Ainsi, vos performances vont en fait baisser à mesure que vous ajoutez plus de charge et que vous parlez dans la mesure où votre application peut même planter. Donc, vous ne voulez certainement pas d'évolutivité non linéaire, ce qui signifie essentiellement qu'après un certain point, il n'y a pas d'évolutivité.

évolutivité non linéaire

Quelles applications ont besoin d'évolutivité

Alors, quel type d'applications a besoin d'évolutivité ? Ce sont toutes des applications serveur. Ce sont vos applications Web qui ont l'ASP.NET core services web, toujours ASP.NET core. Si vous développez en microservices, les microservices deviennent un grand mot à la mode maintenant et du fait que vous pouvez les exécuter dans des conteneurs et dans un environnement conteneurisé, vous pouvez même exécuter ASP.NET core dans un environnement conteneurisé, mais les microservices sont un autre très bon cas d'utilisation pour l'évolutivité ou toute autre application serveur où vous traitez de nombreuses transactions sur le backend.

Donc, si vous avez l'un de ces types d'applications, il s'agit généralement d'applications orientées client, orientées vers la sortie ou du moins elles font partie de l'application orientée vers la sortie. Disons que si votre application de services Web, vous pouvez faire partie d'une application Web globale et qu'il existe un niveau de services Web et il en va de même pour les microservices, mais ils sont généralement orientés vers le client ou vers la sortie, mais pas toujours. Si vous êtes une grande entreprise, vous pouvez avoir des dizaines de milliers d'utilisateurs internes, mais la plupart du temps, il s'agit de choses extérieures.

Le problème d'évolutivité et sa solution

Donc, il y a un problème d'évolutivité et c'est pourquoi nous avons cette conversation aujourd'hui et le problème d'évolutivité n'est pas dans votre niveau d'application. Ainsi, si vous disposez d'un environnement à charge équilibrée, votre niveau d'application évolue de manière très linéaire. Vous pouvez ajouter plus de serveurs, sans problème. C'est la base de données ou le stockage de données. Tout type de données stocké qui pourrait être vos données d'application, qui pourrait être vos sessions, qui pourrait être toute autre donnée que vous stockez ou récupérez qui devient un goulot d'étranglement et c'est pour cela, c'est l'une des raisons pour lesquelles NoSQL databases a gagné en popularité.

NoSQL Database

Le problème avec NoSQL databasec'est qu'ils vous obligent à vous éloigner des bases de données relationnelles. Ce que nous avons vu, c'est que dans de nombreuses situations, permettez-moi de dire la majorité des cas, vous pouvez utiliser NoSQL databases pour certaines données, mais beaucoup de données doivent encore résider dans des bases de données relationnelles. Ainsi, vous allez toujours utiliser SQL Server ou la base de données SQL dans Azure. Vous devez donc résoudre ce problème d'évolutivité avec des bases de données relationnelles. NoSQL databases ne sont pas toujours la réponse car vous ne pouvez pas les utiliser, vous ne pouvez pas remplacer une base de données relationnelle par une NoSQL database toujours. Et, si vous ne pouvez pas le remplacer, si vous ne pouvez pas l'utiliser, vous ne pouvez pas en bénéficier. Même si vous pouviez utiliser un NoSQL database, ils n'offrent toujours pas les performances que celles fournies par le cache distribué en mémoire. Donc, vous auriez encore besoin de beaucoup des choses dont je parle.

Alors, voyons ce qui se passe réellement et laissez-moi y entrer. Le problème d'évolutivité est quelque chose que vous ne voulez vraiment pas attendre jusqu'à ce qu'il se produise. Parce que si vous développez une application et que vous dites qu'elle fonctionne bien aujourd'hui et que c'est bon pour un millier d'utilisateurs ou quel que soit le nombre d'utilisateurs que vous avez et que tout à coup votre entreprise commence à devenir populaire, vous avez beaucoup plus de clients à venir. Vous êtes marketing ou votre service commercial a fait du bon travail et tout à coup votre application commence à ralentir et cela a été documenté par des études qui sont à chaque seconde de ralentissement, une application web entraîne une perte de revenus. Parce que vos clients dans beaucoup de ces entreprises en ligne, les types d'entreprises en ligne sont des entreprises de commerce électronique, les commerces de détail avec des magasins en ligne, cela pourrait être les soins de santé, l'e-gouvernement, les médias sociaux, les jeux d'argent en ligne, l'industrie du voyage. Beaucoup d'entreprises vont en ligne parce que toute entreprise qui doit traiter avec des consommateurs va faire affaire avec eux. Ce sont des consommateurs ou des dizaines de milliers, ils vont généralement venir en ligne avec eux. Et en ligne n'est pas toujours une application Web, il peut également s'agir d'une application de services Web, car vous pouvez avoir une application mobile qui va parler à un back-end.

Ce n'est donc pas une bonne idée d'attendre d'avoir des problèmes d'évolutivité, car cela coûtera très cher à votre entreprise. Ces applications vont ralentir car vous avez vu que la courbe non linéaire à ce moment-là, ajouter plus de service ne va pas aider. Donc, vous devez planifier cela à l'avance. Assurez-vous que l'architecture de votre application est correcte et qu'elle en tire parti. C'est presque comme une chose obligatoire en tant que meilleure pratique pour vous d'incorporer un cache distribué dans votre architecture d'application.

Mise en cache distribuée

Alors, comment un cache distribué aide-t-il ? je vais utiliser NCache comme exemple ici et NCache est un cache distribué open source pour .NET. Vous pouvez le trouver sur GitHub et vous pouvez également le trouver sur notre site Web et il y a aussi Enterprise Edition. Donc, si vous n'avez pas l'argent ou si vous n'avez pas le budget, optez pour l'open source. Si vous voulez une version plus prise en charge avec plus de fonctionnalités que l'open source, optez pour Enterprise. Alors, je vais utiliser NCache comme exemple mais je ne parle pas de NCache. Je parle de la mise en cache globale. Alors, comment un cache distribué aide-t-il ? Eh bien, disons en cas de NCache il crée un cluster de deux serveurs ou plus afin que vous puissiez voir que ce niveau intermédiaire qui est un niveau de mise en cache va avoir deux et ces deux serveurs et peut-être plus de deux selon le nombre de serveurs que vous avez ici ? Combien de charge avez-vous ici ?

ncache-déploiement

Ainsi, lorsque vous n'avez pas de cache distribué, la base de données n'est qu'un serveur, vous ne pouvez pas vraiment distribuer une base de données relationnelle. Je veux dire, les bases de données relationnelles du serveur SQL essaient d'améliorer leurs performances. Par exemple, ils ont maintenant des tables en mémoire. SQL possède également des répliques en lecture seule de la base de données. Ainsi, les lectures peuvent être répliquées, mais le problème avec les répliques est que chaque mise à jour est beaucoup plus lente car chaque mise à jour sera mise à jour à cinq ou quatre endroits. Donc, ce n'est pas le moyen idéal pour résoudre ce problème. Il existe un meilleur moyen qui est le cache distribué et la raison pour laquelle un cache distribué est évolutif est le mot distribué et la raison pour laquelle il peut être distribué est parce qu'il s'agit d'un magasin de valeurs clés. Tout est stocké sur la base d'une clé. La clé peut facilement être mappée par hachage dans plusieurs partitions et chaque partition est un serveur et c'est ainsi que vous réalisez la distribution.

Donc, vous avez un minimum de deux serveurs de cache, une configuration typique que nous voyons est d'environ 16 à 32 Go par serveur comme mémoire car encore une fois, c'est un magasin en mémoire donc, vous devez avoir beaucoup de mémoire. Et il forme un cluster, c'est un cluster basé sur TCP qui extrait cette mémoire et ce processeur en tant que ressource du cluster. Donc, disons que vous avez commencé avec une application Web claire avec 4 ou 6 serveurs Web, vous aurez donc 2 serveurs de cache et votre disons 16 à 32 Go de mémoire et maintenant vous commencez à obtenir de plus en plus et 80% du temps où vous allez dans le cache, 20% vous allez aller dans la base de données pour les mises à jour. Il peut même être inférieur à 20 % en fonction du nombre de mises à jour que vous effectuez. Pour certaines données, les mises à jour sont plus importantes que pour d'autres, mais disons encore une fois, vous allez ajouter plus de serveurs au niveau application ici et cela va à nouveau faire ce qu'il a fait à la base de données. Cela va maximiser le niveau de mise en cache. Donc, vous n'avez que 2 serveurs. Disons que vous avez atteint environ 8 serveurs dans la ferme Web ici. Parce que comme je l'ai dit, plus vous avez d'utilisateurs, plus vous avez de service applicatif. Donc, cela va atteindre son maximum. Dès qu'il atteint son maximum, nous avons ajouté un troisième serveur. Et ce ne sont pas des serveurs très haut de gamme. Ce sont des serveurs à bas prix.

Habituellement, un serveur typique est d'environ 8 cœurs. Si vous obtenez plus de 30 Go de RAM, vous devriez passer à 16 cœurs car plus de RAM, vous avez plus de récupération de place, car il ne s'agit pas d'une mémoire gérée et vous avez besoin de plus de puissance de traitement. Mais, nous recommandons à la plupart de nos clients, et encore une fois ces recommandations s'appliquent également à l'open source, nous recommandons à nos clients d'aller entre 16 et 32 ​​Go de RAM par serveur. Ajoutez simplement plus de serveurs au lieu d'obtenir des services vraiment haut de gamme, ajoutez plus de serveurs. Ainsi, lorsque deux serveurs sont au maximum, ajoutez simplement un troisième et la même chose se passe, vous pouvez en ajouter un quatrième ou un cinquième et vous ne maximisez probablement jamais car quelle que soit la capacité de transaction dont vous avez besoin, disons que si vous avez 20,000 30,000 20,000 XNUMX utilisateurs simultanés, c'est à peu près sur le haut de gamme de la plupart des applications Web, je veux dire qu'il y en a peut-être plus, peut-être qu'il peut y avoir plus de cent mille utilisateurs simultanés, mais si vous avez XNUMX XNUMX utilisateurs simultanés, cela signifie probablement que des millions de personnes viennent sur le site Web tous les jours . Donc, je veux dire, nous parlons de cette échelle.

Ainsi, à cause de cela, la base de données n'est plus le goulot d'étranglement. Vos données d'application de mise en cache… C'est donc un cache commun. C'est un cache partagé. Ainsi, lorsque vous mettez ce cache ici, parce que c'est un cache en mémoire, en mémoire signifie que si l'un des serveurs de cache tombe en panne, vous allez perdre des données. Cela signifie donc que le cache doit fournir une réplication intelligente, mais NCache fait pour s'assurer que si un serveur tombe en panne, un autre serveur a une copie de ces données, mais si vous faites trop de copies, cela ralentit également le tout. Alors, NCache ne fait qu'une seule copie des données et les partitionne. Chaque partition a une sauvegarde sur d'autres serveurs, puis dès qu'un serveur tombe en panne, les partitions en font une autre copie. Et, en ayant un cache partagé, maintenant ces boîtes deviennent sans état. Sans état signifie qu'aucune donnée n'est stockée au niveau de l'application.

Donc, ce que vous devez faire, c'est lorsque vous pouvez atteindre cet objectif que votre niveau d'application est sans état, ce qui signifie que vous pouvez arrêter n'importe quel serveur d'application sans causer d'interférence. Disons que vous devez appliquer un correctif, un correctif de système d'exploitation ou une mise à niveau d'application ou quelque chose que vous pouvez simplement continuer à appliquer ici car toutes les données sont soit dans la base de données, soit sur cette couche, de sorte qu'elles peuvent facilement être boguées.

Cas d'utilisation du cache distribué

Alors, maintenant que nous avons établi les raisons pour lesquelles vous devriez utiliser la mise en cache, quel est l'avantage ? Quel problème résout-il et comment résout-il ce problème. La première question c'est à quoi tu l'utilises ? Quels sont les cas d'utilisation ? Où dans l'application utilisez-vous un cache distribué ?

Mise en cache des données d'application

Le premier est la mise en cache des données d'application. C'est le cas d'utilisation dont j'ai déjà parlé, à savoir que vous avez une base de données contenant les données d'application que vous mettez en cache dans le cache afin que vous n'ayez pas à accéder à la base de données. Maintenant, il y a une chose que vous devez garder à l'esprit et j'y reviendrai que dans la mise en cache des données d'application, les données ont deux copies, l'une dans le maître qui est la base de données et l'autre dans le cache. Chaque fois que vous avez cette situation où les données résident à deux endroits, qu'est-ce qui pourrait mal tourner ? Oui, les deux copies pourraient devenir incohérentes ou désynchronisées, ce qui signifie que le cache pourrait devenir obsolète. Ainsi, tout cache qui devient encore vous oblige à ne mettre en cache que des données statiques, des données en lecture seule. Et les données en lecture seule ne représentent que 20 % de vos données totales. 80 % sont ce que nous appelons des données transactionnelles. Si vous ne pouvez pas mettre en cache les données transactionnelles, ce cache va vous limiter et c'est là que NCache a une fonctionnalité vraiment puissante et encore une fois toutes les fonctionnalités open source, toutes très puissantes qui vous aideront à vous assurer que le cache reste toujours frais. C'est bon et j'irai dans ce moment.

ASP.NET Core Mise en cache spécifique

Le cas d'utilisation numéro 2 est que, encore une fois, la mise en cache des données d'application est pour ASP.NET core et aussi d'autres applications mais pour ASP.NET core, il y a au moins deux autres utilisations, l'une est les sessions que vous pouvez restaurer votre session dans un cache distribué comme NCache et il n'y a pas de programmation nécessaire pour le faire, donc c'est vraiment très rapide. Si vous souhaitez obtenir les performances les plus rapides pour votre application et disons que votre application est déjà en ligne ou terminée, cela commence simplement à afficher vos sessions dans un cache distribué comme NCache. Et, parce qu'il n'y a pas de programmation, il y a très peu de tests que vous devez faire si vous devez le faire, bien sûr un test de santé de base pour vous assurer que tout fonctionne dans votre environnement, mais il n'y a aucun effort de développement impliqué. à cause de cela, aucun calendrier de développement et aucun calendrier de publication ne sont impliqués dans cela. Donc, très très rapide.

Le deuxième ASP.NET core la mise en cache spécifique est la mise en cache des réponses qui est dans ASP.NET, il était appelé cache de sortie, dans ASP.NET core ils l'ont en fait rendu plus basé sur les normes. Alors maintenant, il utilise les directives de mise en cache basées sur HTTP qui peuvent être comprises par des solutions de mise en cache de périphérie tierces, mais c'est essentiellement vous mettez en cache la sortie d'une page donc la prochaine fois que cette page est appelée, si la sortie va être la même, pourquoi exécuter la page ? Pourquoi ne pas simplement livrer la sortie ? Maintenant, c'est bien dans les situations où la sortie ne change pas très fréquemment, ce qui est beaucoup de cas, mais si vous avez une application très dynamique, vous n'aurez probablement pas beaucoup de contact statique, mais même si vous peut l'avoir pendant une courte période qui vous sauve encore. Alors, ASP.NET core la mise en cache des réponses a un concept de middleware et vous pouvez brancher un cache distribué comme NCache en tant que middleware qui vit essentiellement sur le même niveau que l'ASP.NET core ou c'est la même chose mais le cache du middleware pourrait être ici et voici l'ASP réel.NET core application. C'est donc le deuxième plus grand cas d'utilisation courant pour la mise en cache distribuée et je vais entrer dans un peu plus de détails à ce sujet, mais je ne vous donne qu'un aperçu.

Messagerie Pub/Sub et événements

Le troisième cas d'utilisation est quelque chose que beaucoup de gens ne savent pas et que vous pouvez faire messagerie pub/sub et des événements avec un cache distribué. La messagerie Pub/Sub permet à plusieurs applications ou plusieurs instances de votre application de coordonner leur travail en partageant des informations de données de manière asynchrone en fonction des événements. Quels sont certains des exemples que nous pourrions lier cela? Les microservices, encore une fois, les microservices sont des services découplés indépendants mais ils doivent être coordonnés. Je veux dire qu'un microservice peut produire quelque chose qui est utilisé par d'autres microservices, c'est ainsi que le flux de travail va être effectué, mais ils ne veulent pas dépendre directement les uns des autres, sinon tout le modèle se casse. Alors, ce que vous faites, c'est que vous pensez en fait que cela n'est plus un cache pour votre base de données, mais pensez à cela, et je vais en fait... donnez-moi une seconde, je vais juste le faire tourner juste pour une image, pensez à le cache distribué maintenant comme plate-forme de messagerie.

cas d'utilisation de la messagerie pubsub

Donc, tout le changement de paradigme qui est que maintenant vous avez des applications. Il peut s'agir de plusieurs machines virtuelles ou conteneurs exécutant vos microservices ou toute autre application et ils peuvent communiquer entre eux de manière pub/sub. Donc, il y a des sujets et donc il y a des éditeurs et des abonnés et cela simplifie vraiment votre candidature.

Maintenant, il existe d'autres solutions Pub/Sub comme rabbit et MSMQ pour la mise en file d'attente de messagerie. Quelle est la particularité d'un cache distribué comme NCache? Pourquoi devriez-vous utiliser ceci plutôt que cela ? La raison de l'utilisation d'un cache distribué est qu'il est très très rapide. Tout est dans la mémoire. Il n'a pas toutes les fonctionnalités d'une file d'attente de messages car ils seront également persistants et stockeront les messages pendant de longues périodes, mais dans de nombreuses situations, vous n'avez pas besoin de les conserver aussi longtemps si tout fonctionne dans le même centre de données et c'est vraiment un environnement transactionnel, mais vous l'utilisez davantage pour le flux de travail, alors la réplication est plus que suffisante. Le fait que toutes les données soient conservées sur plus d'un serveur est plus que suffisant pour s'assurer que vos messages, vos événements ne seront pas perdus. Ainsi, contrairement à la mise en cache des données d'application où il y avait deux copies des données, la nature du problème était donc différente, vous devez garder le cache à jour. Dans les deuxième et troisième cas c'est l'inverse, il n'y a qu'une seule copie des données qui est le cache. Donc, maintenant, dans le cache, il doit y avoir plus d'une copie cohérente à des fins de réplication, car si vous ne l'avez pas, le cache en mémoire perdra vos données. Ainsi, vous ne voulez pas perdre vos messages, vos sessions et la sortie de votre page simplement parce qu'une fois le serveur est en panne. Ainsi, la messagerie Pub/Sub dans les événements est généralement un cas d'utilisation très puissant pour un cache distribué et encore une fois, tout cela est open source.

Donc, il y a une autre fonctionnalité dans NCache appelée requête continue qu'en fait aucun autre cache d'espace .NET n'a, certains des caches Java l'ont, et une requête continue vous permet de spécifier un type SQL d'une requête sur le cache, par exemple, vous pouvez dire quelque chose comme select clients où customer.city est New York et vous dites que je suis intéressé par ce cas, donc et vous demandez le cache, pouvez-vous s'il vous plaît surveiller cet ensemble de données. Alors. tout objet client avec cet attribut, jamais ajouté, mis à jour ou supprimé du cache, veuillez le notifier. Donc, maintenant vous n'avez plus besoin de regarder vous-même tous les objets que vous ne pouvez pas de toute façon ou c'est pour vérifier, le cache le fera pour vous. C'est similaire à la façon dont SQL Server dépend de SQL. Vous pouvez demander à votre serveur de surveiller l'ensemble de données et de vous avertir lorsque cet ensemble de données change. Sauf qu'il s'agit d'une ou plusieurs lignes dans une table, mais ici, ce sont des objets dans un cache distribué. Donc, ce sont les trois cas d'utilisation courants.

ASP.NET Core - Mise en cache des données d'application

Donc, je pense que le cas d'utilisation le plus courant est la mise en cache des données d'application. En fait, le mot cache distribué est plus un mot de l'écosystème Microsoft. Côté Java, cela s'appelle en mémoire grille de données. Nous utilisons trois mots. Nous utilisons le cache distribué, nous utilisons la grille de données en mémoire pour l'avantage Web des gens de Java, bien que nous soyons dans l'écosystème Microsoft. Donc, nous ne sommes pas si nombreux et puis il y a le magasin de données en mémoire distribué. Ainsi, la mise en cache des données d'application est le cas d'utilisation de la mise en cache distribuée.

Interface IDistributedCacheIDistributedCache Interface

Donc, si vous envisagez d'utiliser la mise en cache des données d'application, vous pouvez le faire de trois manières. Il y a une interface IDistributedCache et elle est disponible dans ASP.NET 4 qui ressemble fondamentalement à ceci ici.

cache idistribué

Interface très simple. Microsoft a finalement fourni une interface qui vous permet de brancher n'importe quel cache distribué en dessous. Le seul problème avec cela est que c'est vraiment très simple. Donc, vous ne pouvez pas faire grand-chose à travers cela. Vous pouvez juste faire vraiment basique. Et, la seule chose qu'il fait, c'est qu'il vous donne des expirations. Vous pouvez spécifier l'option d'entrée de cache qui sont les expirations. Donc oui! NCache implémente cela, donc si vous programmez via l'interface IDistributedCache, vous pouvez simplement vous connecter NCache sans aucun changement de code, aucun autre changement de code et vous avez fait la programmation mais je ne vous recommanderais pas de le faire car si vous allez vraiment puiser dans un cache distribué et l'avantage alors vous voulez comprendre ce que tous les autres fonctionnalités? Pourquoi ne pas les utiliser ? Maintenant, je vais partir avec Cela.

Entity Framework Core Cache

Une autre est si vous faites du noyau EF, encore une fois, si vous voulez minimiser le code que vous voulez écrire, NCache présent fournisseur de méthodes d'extension de base EF, permettez-moi de vous montrer rapidement ceci. Ainsi, les méthodes d'extension de base EF simplifient vraiment la façon dont vous utiliseriez le cache. Encore une fois, tout comme IDistributedCache, les fonctionnalités ne sont pas aussi étendues.

ef-core-cache

Ainsi, par exemple, disons que vous vouliez voir votre requête typique basée sur EF Core ou EF LINQ, ce que nous avons fait, c'est que nous avons implémenté une méthode d'extension de cache de batterie et qu'il existe d'autres méthodes d'extension, dès que vous venez de dire que lorsqu'il est derrière l'équipe, cette requête sera d'abord examinée et dans le cache. Si le cache l'a, vous l'obtiendrez du cache, sinon vous irez dans la base de données, récupérez-le et cachez-le avant qu'il ne vous le donne. Donc, simplifie un peu votre programmation. Si c'est quelque chose que vous voulez, disons que vous avez déjà une application de base EF et que vous voulez vous connecter le plus rapidement possible, c'est le moyen le plus rapide d'obtenir NCache là-dedans comme vous pouvez le voir c'est.

NCache API

La troisième option consiste à utiliser NCache API qui est également une API assez simple. NCache L'API semble presque identique à l'objet ASP.NETcache, mais nous avons essayé plus que cela, mais nous sommes sortis il y a longtemps. ASPIC.NET Core est la seule interface pour l'objet qui existait, nous avons donc essayé de la garder aussi proche que possible.

ncache-api-app-data-caching

Donc, c'est un concept simple, vous vous connectez au cache, vous obtenez un descripteur de cache, vous faites un cache.get, il y a un index ou oubliez, vous pouvez faire contient, vous faites Ajouter, insérer, supprimer et ce sont des versions asynchrones de ceux-ci afin que vous n'ayez pas à attendre que le cache soit mis à jour. Il y a évidemment plus que cela. Donc, ce genre de vous donne une idée de la simplicité d'utilisation d'un cache.

Fonctionnalités de mise en cache des données d'application - Gardez le cache à jour

Maintenant, la principale chose à laquelle je voulais venir était cette page. Ouais, je suppose que je vous ai dit qu'il y avait deux copies de la cache. Si votre cache n'est pas en mesure de se maintenir à jour, vous allez vraiment limiter l'utilisation. C'est très important à comprendre. A quoi servent les caches ?

Expirations (absolues + glissantes)

La plupart des caches vous fournissent des expirations. L'expiration est également appelée TTL, Time to live, nous l'appelons expiration absolue car c'est là que l'objet de cache ASP.NET utilise ce terme, nous l'avons donc conservé. Qu'est ce que ça fait? Vous ajoutez un objet au cache, vous dites s'il vous plaît expirez cela dans cinq minutes ou dans dix minutes car je pense qu'il est sûr de le mettre en cache aussi longtemps. Vous faites une supposition éclairée qui convient dans certains des cas de données de référence. Par exemple, vous avez un catalogue de produits. Il ne changera probablement pas toutes les 10 minutes. Son prix ne va pas changer là-dedans. Il s'agit donc de changements plus prévisibles pour certaines situations. Donc, c'est bien d'utiliser des expressions ici. Mais, si vous mettez en cache un client ou une activité, vous ne savez pas quand cela va changer car les clients vont appeler et apporter des modifications afin que vous ne puissiez pas vivre uniquement des expirations. Donc, c'est là que vous avez besoin d'autres fonctionnalités dans le cache et c'est là que toutes ces fonctionnalités sont en cache dans NCache comme source ouverte.

Synchroniser le cache avec la base de données

L'une des caractéristiques est la NCache peut se synchroniser avec la base de données. Maintenant, la base de données peut être SQL Server, Oracle ou OLEdb en cas d'interrogation, mais la synchronisation signifie que NCache devient un client, le serveur de cache devient un client de la base de données. Il utilisera désormais la dépendance SQL dont je parlais. La même chose qu'une requête continue mais pour le serveur SQL. Il utilisera une dépendance SQL et je vais vous montrer comment cela fonctionne.

synchronisation-base de données

Alors, disons… Donc, lorsque vous ajoutez, disons que vous ajoutez cet objet produit au cache afin que vous ayez une clé et que vous ayez l'élément de cache qui contient le produit. Ce que vous voulez faire, c'est que vous voulez spécifier une instruction SQL qui identifie un produit spécifique dans la table des produits et encore cette instruction SQL est pour le serveur SQL. Vous passez le cache des événements, NCache nous le transmettrons au serveur SQL. NCache, lorsqu'il mettra en cache ce produit, il notifiera désormais à un registre auprès du serveur SQL une dépendance SQL et il conservera le mappage. Ainsi, si le serveur SQL envoie un événement à NCache disant que ce produit a été mis à jour dans la base de données maintenant NCache sait qu'il est toujours dans le cache. Donc, il fera l'une des deux choses. vous devez simplement le supprimer du cache. Je veux dire que votre application n'a rien à faire, tout est fait par le cache ou si vous avez implémenté cette fonctionnalité appelée lecture, elle rechargera automatiquement l'élément. Donc, je reviendrai à la base de données dans un instant. Ainsi, la synchronisation de la base de données est une fonctionnalité très très puissante. Il vous donne la tranquillité d'esprit et met en cache toutes les données. Sans quoi, si vous ne faites que vos explorations, vous êtes limité et c'est tellement grave que si vous parlez à une personne typique qui connaît la mise en cache de manière basique, cela donnera une réaction à la mise en cache, "oh c'est pour les données en lecture seule". La mise en cache concerne uniquement les données statiques. Tout le monde a peur de toucher aux données transactionnelles et c'est à cause de ces choses, car les expirations ne sont rien de plus qu'une supposition éclairée, qui peut être valable pour des cas plus prévisibles comme le catalogue de produits et autres, mais ce n'est pas valable pour les données transactionnelles.

Synchroniser le cache avec non relationnel

Donc, le même problème si vous avez un magasin de données non relationnel. Cela pourrait être quelque chose dans le cloud, cela pourrait être des bases de données héritées, cela pourrait être un ordinateur central. Vous pouvez atteindre le même objectif que la dépendance SQL, sauf dans ce cas, vous n'êtes pas dans cette notification. Une dépendance personnalisée est quelque chose que vous implémentez. C'est votre code qu'il s'agit de code côté serveur donc NCache a ce concept de code côté serveur. Code que vous écrivez, qui vit sur le serveur de cache.

Lecture et écriture

La dépendance personnalisée en est une, l'écriture directe en est une autre. Je viens de parler de la lecture continue, que vous pouvez recharger la chose si dans une synchronisation de base de données, si la suppression de l'élément NCache peut aller recharger. Comment peut-il recharger ? Bien que votre code de lecture. Qu'est-ce que la lecture continue ? On dirait que je saute d'avant en arrière mais je voulais connecter ces .s c'est pourquoi. Comment faites-vous… écrire et lire n'est qu'une interface simple, vous avez donc une interface de lecture ici. Oui trois méthodes il y a un Init qui permet de se connecter à la source de données. Dispose est la déconnexion et ce sont aussi des surcharges de LoadFromSource. Ainsi, LoadFromSource est une clé et vous rendez l'élément de cache et LoadFromSource a une surcharge où vous pouvez rendre un dictionnaire Ainsi, LoadFromSource est quelque chose qui NCache appelle votre gestionnaire de lecture.

Donc, disons que votre application fait le Cache.Get et que cet élément n'est pas dans le cache et que vous dites NCache si ce n'est pas dans le cache, veuillez aller demander au gestionnaire de lecture. NCache appellera le gestionnaire de lecture car le gestionnaire de lecture est votre code qui réside dans le cluster de cache. NCache appellera cette méthode. Cette méthode est votre code, va à votre base de données, votre source de données, qui peut être n'importe quoi, peut être un SQL ou appelé mainframe et récupère les données puis les met. Maintenant que NCache a la capacité d'accéder à votre base de données, cela signifie qu'il peut effectuer un rechargement automatique. Donc, c'est la partie pratique. Ainsi, vous pouvez le synchroniser avec la base de données relationnelle et la base de données non relationnelle.

Mise en cache des données relationnelles

La dernière chose est la mise en cache des données relationnelles. Vous devez faire la comptabilité avec l'application de données et garder une trace d'une donnée et de sa relation avec les autres. Je vais juste donner un exemple d'un client ayant plusieurs commandes. Bien que vous ne supprimiez généralement pas un client, mais disons simplement que si vous l'avez fait et que le cache ne le sait pas, disons que si vous l'avez supprimé un objet client du cache et qu'il avait dix commandes dans le cache, ces commandes ne sont pas plus valides, ils ne doivent pas être conservés dans le cache. Ainsi, chaque fois que vous avez un un-à-plusieurs, généralement le nombre dépend de celui-ci, donc si vous en supprimez un du cache, vous devez également en supprimer plusieurs du cache. Maintenant, c'est quelque chose que vous devez garder une trace de chaque fois que vous en supprimez un, vous devez en supprimer plusieurs. Donc, ce que vous pouvez faire à la place, c'est que l'objet de cache ASP.NET avait un concept de dépendance attaché. NCache implémenté ceci afin que vous puissiez relier ces deux éléments, puis si l'objet client est mis à jour ou déplacé, toutes les commandes sont automatiquement supprimées.

Vous pouvez utiliser la dépendance de cache pour un trop grand nombre, pour un à un et aussi si vous vouliez mettre en cache des collections, puis stocker des objets individuels séparément également. Donc, c'est dans votre collection de clients en tant qu'objet mis en cache et vous avez également mis en cache individuellement certains clients. Parce que dans le cache, vous pouvez conserver plusieurs copies. Tout est conservé par votre application. Ainsi, contrairement à votre base de données qui doit avoir une normalisation et une intégrité des données, le cache peut avoir plusieurs copies car tout est une question de performances. Lorsque vous avez plusieurs copies et que vous devez pouvoir nettoyer lorsqu'une copie est mise à jour, c'est ce que cette dépendance de cache vous permet de faire. Ce sont donc les quatre façons différentes de garder votre cache à jour. Ils sont tous disponibles dans le cadre de NCache open source.

Fonctionnalités de mise en cache des données d'application - Lecture et écriture

Je suis à nouveau en lecture-écriture, l'écriture est la même que la lecture, sauf que lorsque vous mettez à jour le cache, vous demandez au cache d'aller mettre à jour la base de données.

Lecture et écriture

Ainsi, la lecture est lorsque vous lisez le cache, vous demandez au cache de lire à partir de la base de données au cas où il n'aurait pas les données. Désormais, la lecture et l'écriture vous permettent de consolider votre code de persistance dans un seul niveau de mise en cache. Et, laissez le cache devenir plus conscient de votre base de données et l'application devient de plus en plus simple.

Écriture derrière

l'écriture immédiate présente également un avantage supplémentaire appelé écriture différée. Chaque fois que vous mettez à jour la base de données, c'est l'opération la plus lente de votre application qui met à jour la base de données. C'est encore plus lent que de récupérer les données de la base de données et si vous utilisez un cache pour récupérer les données, vous n'avez pas besoin d'aller trop souvent dans la base de données. Pourquoi ne pas utiliser le cache pour les données mises à jour si les données ne sont pas si sensibles. Cela signifie que vous pouvez le mettre en file d'attente pour une mise à jour asynchrone. Si les données sont très sensibles, vous ne voulez évidemment pas les mettre en file d'attente pour une mise à jour asynchrone, mais une grande partie des données est que vous pouvez les mettre en file d'attente pour une mise à jour asynchrone. Lorsque vous le mettez en file d'attente et que vous effectuez une fonctionnalité d'écriture différée, vous demandez NCache pour l'écrire dans la base de données de manière asynchrone, lorsqu'une file d'attente est créée ou plusieurs demandes de mise à jour, cette file d'attente est répliquée sur plusieurs serveurs, au cas où un serveur tomberait en panne, vous n'êtes pas perdu. Et, votre application accélère certainement car elle n'attend plus que la base de données soit mise à jour. Ainsi, l'écriture immédiate présente un avantage en termes de performances. Et, écrivez derrière .. La lecture intégrale a tous les avantages.

Articles de rechargement automatique

Vous pouvez même recharger automatiquement avec des expirations. Ainsi, lorsque vous expirez, vous pouvez automatiquement recharger cet élément. L'expiration, disons, change probablement dans le serveur de base de données. Il n'est plus valide dans le cache donc il ne le supprime pas pourquoi ne pas le charger car vous en aurez besoin de toute façon. Ensuite, il s'agit probablement d'une sorte de données de recherche, donc lues automatiquement. Encore une fois, le cache reprend de plus en plus de travail de votre application.

Fonctionnalités de mise en cache des données d'application - Regroupement de données

Une fois que vous êtes en mesure de garder le cache à jour et que vous êtes confiant, vous commencez maintenant à mettre en cache beaucoup de données. Lorsque vous commencez à mettre en cache beaucoup de données, c'est vraiment bien si vous pouvez rechercher des données au-delà de cette paire clé-valeur. Je viens de parler à quelqu'un hier soir et ils ont vraiment dû trouver des techniques sur la façon de formater les clés pour trouver différents types de données. C'est quelque chose que vous n'avez pas à faire dans NCache. Vous pouvez attribuer ces balises méta appelées groupes et sous-groupes et balises et balises nommées. Il s'agit de métadonnées que vous pouvez attribuer à vos objets au lieu de renommer les clés. Celles-ci pourraient être de meilleures données et sur cette base, vous pouvez dire donnez-moi tout ce qui a cette balise ou ces deux balises ou ces trois balises ou donnez-moi tout ce qui appartient à ce groupe. C'est un.

Deuxièmement, vous pouvez faire des requêtes SQL. Laissez-moi vous montrer cela. Donc, encore une fois, le cache commence à ressembler de plus en plus à une base de données.

groupement de données

Ainsi, par exemple, vous pouvez dire ici, sélectionnez tous les produits portant ce nom, alors maintenant vous effectuez une recherche basée sur un attribut de l'objet produit. Maintenant c'est beaucoup de NCache code afin que vous exécutiez.reader comme SQL Server. C'est très similaire, vous récupérez un lecteur Icache et vous regardez simplement vos affaires. Maintenant, c'est encore quelque chose que le cache fait partout où vous devez le faire. D'une part, vous mettez beaucoup de données dans le cache, d'autre part, vous pouvez maintenant rechercher des données dans le cache.

ASP.NET Core Stockage de session

J'ai parlé de l'ASP.NET core séances. Je pense que la principale chose à garder à l'esprit est qu'il existe deux façons de l'utiliser.

Stockage IDistributedCache

La première est que vous branchez NCache. NCache a implémenté un fournisseur IDistributedCache. Alors, vous branchez NCache en tant que fournisseur IDistributedCache et ASP.NET core commence automatiquement à stocker les sessions dans NCache. Voir si je l'ai ici.

idistributedcache-session-stockage

Donc, par exemple, voici un ASP.NET Core application, vous allez dans les services de configuration et vous ajoutez simplement NCache en tant que fournisseur IDistributedCache et maintenant vous utilisez l'ASP standard.NET core session qui savent dépendre de IDistributedCache car ils savent qu'un fournisseur est maintenant connecté. Ainsi, lorsque vous faites cela, toutes les sessions seront enregistrées dans NCache. Et, je vais vous montrer à quoi ressemble la mise en cache. Je vais juste vous donner une démo réelle de NCache. Donc, c'est une façon.

NCache Fournisseur de sessions

La deuxième façon est que vous utilisez réellement NCache en tant que son propre fournisseur de session lui-même, donc, au lieu d'aller dans un IDistributedCache, vous allez dans les mêmes services de configuration et vous dites ajouter NCache fournisseur de sessions.

ncache-fournisseur-de-session

Désormais, ce fournisseur de session a plus de fonctionnalités que le IDistributedCache habituel. Il a plus de fonctionnalités spécifiques à la session. Je veux dire, je vous recommande d'utiliser le NCache sur son propre fournisseur de session qui a bien fonctionné avec IDistributedCache. Mais, vous pouvez aller aux deux options, ASP.NET core vous fournit ceci. Comme je l'ai dit, cela ne nécessitait rien de plus que cela pour le changement de code. C'est tout. Tout le reste est automatique. Donc, si vous allez bénéficier d'un cache distribué comme NCache, branchez-le comme point d'entrée dans votre application. Vous devez en profiter aujourd'hui car le cache d'objets de votre mise en cache des données d'application va nécessiter une programmation puis s'intégrer dans vos calendriers de développement et un processus légèrement plus long que cela. Mais, cela se fait très très vite et je le sais sûrement déjà ici.

ASP.NET Core Mise en cache des réponses

Et, c'est une configuration, donc encore une fois, je vais y revenir et de la même manière, la mise en cache des réponses utilise un cache distribué et vous pouvez vous connecter NCache à cela, puis cela fonctionne automatiquement.

mise en cache des réponses

Exigences architecturales sur le cache distribué

Permettez-moi d'aborder rapidement certaines des choses qui NCache ça ira.

Haute Disponibilité

Un cache distribué est quelque chose comme une base de données, il vit en production avec votre application. Vous devez donc vous assurer que son architecture est flexible et hautement disponible.

cluster de cache haute disponibilité

Ainsi, par exemple, NCache a une architecture peer-to-peer mais d'autres types de Redis n'ai pas. Ainsi, au lieu d'avoir un maître esclave, vous voulez avoir un peer-to-peer. Comme je l'ai dit, de nombreux caches Java qu'ils appellent dans la grille de données en mémoire ont une architecture peer-to-peer. La bonne chose à propos du peer-to-peer est que tout le monde est pair, donc n'importe quel nœud peut tomber en panne et rien ne se passe. Probablement l'esclave maître est l'esclave ne peut pas devenir maître. Si le maître meurt, l'esclave est toujours un esclave. Donc, cela nécessite une intervention manuelle pour que vous puissiez récupérer. En cas de pair à pair, il récupère automatiquement. Ainsi, à cause du pair à pair, cela devient ce que nous appelons le cluster dynamique d'auto-guérison qui s'ajuste automatiquement. Donc, c'est le premier aspect.

Évolutivité linéaire w. Réplication

Le deuxième aspect est l'évolutivité linéaire qui est le partitionnement et encore l'évolutivité linéaire avec ajustement dynamique de la partition.

partitions-dynamiques-1

Les choses NCache fait automatiquement, disons que si vous avez une configuration à deux serveurs et que vous voulez ajouter deux partitions et que vous voulez maintenant ajouter un troisième serveur, c'est la troisième partition qui est ajoutée. NCache automatiquement, disons que ça part de , disons que vous avez deux serveurs ici avec deux partitions. Chaque partition en tant que sauvegarde sur un serveur et une partition différents est essentiellement une collection de compartiments avec une distribution de carte de hachage.

partitions-dynamiques-2

Donc, disons que si vous avez 1,000 500 buckets, 1 iront dans la partition 500, 2 world partition XNUMX, tout fonctionne bien, maintenant vous voulez ajouter un troisième serveur. St une fois car encore une fois, en ajoutant un troisième serveur maintenant, vous pouvez avoir trois partitions, donc NCache fera automatiquement dans les coulisses pendant que l'application est en cours d'exécution, cela créera une troisième partition et nous déplacerons certaines des données des partitions 1 et 2 dans la 3ème partition. Encore une fois, un tiers, un tiers un tiers. Ainsi, les seaux se déplacent réellement et tout cela se produit de manière dynamique. Une fois que les compartiments se déplacent, les répliques sont également réajustées, mais les répliques un et deux ne sont plus les mêmes répliques qu'elles étaient auparavant, ont rapidement moins de données et il y a la nouvelle réplique appelée réplique trois. Le serveur qui avait les répliques deux n'est plus la réplique 2, il va en avoir trois et la réplique trois va être créée sur le troisième serveur, tout cela se fait automatiquement pour vous.

C'est donc ce dynamisme qui le rend hautement disponible. Ainsi, lorsque vous ajoutez un serveur, il y a une intervention manuelle mais que vous devez vraiment… Donc, c'est toujours très pratique si vous pouvez simplement y aller et le faire. Littéralement, vous dites simplement ajouter et tout est fait pour vous. Mais, c'est encore plus important lorsque vous supprimez un serveur, car une suppression peut également se produire en raison d'un plantage du serveur. Ainsi, lorsque vous êtes dans une configuration à trois serveurs, cela signifie que le serveur 3 tombe en panne, maintenant la partition 3 est perdue, ce qui NCache fera est qu'il rendra immédiatement la réplique trois active parce qu'elle a une copie de la partition 3. Donc, maintenant vous avez la partition 1, la partition 2 et la réplique 3 parce que la partition 3, temporairement. Donc, il n'y a pas d'interruption. Une fois que c'est fait alors NCache réalisez maintenant que seulement deux serveurs ne peuvent avoir que trois partitions, il fusionne la réplique 3 dans les partitions 1 et 2, le tout en même temps, puis une fois que la fusion est terminée, il crée maintenant une réplique 2 à cet endroit ici. Donc, vous pouvez revenir à cette image.

Maintenant, c'est quelque chose qu'avec d'autres modes, vous ne pouvez pas faire automatiquement. Cela signifie que si cette chose se produisait et que le milieu mourait, l'un des membres de votre service informatique devra manuellement aller et réajuster et jusqu'à ce que cela se produise, un cache pour un et ce qu'ils appellent des fonctionnalités limitées, mais NCache le fait automatiquement juste ainsi. Donc, vous devez vous assurer que la haute disponibilité est vraiment là dans un cache.

Cache Client

J'ai déjà parlé de la vitesse InProc.

cache client

Réplication WAN

Il y a une autre fonctionnalité et maintenant c'est une fonctionnalité pour Enterprise Edition qui est que, si vous avez plusieurs centres de données vers lesquels de nombreuses applications ont maintenant été déplacées, en raison du cloud, il est plus facile de déployer des applications dans plusieurs régions.

diagramme-de-réplication-wan

Ainsi, si votre application est multi-centrée sur les données, votre cache peut également devoir être répliqué sur plusieurs et, comme il y a beaucoup de latence, vous ne pouvez pas vraiment faire en sorte que l'ensemble du cluster s'étende sur plusieurs régions. Donc, vous allez avoir un cluster dans un dans un cluster et il y a un pont entre les deux qui se réplique de manière asynchrone. Il s'agit donc d'un cas de réplication bidirectionnelle actif-actif et le pont résout les conflits car la même clé est mise à jour pour les deux endroits. Maintenant, vous avez garder une trace de cela.

NCache Démo

Laissez-moi vous montrer rapidement ce NCache ressemble à. Donc, j'ai Azure, donc j'ai essentiellement acheté ou provisionné, si je peux juste obtenir le portail, le voilà ! Donc, j'ai... c'est vraiment lent. Allez! Prendre quatre ouais, d'accord! Donc, nous avons quatre machines virtuelles et je suis connecté à l'une d'entre elles qui est le… Donc, j'ai essentiellement deux serveurs de cache, tous Windows, un client de cache Windows, un client de cache qui est Linux. Parce que c'est .NET core, je peux tout faire. Même les serveurs de cache peuvent être vivants mais NCache comme je l'ai dit est .net core vous pouvez donc simplement y aller, lorsque vous venez sur notre site Web, Just, vous pouvez en fait télécharger le .msi ou le Tar.gz selon vos préférences. Vous pouvez soit installer Windows ou Linux. En fait, vous pouvez également télécharger l'open source à partir d'ici. Notre entreprise est construite sur notre open source, nous sommes donc propriétaires de l'open source et d'une entreprise.

Créer un cache en cluster

Alors, laissez-moi vite maintenant, désolé, je vais créer un cluster de cache à 2 nœuds, encore une fois, cet outil n'est pas open source mais tout ce que vous pouvez faire en open source. C'est juste pas aussi joli. En fait, cela va être un outil basé sur le Web maintenant. Donc, je vais juste aller de l'avant. C'est mon premier serveur de cache. C'est mon deuxième serveur de cache. Donc, je vais faire un cluster de cache de deux serveurs. Je prendrai tous les autres défauts tels quels. Je vais continuer et ajouter deux clients, l'un est moi-même qui est le client Windows et le second j'ajouterai le client 10.0.0.7 et le client Linux. Commençons le cache. Je veux dire que c'est à quel point il est rapide pour vous de créer et de configurer des caches.

Simuler le stress et surveiller le cache

Je vais commencer mes premières statistiques à ce sujet. NCache est livré avec ce programme appelé outil de test de stress qui vous permet de simuler la charge sur NCache. Donc, c'est comme un programme. Il obtient des entrées par lui-même. J'ai PowerShell ouvert ici, donc je vais faire un test de stress et entrer le nom du cache qui est le nom du cache que je viens de donner ici, écrire ici, et j'ai en ce moment cette boîte, c'est la première. Donc, je vais dans la boîte client, donc je vais juste exécuter ceci et vous voyez qu'il y a soudainement une activité qui commence ici. Donc, je fais environ 500 opérations par seconde par boîte en ce moment, d'accord ? Alors, disons, je veux augmenter ma charge, je veux tester comment NCache va fonctionner dans mon environnement, donc je vais continuer et lancer une autre instance de la même chose sur la même boîte. Soudain, vous verrez que ma charge a presque doublé et maintenant j'ai deux machines Linux, comme vous pouvez le voir ici c'est Linux, c'est le . sept boîte qui est juste ici. Donc, je vais d'abord démarrer PowerShell ici, je veux juste copier rapidement ce module et je ferai le même cache de démonstration de test de stress et dès que je le ferai, vous verrez que cela a soudainement augmenté sur le point de avoir 60 ans…

ncachedémo

Ainsi, chaque fois que je fais cela, environ 500 opérations par seconde par boîte sont ajoutées. Je vais en faire une de plus et nous en aurons fini avec ça. J'ajouterai… Donc, vous pouvez continuer à ajouter de plus en plus de charge jusqu'à ce que vous voyiez qu'ils commenceront à atteindre leur maximum, puis vous ajouterez un troisième serveur. Et, bien sûr, vous devez également ajouter plus de clients. Tout cela est perf-mon que vous pouvez facilement surveiller, même dans des outils tiers. C'est aussi simple que ça l'est. Ce sont des éléments mis en cache que vous ajoutez.

Vous pouvez accéder au téléchargement de notre site Web, soit l'open source, donc l'open source est disponible, il y a aussi un programme d'installation MSI pour que vous téléchargiez l'open source. Ainsi, vous pouvez soit choisir l'open source, soit si vous êtes vraiment sûr de vouloir l'utiliser dans un environnement favorable, allez-y et téléchargez immédiatement Enterprise. Disons que si je viens à l'open source, vous pouvez donc télécharger le programme d'installation, de cette façon, vous n'aurez pas à être facturé pour le code source. Encore une fois, bien que tout le code source soit sur GitHub.

Que faire ensuite?

 

Inscrivez-vous à la newsletter mensuelle par e-mail pour obtenir les dernières mises à jour.

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