SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
@ljacomet#ehcachedvx
Caching reboot
javax.cache & Ehcache 3
@ljacomet#ehcachedvx
Au menu
• Mise en bouche: Pourquoi un cache?
• Entrée : JSR-107
• APIs et fonctionnalités
• Plat principal : Une application et son cache
• Cache aside
• Cache through
• Dessert : Stratégie de résilience
• Mignardises
@ljacomet#ehcachedvx
T’es qui toi?
• Louis Jacomet
• Développeur plus vers la 40aine que la 20aine
• Ingénieur chez Terracotta (Software AG) depuis 2013
• Travaille sur Ehcache OS et Entreprise principalement
• aussi un peu manager et responsable infrastructure
• Ne sais pas faire une (jolie) UI - surtout web
• mais aime bien la concurrence, se torturer pour faire une
belle API, …
@ljacomet#ehcachedvx
Disclaimer
Tout ce que je dis ne peux pas être
retenu contre moi ou mon employeur.
Et rien n’est garanti d’ailleurs!
Mise en bouche
Pourquoi un cache?
@ljacomet#ehcachedvx
Pourquoi un cache?
@ljacomet#ehcachedvx
Et en français?
• Minute:
• Accès  cache  L1                              0,5  s      Un  battement  de  coeur  
• Erreur  de  branche                        5      s      Bailler  
• Accès  cache  L2                              7      s      Bailler  un  lendemain  de  veille  
• Mutex  lock/unlock                      25      s      Faire  un  café  
• Heure:
• Accès  RAM                                    100      s      Se  brosser  les  dents  
• Compression  de  1K                      50      min  Un  episode  de  votre  série  
• Jour:
• Envoyer  2KB  avec  réseau  Gb      5,5  h      Votre  après  midi  de  boulot
@ljacomet#ehcachedvx
Et en français?
• Semaine:
• Lecture  aléatoire  SSD                      1,7  j            Un  week-­‐end  
• Lire  en  séquence  1  MB  de  RAM        2,9  j            Un  long  week-­‐end  
• Aller-­‐retour  dans  un  datacenter  5,8  j            Des  vacances  
• Lire  en  séquence  1MB  du  SSD        11,6  j            15  jours  pour  être  livré  
• Année:
• Localiser  sur  un  HDD                      16,5  sem        Semestre  à  l’école  
• Lire  en  séquence  1MB  du  HDD          7,8  mois      Presque  un  bébé  
• Décennie:
• Un  paquet  fait  le  tour  du  monde  4,8  années  Votre  doctorat
@ljacomet#ehcachedvx
C’est quoi un cache?
• Une structure de données contenant une copie temporaire de
certaines données
• Compromis entre une augmentation de la consommation
mémoire et une réduction de latence
• Cibles :
• Données qui sont ré-utilisées
• Données qui sont chères à récupérer / calculer
@ljacomet#ehcachedvx
Ehcache (3)
• Nouvelle version - intégration de premier plan avec JSR-107
• Développement complètement OpenSource
• https://github.com/ehcache/ehcache3
• Hangout public en moyenne 1 fois par semaine (en anglais)
Entrée
JSR-107 - javax.caching
@ljacomet#ehcachedvx
JSR-107
• Vieux JSR
• Commencé en 2001
• Approuvée récemment (Mars 2014)
• javax.caching API + TCK + implémentation de référence
• Facilite l’intégration d’un cache dans les frameworks
• Discussion pour la version 2.0 en cours
• Fonctionnalités asynchrones
@ljacomet#ehcachedvx
JSR-107 : Fonctionnalités
•CacheManager / Cache  
•Expiration
•Creation/Access/Update
•Intégration
•CacheLoader / Writer
•CacheEntryListener
•Created/Updated
•Removed/Expired
•Accès ancienne valeur
•Mutations en place
•Annotations
•MBeans
•Accès configuration
•Statistiques
•Pas de contrôle de
capacité !
@YourTwitterHandle@YourTwitterHandle@ljacomet#ehcachedvx
Demo
Plat principal
Une application et son cache
@ljacomet#ehcachedvx
public ObjetMetier calculeEtGagne(String param1, String
param2) {


String cle = composeCle(param1, param2);

ObjetMetier resultatEnCache = cache.get(cle);


if (resultatEnCache == null) {

resultatEnCache = chargeEtCalcule(param1, param2);

cache.put(cle, resultatEnCache);

}

return resultatEnCache;

}
Cache Aside
@ljacomet#ehcachedvx
Cache Aside : pas si simple
• Nécessite de la coordination entre
• le cache
• et le système de référence
• Pas d’option de locking
• Potentiel pour devenir laid et problématique très rapidement
@ljacomet#ehcachedvx
Cache Aside: options
• Utilisez les abstractions de votre framework préféré
• Spring Caching
• Hibernate
• …
• Alternatives ?
@ljacomet#ehcachedvx
public ObjetMetier calculeEtGagne(String param1, String
param2) {

return cache.get(composeCle(param1, param2));

}
Cache Through
@ljacomet#ehcachedvx
Cache Through
Cache
Application
code
RDBMS
@ljacomet#ehcachedvx
Cache Through
• get* => CacheLoader
• un cache miss veut dire pas de données
• put* => CacheWriter
• chaque entrée signifie une écriture dans le système de
données
• Contraintes:API des CacheLoader / CacheWriter
@ljacomet#ehcachedvx
Cache Through : JSR-107
• Particularités … particulières …
• putIfAbsent(K key,V value): boolean
• Ignore le CacheLoader mais pas le CacheWriter
• Ehcache 3 permet de changer ce comportement par
configuration
• Comportement généralisé aux opérations atomiques
@ljacomet#ehcachedvx
Cache Through : Write Behind
• L’accès au système de référence se fait de manière asynchrone
• Le thread utilisateur ne paye plus la latence
• Introduit son lot de complexité
• File d’écriture persistante ou non ?
• Risque de mutation appliquée plusieurs fois en cas d’erreur
• Quid en cas d’eviction ?
Dessert
Stratégie de résilience
@ljacomet#ehcachedvx
Stratégie de résilience
• Postulat:
“Une erreur au niveau du cache
ne devrait pas être la cause
d’une erreur pour l’utilisateur “
P.S. Ceci est en cours de développement et donc peut
encore changer
@ljacomet#ehcachedvx
Ehcache 3
• Gestion des erreurs au maximum en interne
• cache simple en mémoire => pas d’exception dans le thread
d’exécution
• Log par défaut, possibilité de remplacer l’implémentation
• Mise en évidence pour l’applicatif des cas résultant en une
possible incohérence du cache
Mignardises
Ehcache 3 et Terracotta
@ljacomet#ehcachedvx
Implémentation offheap
• Résoudre le problème des pauses liées au Garbage Collector
• Possibilité de scale-up du cache
• Plusieurs TerraBytes … si le serveur le permet
• Implémentation validée par plusieurs années de production
• 2.0.0 disponible sur GitHub
• https://github.com/Terracotta-OSS/offheap-store
@ljacomet#ehcachedvx
Support du clustering
• Partage de données au travers de plusieurs JVM
• Terracotta 4.3.0 offre à nouveau une option de clustering
OpenSource
• Intégration avec Ehcache 2.10.0
• Ehcache 3 aura aussi une option de clustering OpenSource
• Détails à venir
@YourTwitterHandle@YourTwitterHandle@ljacomet#ehcachedvx
Questions ?

