Les applications d'aujourd'hui doivent évoluer et gérer des niveaux extrêmes de charges de transactions. Mais les bases de données ne peuvent pas évoluer et deviennent donc un goulot d'étranglement. Pour résoudre ce problème, de nombreuses personnes se tournent vers cache distribué en mémoire car il évolue de manière linéaire et supprime les goulots d'étranglement de la base de données.
Un cache distribué contient généralement deux types de données, des données transactionnelles et des données de référence. Les données transactionnelles changent très fréquemment et sont donc mises en cache pendant une très courte période. Mais la mise en cache offre toujours une amélioration considérable des performances et de l'évolutivité.
Les données de référence, en revanche, ne changent pas très fréquemment. Il peut s'agir de données statiques ou de données dynamiques qui changent peut-être toutes les heures, tous les jours, etc. Parfois, ces données peuvent être énormes (en gigaoctets). Ce serait bien si ces données de référence pouvaient être préchargées dans un cache distribué lors du démarrage du cache, car vos applications n'auraient alors pas besoin de les charger au moment de l'exécution. Chargement des données de référence au moment de l'exécution ralentirait les performances de votre application, surtout s'il y a beaucoup de données.
NCache Détails NCache Docs Cache Loader et Refresher Docs
Comment les données de référence doivent-elles être préchargées dans un cache distribué ?
Une approche consiste à concevoir votre application de telle sorte qu'au démarrage de l'application, elle récupère toutes les données de référence requises de la base de données et les place dans le cache distribué.
Cependant, cette approche soulève d'autres problèmes. Tout d'abord, cela ralentit le démarrage de votre application car votre application est maintenant impliquée dans le préchargement du cache. Deuxièmement, si plusieurs applications partagent un cache distribué, soit vous avez une duplication de code dans chaque application, soit toutes vos applications dépendent d'une seule application qui précharge le cache distribué. Enfin, l'intégration du code de préchargement du cache dans votre application corrompt la conception de votre application car vous ajoutez du code qui n'appartient pas à votre application. Bien sûr, aucune de ces situations n'est très souhaitable.
Et si on donnait ça responsabilité du préchargement au cache distribué lui-même ? Dans ce cas, le préchargement peut faire partie du processus de démarrage du cache et n'implique donc pas du tout votre application. Vous pouvez configurer le cache pour précharger toutes les données requises au démarrage afin qu'elles soient disponibles pour toutes les applications à utiliser dès le début. Cela simplifie votre application car elle n'a plus à se soucier de la logique de préchargement.
NCache Détails NCache Docs Cache Loader et Refresher Docs
Préchargement des données de référence dans le cache
NCache fournit une fonctionnalité très puissante et flexible pour précharger votre cache au démarrage. Vous pouvez écrire un code personnalisé pour votre chargeur de cache et l'enregistrer avec NCache. Une fois cela fait, NCache appelle le chargeur de cache (avec votre code personnalisé) au démarrage du cache. Avant de passer à la mise en œuvre, apprenons d'abord à connaître les composants de base de NCache Chargeur de démarrage du cache.
- Service de chargeur : Pour une topologie en cluster, un serveur dédié service de chargeur s'exécute sur chaque nœud pour charger les données selon le asshttps://www.alachisoft.com/ressources/docs/ncache/prog-guide/cache-startup-loader-overview.html#loader-serviceigned ensemble de données. Cela améliore les performances de chargement en réduisant la charge sur le processus de cache.
- Jeux de données: Les données à charger sont divisées en ensembles de données logiques par l'utilisateur et distribué aux nœuds à l'aide de l'algorithme round-robin. Cela accélère le processus de chargement en réalisant le parallélisme.
Pour approfondir le NCache fonction de préchargement, vous pouvez voir la propriétés du chargeur de cacheD'ailleurs, NCache facilite également l'actualisation des données de cache chargées en fournissant le Rafraîchissement du cache fonction.
Implémenter l'interface ICacheLoader
Pour activer le préchargement à l'aide de NCache, vous devez implémenter une interface simple nommée ICacheLoader
. Il est appelé pour aider le cache à répondre à la question « Comment et quelles données charger ? ». Voici comment vous pouvez simplement personnaliser le code des méthodes suivantes de ICacheLoader
interface en fonction des besoins de votre entreprise.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
class CacheLoader : ICacheLoader { public void Init(IDictionary<string, string> parameters, string cacheName) { //connect to cache cache = CacheManager.GetCache(cacheName); //Connection string is passed as parameters at the time of configuration // connectionString = parameters.ContainsKey("ConnectionString") ? parameters["ConnectionString"] : null; if (connectionString != null) { //Let's connect to the database connection = new SqlConnection(connectionString); } } public object LoadDatasetOnStartup(string dataSet) { // Create a list of datasets to load at cache startup IList<object> datasetToLoad; if (dataSet != null) { switch (dataSet.ToLower()) { // If dataset is "products", fetch products from data source to load in cache case "products": datasetToLoad = FetchProductsFromDataSource(); // Insert fetched product in the cache // You can also use NCache bulk API to insert data into cache foreach (var product in datasetToLoad) { string key = $"ProductID:{product.Id}"; cache.Insert(key, product); } break; // You can add more cases for different datasets as per requirement and fetch them from the data source default: // Invalid dataset throw new Exception($"Unknown dataset is configured. Dataset {dataSet}"); break; } } return null; } } |
Toute exception qui s'est produite lors du traitement du chargeur de démarrage est consignée sans créer de problème pour votre application. Simple et efficace !
Configurer le chargeur de démarrage
Une fois que vous avez implémenté Cache Startup Loader, vous pouvez le configurer pour votre cache, en utilisant NCache Gestionnaire Web. Vous pouvez activer le chargeur de cache à partir de la page de configuration détaillée du cache dans NCache Gestionnaire Web. Pour des étapes détaillées, vous pouvez vous référer à la configuration du chargeur de démarrage du cache à l'aide de NCache Web Manager.
Vous pouvez également ajouter et supprimer des ensembles de données dans un cache avec le chargeur de cache configuré à l'aide de Add-StartupLoader
ainsi que Remove-StartupLoader
Applets de commande PowerShell, respectivement. Vous pouvez voir les exemples pertinents pour ajouter un jeu de données de chargeur ainsi que supprimer le chargeur de démarrage pour une meilleure compréhension.
Conclusion!
Comme vous pouvez le voir, NCache vous fournit un mécanisme puissant pour précharger votre cache distribué et maintenir les performances de vos applications toujours élevées. Outre, NCache facilite également l'actualisation des données de cache chargées en fournissant le Rafraîchissement du cache fonctionnalité. Alors, téléchargez NCache maintenant et préparez-vous à utiliser ses vastes fonctionnalités !
C'est en réalité une information intéressante et utile. Je suis satisfait que vous ayez partagé cette information utile avec nous.
S'il vous plaît rester nous a informés de ce genre. Merci pour le partage.
Bonjour, j'ai trouvé votre site web grâce à
Google lors de la recherche d'un sujet similaire, votre site Web est arrivé ici
haut, ça a l'air d'être bon. Je l'ai mis en signet dans mes favoris google.
Bonjour, je suis simplement devenu alerte sur votre blog via Google et j'ai trouvé qu'il était vraiment informatif.
Je vais faire attention aux choux de Bruxelles. J'apprécierai si vous continuez ceci
dans le futur. Beaucoup de gens en profiteront probablement
de votre écriture. À votre santé!