Le passage à l échelle de serveur J2EE : le cas des EJB Sylvain Sicard, Noël De Palma, Daniel Hagimont CFSE 4 5-8 Avril 2005 LSR 1
Plan de la présentation 1. Architecture de serveur J2EE en grappe 2. Problématique & motivations 3. Politique de réplication 4. Politique de partitionnement 5. Politique hybride 6. Conclusion et perspectives 2
Architecture J2EE Tier Web Tier Présentation Tier métier Données de l applicationl Page HTML Servlet EJB Apache Tomcat JOnAS MySQL Génération de contenu dynamique 3
Serveur J2EE en grappe Passage à l échelle des serveurs J2EE Réplication de serveurs Gain en capacité de calcul Tolérance aux pannes Cohérence en cas de pannes (transactions) Disponibilité (redondance) Apache Tomcat JonAS Mysql JK CMI C-JDBC 4
Problématique Réplication de serveurs d EJB : CMI Réplication "banalisée" des serveurs : clonage à l identique Intergiciel Application Répartition Round-Robin des requêtes Cache désactivd sactivé Car une écriture DB peut rendre invalide le cache Tomcat Jonas1 A écriture CMI A Jonas2 A invalide Base de Données 5
Motivations Spécialisation de serveur Serveurs dédid diés àunsous-ensemble de Beans Répartitions des requêtes en fonction des Beans auxquels on accède Possibilité d utiliser un cache Jonas1 Jonas2 A D B E C F Application J2EE Partitionnement de l application 6
Performances de CMI RMI MySQL Client Apache Tomcat JonAS C-Jdbc RMI Cache activé CMI Client JOnAS Apache Tomcat C-Jdbc MySQL CMI Cache désactivd sactivé 7
Banc d essai : RUBiS Rice University Bidding System Implémentation d un site Web de e-commerce Modélisé d après www.ebay.com Emulateur de clients Monitoring du serveur J2EE Application J2EE (Façade Session Bean ) Gestion de la persistance via le conteneur (CMP) 8
Performances de CMI Débit du serveur J2EE en nombre de requêtes par seconde en fonction du nombre de clients Un JOnAS - RMI Deux JOnAS - CMI 30 nombre de requêtes par seconde 25 20 15 10 5 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 nombre de clients 9
Équilibrage avec placement (1/4) BUT : Redondance de JOnAS avec cache Les Beans sont affectés à un serveur unique. Pas de duplication de Beans. Permet l utilisation d un cache. Jonas A, B C, D E, F 10
Équilibrage avec placement (2/4) Placement statique Les Beans sont statiquement affectés à un serveur unique. Communication entre objet distant : RMI Jonas Tomcat? Routage des requêtes A, B C, D E, F 11
Équilibrage avec placement (3/4) Routage des requêtes Localisation du Bean : information dans le Stub (talon client du modèle client-serveur) Routage implicite via les Stubs JNDI Tomcat C? C Jonas 3 A Jonas 1 B Jonas 2 C Jonas 3 A Jonas 1 B Jonas 2 C.Do(); C Jonas 3 12
Équilibrage avec placement (4/4) Débit du serveur J2EE en nombre de requêtes par seconde en fonction du nombre de clients Deux JOnAS - CMI Deux JOnAS - RMI - Partition 25 nombre de requêtes par seconde 20 15 10 5 0 10 30 50 70 90 110 130 150 170 190 210 230 250 270 290 nombre de clients 13
Fonctionnement détaillé de CMI JNDI JOnAS 1 Servlet 1 Localisation de La factory 2 Localisation d un Bean Factory 1 Factory 2 Bean 3 Utilisation du Bean Bean Factory : Usine à Bean -Permet leur création -Permet de les retrouver JNDI Factory 1 Factory 2 Bean Bean JOnAS 2 14
Fonctionnement détaillé du partitionnement 1 Localisation de La factory JNDI JOnAS 1 Servlet 2 Localisation d un Bean Factory 2 3 Utilisation du Bean Bean Factory 1 Bean JOnAS 2 15
Partitionnement & réplication de JNDI (1/2) Servlet 2 Localisation d un Bean 3 Utilisation du Bean Factory 2 JOnAS 1 Bean 1 Localisation de La factory JNDI JNDI JNDI Factory 1 Bean JOnAS 2 16
Partitionnement & réplication de JNDI (2/2) 25 Débit du serveur J2EE en nombre de requêtes par seconde en fonction du nombre de clients Deux JOnAS CMI Deux JOnAS - RMI - partition Deux JOnAS - RMI - partition - JNDI répliqué requêtes par seconde 20 15 10 5 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 Nombre de clients 180 190 200 210 220 230 240 250 260 270 280 290 300 17
Politique hybride (1/2) Principe de la solution Réplication des EJBs accédés en lecture seule Partition des EJBs accédés en lecture/écriture criture Factory 1 Factory 2 Factory de Bean accédés en écriture Servlet JNDI JNDI JNDI Factory 4 JOnAS 1 Factory 3 Factory de Bean accédés en lecture Factory 4 JOnAS 2 18
Politique hybride (2/2) Débit du serveur J2EE en nombre de requêtes par seconde en fonction du nombre de clients Deux JOnAS - CMI Deux JOnAS - Hybride 35 requêtes par seconde 30 25 20 15 10 5 0 10 30 50 70 90 110 130 150 170 190 210 230 250 270 290 Nombre de clients 19
Conclusion La réplication du tier métier pose le problème de la cohérence des caches locaux, d où la désactivation Les méthodes de partitionnement des données manipulées en écriture permettent de lever ce problème Une évaluation expérimentale de cette approche montre un gain significatif des performances Perspectives Comparaison à un cache répartis Partitionnement par bean (et pas par factory) Migration des Beans 20