Contenu connexe

Tendances

Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureFlorian Hussonnois
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupHervé Rivière
 
Comment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesComment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesEDB
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantALTIC Altic
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapideBilal Baltagi
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorFlorian Beaufumé
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en JavaFlorian Beaufumé
 
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comDamien Krotkine
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage GoSylvain Wallez
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013vberetti
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandraDuyhai Doan
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Jonathan Le Guellec
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Steven VAN POECK
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudAlain Ganuchaud
 
Performance serveur et apache
Performance serveur et apachePerformance serveur et apache
Performance serveur et apacheafup Paris
 

Tendances (20)

Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & Architecture
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User Group
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
Comment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesComment sauvegarder correctement vos données
Comment sauvegarder correctement vos données
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performant
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapide
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en Java
 
WebSocket avec Java EE 7
WebSocket avec Java EE 7WebSocket avec Java EE 7
WebSocket avec Java EE 7
 
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage Go
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandra
 
Devoxx fr 2015 HAProxy
Devoxx fr 2015 HAProxyDevoxx fr 2015 HAProxy
Devoxx fr 2015 HAProxy
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
 
Performance serveur et apache
Performance serveur et apachePerformance serveur et apache
Performance serveur et apache
 

En vedette

Caching principles-solutions
Caching principles-solutionsCaching principles-solutions
Caching principles-solutionspmanvi
 
