Download - Terracotta jug

Transcript
Page 1: Terracotta jug

Zenika © 2010 1

Terracotta

Page 2: Terracotta jug

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

Page 3: Terracotta jug

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

Page 4: Terracotta jug

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

Page 5: Terracotta jug

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

Page 6: Terracotta jug

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

Page 7: Terracotta jug

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 »

Page 8: Terracotta jug

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...)

Page 9: Terracotta jug

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

Page 10: Terracotta jug

Zenika © 2010 10

TerracottaTerracotta

Page 11: Terracotta jug

Zenika © 2010 11

TerracottaTerracotta

Page 12: Terracotta jug

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

Page 13: Terracotta jug

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

Page 14: Terracotta jug

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>

Page 15: Terracotta jug

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

Page 16: Terracotta jug

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

Page 17: Terracotta jug

Zenika © 2010 17

Page 18: Terracotta jug

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

Page 19: Terracotta jug

Zenika © 2010 19

Page 20: Terracotta jug

Zenika © 2010 20

L'outillage

• Dev-console• Plugin Eclipse

Page 21: Terracotta jug

Zenika © 2010 21

L'outillage

Page 22: Terracotta jug

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

Page 23: Terracotta jug

Zenika © 2010 23

ConclusionConclusion

Terracotta everywhere

• Des clients prestigieux : • Sabre, • Walmart, • Monster...• Et vous ?

• Risque zéro car non intrusif

Page 24: Terracotta jug

Zenika © 2010 24

Questions ?