Top Banner

Click here to load reader

24

Terracotta jug

Jul 04, 2015

Download

Documents

Zenika
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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 ?