Zenika © 2010 1
Terracotta
Zenika © 2010 2
ProblématiqueProblématique
Des clients toujours plus exigeants
Demande croissante• En puissance de calcul
• applications financières, • calcul scientifique...
• En taille des données manipulées • Catalogues produits (Amazon, Walmart...)• Statistiques, reporting...
→ Nécessité de déployer des clusters
Zenika © 2010 3
ProblématiqueProblématique
Problématiques d'architecture
• Synchronisation des noeuds : • Compromis intégrité / performance • Stratégies : réplication, broadcast invalidation...
• Résilience aux pannes : • Une ferme de petites machines « jetables » est moins
coûteuse qu'un gros système• Mais leur mémoire locale est volatile
Zenika © 2010 4
ProblématiqueProblématique
Solution traditionnelle : • Clients stateless• Données sécurisées en base de données, y compris les données
temporaires → BDD obèse et engorgement réseau
Zenika © 2010 5
ProblématiqueProblématique
Problématiques de programmation
Les applications deviennent plus complexes :• Mono-thread : facile à programmer• Multi-thread : synchronisation nécessaire, mais JMM respecté• Cluster : JMM non respecté
→ Réécriture / réarchitecture nécessaire pour intégrer des frameworks de clustering ou du code custom
Zenika © 2010 6
TerracottaTerracotta
Terracotta
• Présentation• Use-cases principaux• Architecture• Deux modes de fonctionnement• La plateforme DSO• Les TIMs• Les produits• Scalabilité• L'outillage
Zenika © 2010 7
TerracottaTerracotta
Présentation
• "Java Clustered Edition"• Network Attached Memory
• partage et synchronisation d'une zone mémoire entre les JVM• Synchronisation des threads sur le cluster
• Garantit l'application du JMM sur l'ensemble du cluster• Locks• Visibilité• « Happens before »
Zenika © 2010 8
TerracottaTerracotta
Use-cases principaux
• Clustering de sessions HTTP• Clustering de caches (EHCache, Hibernate L2...)• Grilles de calcul type master/worker• Synchronisation d'applications (sémaphores, latches...)
Zenika © 2010 9
TerracottaTerracotta
Architecture
• Serveur : • Gère la synchronisation des clients (données et locks)• Sauvegarde la mémoire dans une base locale (BerkeleyDB)• Utilise un Distributed Garbage Collector pour nettoyer la
mémoire partagée
• Clients (JVMs) :• Utilisent un Bootjar ou un Agent Terracotta pour communiquer
avec le serveur• Accèdent à la zone mémoire partagée de manière
transparente
Zenika © 2010 10
TerracottaTerracotta
Zenika © 2010 11
TerracottaTerracotta
Zenika © 2010 12
TerracottaTerracotta
Deux modes de fonctionnement
• Identity• Instrumentation des classes• Synchronise les deltas d'objets uniquement• Fonctionne sur des objets non Serializable• requiert un bootjar et de la configuration XML
• Express• Utilise la sérialisation Java standard• Synchronise les graphes entiers d'objets Serializable• Plus simple à utiliser
Zenika © 2010 13
TerracottaTerracotta
La plateforme DSO • Configurée via tc-config.xml• Roots
• Racines des graphes d'objets à partager• Locks
• Réutilisation des locks présents dans le code• Ou locking externe, déclaratif (pour configurer du code tiers)
• Tims• Terracotta Integration Modules
Zenika © 2010 14
<tc-config> <application> <dso> <instrumented-classes> <include> <class-expression> com.zenika.terracotta.model..* </class-expression> </include> </instrumented-classes> <locks> <autolock> <lock-level>write</lock-level> <method-expression> * com.zenika.terracotta.model..*.*(..) </method-expression> </autolock> </locks> </dso> </application></tc-config>
Zenika © 2010 15
TerracottaTerracotta
Les TIMs
• Fragments de configuration packagés et réutilisables• Disponibles pour la majorité des serveurs et frameworks :
• Tomcat, • Spring, • Ehcache, • Wicket...
• Facile de créer un Tim personnalisé, pour un framework maison par exemple
• Plugin Maven
Zenika © 2010 16
TerracottaTerracotta
Les produits
• Session clustering : clusterise les maps des sessions
• EHCache : assure l'intégrité du cache sur le cluster et une réplication efficace.
• Hibernate 2nd level cache • Quartz scheduling : permet de
synchroniser et de garantir l'exécution des jobs
Zenika © 2010 17
Zenika © 2010 18
TerracottaTerracotta
Scalabilité
• Montée en charge quasi-linéaire• Plus de puissance de calcul : augmenter le nombre de clients
(serveurs web...)• Plus de données manipulées : augmenter le nombre de serveurs
Terracotta• Choisir la bonne distribution Terracotta:
• Terracotta DX : opensource, serveurs en mode actif / passif, console de développement
• Terracotta EX : + support• Terracotta FX : + server array, go-live pack, console
d'opérations
Zenika © 2010 19
Zenika © 2010 20
L'outillage
• Dev-console• Plugin Eclipse
Zenika © 2010 21
L'outillage
Zenika © 2010 22
ConclusionConclusion
Bénéfices
• Clustering as a platform service : • transparent pour le programmeur• Montée en charge linéaire par configuration
• Simple d'utilisation grâce aux Produits• Bien outillé
• Console de développement• Plugin Eclipse
Zenika © 2010 23
ConclusionConclusion
Terracotta everywhere
• Des clients prestigieux : • Sabre, • Walmart, • Monster...• Et vous ?
• Risque zéro car non intrusif
Zenika © 2010 24
Questions ?
Top Related