Présentation générale de WebSphere eXtreme Scale

WebSphere eXtreme Scale est une grille de données élastique et évolutive, entièrement présente en mémoire. La grille de données met en cache, partitionne, réplique et gère les données et la logique métier sur plusieurs serveurs. WebSphere eXtreme Scale traite avec une extrême efficacité des transactions en quantités massives tout en pouvant monter en puissance de manière linéaire. WebSphere eXtreme Scale permet également de bénéficier de qualités de services comme l'intégrité transactionnelle, la haute disponibilité et la prévisibilité des temps de réponse.

WebSphere eXtreme Scale est utilisable de plusieurs manières différentes. Vous pouvez utiliser le produit comme un cache extrêmement puissant, comme espace de traitement de base de données interne pour gérer l'état des applications ou pour créer applications Extreme Transaction Processing (XTP). Ces fonctionnalités XTP incluent une infrastructure d'application pour prendre en charge vos applications stratégiques les plus exigeantes.

Elasticité de l'évolutivité

L'élasticité de l'évolutivité est possible grâce à l'utilisation de la mise en cache répartie des objets. Son extensibilité élastique permet à la grille de se surveiller et de se gérer elle-même. La grille de données peut ajouter ou supprimer des serveurs de la topologie, ce qui augmente ou diminue, la mémoire, le débit réseau et la capacité de traitement en fonction des besoins. Lorsqu'un processus scale-out est lancé, de la capacité est ajoutée à la grille de données lorsqu'elle est en cours d'exécution sans avoir à la redémarrer. Inversement, un scale-in supprimera de la capacité, tout aussi immédiatement. La grille de données se répare elle-même automatiquement en reprenant son activité après des pannes.

WebSphere eXtreme Scale ou base de données interne

WebSphere eXtreme Scale ne peut pas être considéré réellement comme une base de données interne. Une base de données interne est trop simple pour pouvoir gérer certaines des complexités que WebSphere eXtreme Scale peut gérer. Si un serveur d'une base de données interne est défaillant, le serveur ne peut pas résoudre le problème. Un incident peut être désastreux si l'ensemble de votre environnement se trouve sur ce serveur.

Pour résoudre ce problème, eXtreme Scale fractionne le jeu de données concerné en partitions qui sont équivalentes à des schémas arborescents soumis à des contraintes. Ces schémas décrivent les relations entre les entités. Lorsque vous utilisez des partitions, les relations des entités doivent modéliser une structure de données arborescente. Dans cette structure, la tête de l'arborescence est l'entité racine et la seule entité partitionnée. Toutes les entités enfants de cette entité racine sont stockées dans la même partition que leur entité racine. Chaque partition existe sous la forme d'une copie primaire (fragment). Les partitions contiennent également des fragments de réplique destinés à sauvegarder les données. Une base de données interne ne peut pas fournir cette fonction, car elle n'est ni structurée ni dynamique de cette manière. Avec une base de données interne, vous devez implémenter les opérations que WebSphere eXtreme Scale n'implémente pas automatiquement. Vous pouvez exécuter des opérations SQL sur des bases de données en mémoire pour améliorer la vitesse de traitement par rapport aux bases de données qui ne sont pas en mémoire. WebSphere eXtreme Scale possède son propre langage de requêtes à la place de SQL. Ce langage de requête plus élastique, permet de partitionner les données et fournit une fonction de récupération fiable après incident.

WebSphere eXtreme Scale avec des bases de données

Sa fonctionnalité de cache en écriture différée permet à WebSphere eXtreme Scale de servir de cache frontal à une base de données. L'utilisation de ce cache frontal augmente les débits tout en déchargeant et en libérant la base de données. WebSphere eXtreme Scale fournit une évolutivité croissante et décroissante à des coûts de traitement prévisibles.

L'illustration suivante montre que dans un environnement de cache cohérent et réparti, les clients eXtreme Scale envoient des données à la grille de données et en reçoivent. La grille de données peut être automatiquement synchronisée avec un magasin de données dorsal. Le cache est dit cohérent car les clients y voient tous les mêmes données. Chaque élément de donnée est stocké exactement sur un seul serveur inscriptible dans le cache. L'existence d'une copie de chaque élément de données permet d'éviter la prolifération des copies d'enregistrements qui peuvent contenir des versions différentes des données. Un cache cohérent contient de plus en plus de données au fur et à mesure que l'on ajoute des serveurs à la grille et le cache évolue de manière linéaire au fur et à mesure que la grille croît en taille. Les données peuvent également être répliquées, si l'on souhaite bénéficier de la tolérance aux pannes.
Figure 1. Topologie globale
Topologie générale