Terracotta Java Scalability - Stateless Versus Stateful Apps
Terracotta Java Scalability - Stateless Versus Stateful AppsTerracotta Java Scalability - Stateless Versus Stateful Apps
Terracotta Java Scalability - Stateless Versus Stateful AppsMatthew McCullough
 
Exploring Terracotta
Exploring TerracottaExploring Terracotta
Exploring TerracottaAlex Miller
 
Scale ColdFusion with Terracotta Distributed Caching for Ehchache
Scale ColdFusion with Terracotta Distributed Caching for EhchacheScale ColdFusion with Terracotta Distributed Caching for Ehchache
Scale ColdFusion with Terracotta Distributed Caching for EhchacheColdFusionConference
 
Building High Scalability Apps With Terracotta
Building High Scalability Apps With TerracottaBuilding High Scalability Apps With Terracotta
Building High Scalability Apps With TerracottaDavid Reines
 
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionAdvanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionColdFusionConference
 
Introduction to Terracotta
Introduction to TerracottaIntroduction to Terracotta
Introduction to TerracottaCris Holdorph
 
Clustering Java applications with Terracotta and Hazelcast
Clustering Java applications with Terracotta and HazelcastClustering Java applications with Terracotta and Hazelcast
Clustering Java applications with Terracotta and Hazelcastb0ris_1
 
Scaling Hibernate with Terracotta
Scaling Hibernate with TerracottaScaling Hibernate with Terracotta
Scaling Hibernate with TerracottaAlex Miller
 
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...Patrick J. Morrissey
 
Terracotta And Hibernate
Terracotta And  HibernateTerracotta And  Hibernate
Terracotta And HibernateTaylor Gautier
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 

En vedette (16)

Caching principles-solutions
Caching principles-solutionsCaching principles-solutions
Caching principles-solutions
 
Memcache
MemcacheMemcache
Memcache
 
Aop clustering
Aop clusteringAop clustering
Aop clustering
 
Terracotta Java Scalability - Stateless Versus Stateful Apps
Terracotta Java Scalability - Stateless Versus Stateful AppsTerracotta Java Scalability - Stateless Versus Stateful Apps
Terracotta Java Scalability - Stateless Versus Stateful Apps
 
Exploring Terracotta
Exploring TerracottaExploring Terracotta
Exploring Terracotta
 
5 Reasons to Upgrade Ehcache to BigMemory Go
5 Reasons to Upgrade Ehcache to BigMemory Go5 Reasons to Upgrade Ehcache to BigMemory Go
5 Reasons to Upgrade Ehcache to BigMemory Go
 
Scale ColdFusion with Terracotta Distributed Caching for Ehchache
Scale ColdFusion with Terracotta Distributed Caching for EhchacheScale ColdFusion with Terracotta Distributed Caching for Ehchache
Scale ColdFusion with Terracotta Distributed Caching for Ehchache
 
