> Tech > Fonctionnalités de mise en cache distribuée

Fonctionnalités de mise en cache distribuée

Tech - Par Renaud ROSSET - Publié le 13 décembre 2010
email


Voici quelques aspects importants de la mise en cache distribuée pour les environnements d’informatique via Internet :

1. Performances et évolutivité : En premier lieu et avant tout, un cache distribué doit offrir des performances de pointe. Par ailleurs, il doit être capable d’évoluer

Fonctionnalités de mise en cache distribuée

en toute transparence avec les besoins de l’application. Dans ce contexte, l’évolutivité signifie que lorsque vous ajoutez des serveurs de cache à votre environnement, le volume des transactions par seconde doit augmenter de manière linéaire.

2. Fiabilité : Un cache distribué doit assurer une disponibilité élevée. Le terme désigne ici l’absence de perte de données, même en cas de panne d’un serveur de cache. Même si, dans de nombreux cas, vous disposez également de ces données dans une base de données, il reste extrêmement coûteux de reconstruire le cache au moment de l’exécution. Dans de nombreux autres cas, les données du cache ne sont pas stockées ailleurs du fait de leur nature temporaire (par ex. : données d’état de session ASP.NET) et vous ne pouvez absolument pas vous permettre de perdre ces données à partir du cache.

3. Disponibilité : La caractéristique essentielle suivante dans la liste est la haute disponibilité. Autrement dit, le cache constitue une zone de stockage pour votre application et, à ce titre, il doit être disponible en permanence. Si vous avez besoin d’ajouter ou de retirer un serveur de cache de votre cluster, vous devez pouvoir le faire sans rien arrêter. Cet aspect est crucial avec l’informatique via Internet, où vous étoffez ou allégez régulièrement votre configuration selon les niveaux de charge. Vous devez être capable de le faire sans interruption, ni arrêt.

4. Expirations : Ce mécanisme permet au cache de supprimer automatiquement un élément qu’il contient au bout d’un certain temps. Les expirations peuvent être définies sous forme de délai absolu ou de délai d’inactivité. L’expiration au bout d’un délai absolu supprime un élément à un instant donné et fait en sorte que l’élément placé dans le cache ne soit pas obsolète du fait d’un changement intervenu entre temps dans la base de données. L’expiration au bout d’un délai d’inactivité supprime un élément si personne n’y accède pendant un certain temps et vous permet de nettoyer automatiquement les éléments inutilisés.

5. Evictions : Un cache distribué stocke les données en mémoire et doit donc gérer les cas où il est saturé et a consommé toute la mémoire allouée. Lorsque le cache est plein, certains éléments doivent être supprimés pour faire de la place à de nouveaux. Ce mécanisme est appelé « éviction ». Un cache élimine automatiquement les éléments sur la base d’une stratégie d’éviction. Trois exemples fréquents sont employés : Utilisé le moins fréquemment (LFU), Utili – sé le moins récemment (LRU) et Priorité. Cer – tains caches vous permettent de spécifier qu’aucun élément ne doit être éliminé et que le cache ne doit plus rien accepter jusqu’à l’expiration automatique de certains éléments.

6. Gestion des relations de données : Aujourd’hui, la majorité des données sont de type relationnel, mais le cache n’est pas une base de données relationnelles en mémoire. Il s’agit plutôt d’un mécanisme de stockage à base de clés, lequel stocke un objet pour chaque clé. Mais cette approche ne gère pas les relations entre les différents éléments de données. Par exemple, un client peut avoir un ou plusieurs objets Order (commande) associés. Si vous supprimez le client du cache, vous souhaiterez peut-être aussi retirer tous ses objets Order. Un cache digne de ce nom doit prendre en charge cette fonctionnalité. En fait, ASP.NET Cache a introduit CacheDependency précisément pour ce type d’aspect.

7. Synchronisation de base de données : Les bases de données sont généralement partagées par plusieurs applications. Une application peut employer un cache distribué alors que d’autres ne le font pas. Dans ce cas, il arrive que les données dans la base de données soient actualisées par un autre application, d’où un cache avec des données obsolètes. Dans ce type de situation, un cache de qualité fournit une synchronisation de base de données. Ce faisant, le cache supprime ou recharge un élément si les données correspondantes sont mises à jour dans la base de données. Le cache détecte ce cas de figure au moyen d’événements déclenchés à partir de la base de données ou via des interrogations. Les deux méthodes sont pertinentes tant que la synchronisation se déroule au niveau lignes et que l’intervalle d’interrogation est configurable.

8. Lectures et écritures continues : Il existe deux méthodes d’utilisation d’un cache. L’une d’elle consiste, pour votre application, à conserver le cache « d’un côté ». Ce faisant, votre cache effectue directement les lectures et écritures sur la base de données. Toutes les données lues dans celle-ci sont placées dans le cache et toutes les mises à jour dans la base de données sont reflétées dans le cache. Avec la deuxième approche, votre application s’appuie sur le cache pour effectuer quasiment toutes les lectures et écritures sur la base de données. Ce faisant, votre application dialogue uniquement avec le cache. Dans ce cas, vous devez fournir des gestionnaires de lecture continue (read through) et d’écriture continue (write through). Votre code personnalisé est enregistré auprès du cache et est appelé par celui-ci chaque fois qu’il doit lire ou écrire des données sur la base de données.

9. Marquage : Le marquage ou tagging vous permet de regrouper arbitrairement des éléments mis en cache dans différentes catégories. Cette méthode est puissante pour assurer le suivi des différents éléments placés en cache et pour les gérer ultérieurement sous forme de groupe.

10. OQL (Object Query Language) : En général, un cache est un stockage du type clévaleur lorsque la valeur est un objet. Autrement dit, si vous souhaitez retrouver un objet il faut connaître sa clé. Si votre cache vous permet de rechercher les objets en fonction de leurs attributs, il constitue un outil extrêmement puissant. Avec OQL, il devient possible d’employer le cache largement comme une base de données via des requêtes similaires au SQL. Concernant les applications .NET, LINQ (Language Integrated Query) devient désormais un langage d’interrogation d’objets standard, d’où la nécessité pour les caches de le prendre en charge.

11. Evénements : La propagation d’événements est une bonne fonctionnalité à posséder pour les applications distribuées, les applications de calcul hautes performances ou plusieurs applications partageant des données via un cache. Cette fonction demande au cache de déclencher des événements dès que certaines choses surviennent dans celui-ci. Ensuite, votre application peut capturer les événements et agir en conséquence.

Téléchargez cette ressource

Comment sécuriser une PME avec l’approche par les risques ?

Comment sécuriser une PME avec l’approche par les risques ?

Disposant de moyens financiers et humains contraints, les PME éprouvent des difficultés à mettre en place une véritable stratégie de cybersécurité. Opérateur de services et d’infrastructures, Naitways leur propose une approche pragmatique de sécurité « by design » en priorisant les risques auxquelles elles sont confrontées.

Tech - Par Renaud ROSSET - Publié le 13 décembre 2010