WebSphere eXtreme Scale utilise des serveurs, appelés serveurs de conteneur, qui fournissent sa grille de données en mémoire. Ces serveurs peuvent s'exécuter dans WebSphere Application Server ou sur de simples machines JVM (Java Standard Edition (J2SE) Java). Plusieurs serveurs de conteneur peut s'exécuter sur un seul serveur physique. En conséquence, la grille de données en mémoire peut être volumineuse. La grille n'est pas limitée par la mémoire ou l'espace adresse de l'application ou du serveur d'applications et elle n'a aucun impact sur cette mémoire ou cet espace adresse. La mémoire peut correspondre à la somme de la mémoire de centaines, voire de milliers de machines virtuelles Java exécutées sur de nombreux serveurs physiques différents.

En tant qu'espace de traitement de base de données en mémoire, WebSphere eXtreme Scale peut s'appuyer sur un disque, dans une base de données ou les deux.

Bien que eXtreme Scale fournisse plusieurs API Java, la plupart des cas d'utilisation ne nécessite aucune programmation de la part de l'utilisateur, mais simplement d'exécuter des opérations de configuration et de déploiement dans l'infrastructure WebSphere.

Présentation de la grille de données

L'interface de programmation simple eXtreme Scale est l'interface ObjectMap qui est une simple interface de mappage comprenant une méthode map.put(key,value) pour placer une valeur dans le cache et une méthode map.get(key) pour extraire la valeur.

Le paradigme fondamental d'une grille de données est la paire clé-valeur où la grille stocke des valeurs (des objets Java) en leur associant une clé (un autre objet Java). La clé permet ultérieurement de récupérer la valeur. Dans eXtreme Scale, les mappes sont constituées d'entrées qui ne sont autres que ces paires clé-valeur.

WebSphere eXtreme Scale offre un grand nombre de configurations de grille, allant d'un simple cache local unique à un énorme cache réparti utilisant une multiplicité de machines virtuelles Java ou de serveurs.

Outre les objets Java, il est possible de stocker des objets avec des relations. Il est possible d'utiliser un langage de requêtes semblable à SQL avec des instructions SELECT… FROM … WHERE pour extraire ces objets. Ainsi, un objet Commande sera associé à un objet Client et à plusieurs objets Articles. Dans WebSphere eXtreme Scale, les relations peuvent être de type un à un, un à plusieurs, plusieurs à un ou plusieurs à plusieurs.

WebSphere eXtreme Scale prend également en charge une interface de programmation EntityManager pour le stockage des entités dans le cache. Cette interface de programmation s'apparente aux entités dans Java Enterprise Edition. Les relations entre entités peuvent être détectées automatiquement à partir d'un fichier XML de descripteur d'entité ou d'annotations dans les classes Java. Vous pouvez extraire une entité à partir de la mémoire cache en fonction de la clé primaire à l'aide de la méthode find de l'interface EntityManager. Les entités peuvent être conservées dans la grille de données ou être retirées de cette dernière, le tout au sein d'une limite de transaction.

Prenons un exemple de cache réparti où la clé est un simple nom alphabétique. Le cache pourra être fractionné en quatre partitions en fonction des clés : partition 1 pour les clés qui commencent par A-E, partition 2 pour celles qui commencent par F-L, etc. Pour garantir la disponibilité, une partition dispose d'un fragment principal et d'un fragment de réplique. Les modifications apportées aux données du cache sont reportées dans le fragment primaire et répliquées dans le fragment de réplique. Vous configurez le nombre de serveurs qui contiennent les données de grille de données et eXtreme Scale répartit les données dans des fragments sur ces instances de serveurs. Pour assurer la disponibilité, les fragments de réplique sont placés sur des serveurs physiques différents des fragments primaires.

WebSphere eXtreme Scale utilise un service de catalogue pour repérer le fragment primaire de chaque clé. Il gère le transfert des fragments entre les serveurs eXtreme Scale lorsque les serveurs physiques sont défaillants et redeviennent fonctionnels. Si, par exemple, le serveur contenant un fragment réplique tombe en panne, eXtreme Scale allouera un nouveau fragment réplique. Si un serveur contenant un fragment primaire est défaillant, le fragment de réplique devient le fragment primaire. Comme précédemment, un nouveau fragment de réplique est alors construit.