Building High Scalability Apps With Terracotta
Building High Scalability Apps With TerracottaBuilding High Scalability Apps With Terracotta
Building High Scalability Apps With Terracotta
 
Terracotta Hadoop & In-Memory Webcast
Terracotta Hadoop & In-Memory WebcastTerracotta Hadoop & In-Memory Webcast
Terracotta Hadoop & In-Memory Webcast
 
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionAdvanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
 
Introduction to Terracotta
Introduction to TerracottaIntroduction to Terracotta
Introduction to Terracotta
 
Clustering Java applications with Terracotta and Hazelcast
Clustering Java applications with Terracotta and HazelcastClustering Java applications with Terracotta and Hazelcast
Clustering Java applications with Terracotta and Hazelcast
 
Scaling Hibernate with Terracotta
Scaling Hibernate with TerracottaScaling Hibernate with Terracotta
Scaling Hibernate with Terracotta
 
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...
 
Terracotta And Hibernate
Terracotta And  HibernateTerracotta And  Hibernate
Terracotta And Hibernate
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 

Similaire à Caching reboot: javax.cache & Ehcache 3

Direct memory 3_devoxx_fr_2012-2.04.18
Direct memory 3_devoxx_fr_2012-2.04.18Direct memory 3_devoxx_fr_2012-2.04.18
Direct memory 3_devoxx_fr_2012-2.04.18Benoit Perroud
 
Direct memory @ devoxxfr
Direct memory @ devoxxfrDirect memory @ devoxxfr
Direct memory @ devoxxfrOlivier Lamy
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Microsoft
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secretsAymeric Bouillat
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésMathieu Elie
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Jean-Michel Doudoux
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jGabriel Pillet 🐙
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015gaelmetais
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra Publicis Sapient Engineering
 
A la queue leu leu
A la queue leu leuA la queue leu leu
A la queue leu leunautilebleu
 
Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Arnaud LEMAIRE
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBContent Square
 
Memcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMemcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMehdi Mehni
 

Similaire à Caching reboot: javax.cache & Ehcache 3 (20)

Direct memory 3_devoxx_fr_2012-2.04.18
Direct memory 3_devoxx_fr_2012-2.04.18Direct memory 3_devoxx_fr_2012-2.04.18
Direct memory 3_devoxx_fr_2012-2.04.18
 
Direct memory @ devoxxfr
Direct memory @ devoxxfrDirect memory @ devoxxfr
Direct memory @ devoxxfr
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
 
A la queue leu leu
A la queue leu leuA la queue leu leu
A la queue leu leu
 
Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
Memcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMemcached, une solution de cache par excellence
Memcached, une solution de cache par excellence
 
Optimiser wordpress
Optimiser wordpressOptimiser wordpress
Optimiser wordpress
 

Plus de Louis Jacomet

Protecting your organization against attacks via the build system
Protecting your organization against attacks via the build systemProtecting your organization against attacks via the build system
Protecting your organization against attacks via the build systemLouis Jacomet
 
Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)Louis Jacomet
 
Data consistency: Analyse, understand and decide
Data consistency: Analyse, understand and decideData consistency: Analyse, understand and decide
Data consistency: Analyse, understand and decideLouis Jacomet
 
Caching 101: sur la JVM et au delà
Caching 101: sur la JVM et au delàCaching 101: sur la JVM et au delà
Caching 101: sur la JVM et au delàLouis Jacomet
 
Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)Louis Jacomet
 
Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Louis Jacomet
 
Ehcache 3: JSR-107 on steroids at Devoxx Morocco
Ehcache 3: JSR-107 on steroids at Devoxx MoroccoEhcache 3: JSR-107 on steroids at Devoxx Morocco
Ehcache 3: JSR-107 on steroids at Devoxx MoroccoLouis Jacomet
 

Plus de Louis Jacomet (8)

Protecting your organization against attacks via the build system
Protecting your organization against attacks via the build systemProtecting your organization against attacks via the build system
Protecting your organization against attacks via the build system
 
Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)
 
Data consistency: Analyse, understand and decide
Data consistency: Analyse, understand and decideData consistency: Analyse, understand and decide
Data consistency: Analyse, understand and decide
 
Caching 101: sur la JVM et au delà
Caching 101: sur la JVM et au delàCaching 101: sur la JVM et au delà
Caching 101: sur la JVM et au delà
 
Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)
 
Ehcache 3 @ BruJUG
Ehcache 3 @ BruJUGEhcache 3 @ BruJUG
Ehcache 3 @ BruJUG
 
Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3
 
Ehcache 3: JSR-107 on steroids at Devoxx Morocco
Ehcache 3: JSR-107 on steroids at Devoxx MoroccoEhcache 3: JSR-107 on steroids at Devoxx Morocco
Ehcache 3: JSR-107 on steroids at Devoxx Morocco
 

Caching reboot: javax.cache & Ehcache 3

  • 2. @ljacomet#ehcachedvx Au menu • Mise en bouche: Pourquoi un cache? • Entrée : JSR-107 • APIs et fonctionnalités • Plat principal : Une application et son cache • Cache aside • Cache through • Dessert : Stratégie de résilience • Mignardises
  • 3. @ljacomet#ehcachedvx T’es qui toi? • Louis Jacomet • Développeur plus vers la 40aine que la 20aine • Ingénieur chez Terracotta (Software AG) depuis 2013 • Travaille sur Ehcache OS et Entreprise principalement • aussi un peu manager et responsable infrastructure • Ne sais pas faire une (jolie) UI - surtout web • mais aime bien la concurrence, se torturer pour faire une belle API, …
  • 4. @ljacomet#ehcachedvx Disclaimer Tout ce que je dis ne peux pas être retenu contre moi ou mon employeur. Et rien n’est garanti d’ailleurs!
  • 7. @ljacomet#ehcachedvx Et en français? • Minute: • Accès  cache  L1                              0,5  s      Un  battement  de  coeur   • Erreur  de  branche                        5      s      Bailler   • Accès  cache  L2                              7      s      Bailler  un  lendemain  de  veille   • Mutex  lock/unlock                      25      s      Faire  un  café   • Heure: • Accès  RAM                                    100      s      Se  brosser  les  dents   • Compression  de  1K                      50      min  Un  episode  de  votre  série   • Jour: • Envoyer  2KB  avec  réseau  Gb      5,5  h      Votre  après  midi  de  boulot
  • 8. @ljacomet#ehcachedvx Et en français? • Semaine: • Lecture  aléatoire  SSD                      1,7  j            Un  week-­‐end   • Lire  en  séquence  1  MB  de  RAM        2,9  j            Un  long  week-­‐end   • Aller-­‐retour  dans  un  datacenter  5,8  j            Des  vacances   • Lire  en  séquence  1MB  du  SSD        11,6  j            15  jours  pour  être  livré   • Année: • Localiser  sur  un  HDD                      16,5  sem        Semestre  à  l’école   • Lire  en  séquence  1MB  du  HDD          7,8  mois      Presque  un  bébé   • Décennie: • Un  paquet  fait  le  tour  du  monde  4,8  années  Votre  doctorat
  • 9. @ljacomet#ehcachedvx C’est quoi un cache? • Une structure de données contenant une copie temporaire de certaines données • Compromis entre une augmentation de la consommation mémoire et une réduction de latence • Cibles : • Données qui sont ré-utilisées • Données qui sont chères à récupérer / calculer
  • 10. @ljacomet#ehcachedvx Ehcache (3) • Nouvelle version - intégration de premier plan avec JSR-107 • Développement complètement OpenSource • https://github.com/ehcache/ehcache3 • Hangout public en moyenne 1 fois par semaine (en anglais)
  • 12. @ljacomet#ehcachedvx JSR-107 • Vieux JSR • Commencé en 2001 • Approuvée récemment (Mars 2014) • javax.caching API + TCK + implémentation de référence • Facilite l’intégration d’un cache dans les frameworks • Discussion pour la version 2.0 en cours • Fonctionnalités asynchrones
  • 13. @ljacomet#ehcachedvx JSR-107 : Fonctionnalités •CacheManager / Cache   •Expiration •Creation/Access/Update •Intégration •CacheLoader / Writer •CacheEntryListener •Created/Updated •Removed/Expired •Accès ancienne valeur •Mutations en place •Annotations •MBeans •Accès configuration •Statistiques •Pas de contrôle de capacité !
  • 16. @ljacomet#ehcachedvx public ObjetMetier calculeEtGagne(String param1, String param2) { 
 String cle = composeCle(param1, param2);
 ObjetMetier resultatEnCache = cache.get(cle); 
 if (resultatEnCache == null) {
 resultatEnCache = chargeEtCalcule(param1, param2);
 cache.put(cle, resultatEnCache);
 }
 return resultatEnCache;
 } Cache Aside
  • 17. @ljacomet#ehcachedvx Cache Aside : pas si simple • Nécessite de la coordination entre • le cache • et le système de référence • Pas d’option de locking • Potentiel pour devenir laid et problématique très rapidement
  • 18. @ljacomet#ehcachedvx Cache Aside: options • Utilisez les abstractions de votre framework préféré • Spring Caching • Hibernate • … • Alternatives ?
  • 19. @ljacomet#ehcachedvx public ObjetMetier calculeEtGagne(String param1, String param2) {
 return cache.get(composeCle(param1, param2));
 } Cache Through
  • 21. @ljacomet#ehcachedvx Cache Through • get* => CacheLoader • un cache miss veut dire pas de données • put* => CacheWriter • chaque entrée signifie une écriture dans le système de données • Contraintes:API des CacheLoader / CacheWriter
  • 22. @ljacomet#ehcachedvx Cache Through : JSR-107 • Particularités … particulières … • putIfAbsent(K key,V value): boolean • Ignore le CacheLoader mais pas le CacheWriter • Ehcache 3 permet de changer ce comportement par configuration • Comportement généralisé aux opérations atomiques
  • 23. @ljacomet#ehcachedvx Cache Through : Write Behind • L’accès au système de référence se fait de manière asynchrone • Le thread utilisateur ne paye plus la latence • Introduit son lot de complexité • File d’écriture persistante ou non ? • Risque de mutation appliquée plusieurs fois en cas d’erreur • Quid en cas d’eviction ?
  • 25. @ljacomet#ehcachedvx Stratégie de résilience • Postulat: “Une erreur au niveau du cache ne devrait pas être la cause d’une erreur pour l’utilisateur “ P.S. Ceci est en cours de développement et donc peut encore changer
  • 26. @ljacomet#ehcachedvx Ehcache 3 • Gestion des erreurs au maximum en interne • cache simple en mémoire => pas d’exception dans le thread d’exécution • Log par défaut, possibilité de remplacer l’implémentation • Mise en évidence pour l’applicatif des cas résultant en une possible incohérence du cache
  • 28. @ljacomet#ehcachedvx Implémentation offheap • Résoudre le problème des pauses liées au Garbage Collector • Possibilité de scale-up du cache • Plusieurs TerraBytes … si le serveur le permet • Implémentation validée par plusieurs années de production • 2.0.0 disponible sur GitHub • https://github.com/Terracotta-OSS/offheap-store
  • 29. @ljacomet#ehcachedvx Support du clustering • Partage de données au travers de plusieurs JVM • Terracotta 4.3.0 offre à nouveau une option de clustering OpenSource • Intégration avec Ehcache 2.10.0 • Ehcache 3 aura aussi une option de clustering OpenSource • Détails à venir