SlideShare uma empresa Scribd logo
1 de 88
Baixar para ler offline
Caching
Hintergründe, Patterns

&"
Best Practices"
für Business Anwendungen
Michael Plöd"
Senacor Technologies AG
@bitboss
Business-Anwendung
!=

Twitter / Facebook & co.
Cache"
/ kæʃ /"




bezeichnet in der EDV einen schnellen Puffer-Speicher, der (erneute)
Zugriffe auf ein langsames Hintergrundmedium oder aufwändige
Neuberechnungen zu vermeiden hilft. Inhalte/Daten, die bereits
einmal beschafft/berechnet wurden, verbleiben im Cache, sodass sie
bei späterem Bedarf schneller zur Verfügung stehen. Auch können
Daten, die vermutlich bald benötigt werden, vorab vom
Hintergrundmedium abgerufen und vorerst im Cache bereitgestellt
werden."
"
Caches können als Hardware- oder Softwarestruktur ausgebildet
sein. In ihnen werden Kopien zwischengespeichert.
Quelle: http://de.wikipedia.org/wiki/Cache
Caches
everywhere!!!
NO WAY
Viele Enterprise Projekte
haben Angst vor Caching……
"
…….. und setzen Caching 

deshalb insuffizient ein.
Mit dem richtigen Einsatz
von Caching können
Business-Anwendungen
skalierbarer, performanter
und günstiger im Betrieb
werden.
Aufbau und Laufzeit-
Verhalten einer typischen
Business-Anwendung
Web
Host
System
X .. Y .. Z
DB
Anwendungsfall
Host
System
X .. Y .. Z
DB
Host-Services werden in der Regel pro
Aufruf abgerechnet
Aufrufe von Umsystemen benötigen in
der Regel viel Zeit
Datenbanken werden häufig aufgerufen
Geld
Zeit
Ressourcen
Zu teuer! Zu langsam!
Schlechter
Service!
IT-Chef Betreuer Kunde
CACHESArtenvon 

Orte für
Local Cache, Data Grid, Document Store, JPA
First Level Cache, JPA Second Level Cache,
Hybrid Cache
Datenbank, Heap, HTTP Proxy, Browser,
Prozessor, Disk, Off Heap, Persistenz-
Framework, Anwendung
Wir betrachten primär
lokales und verteiltes
Caching auf Anwendungs-
Ebene mit einem Exkurs in
Richtung JPA
Was soll
ich cachen?
Wo soll ich
cachen?
Welchen Cache soll ich
nutzen?
Welchen Einfluss hat das
auf meine Infrastruktur?
Was muss ich in Bezug auf
Datenkonsistenz beachten?
Wie führe ich
Caching ein?
Was soll
ich cachen?
Wo soll ich
cachen?
Welchen Cache soll ich
nutzen?
Welchen Einfluss hat das
auf meine Infrastruktur?
Was muss ich in Bezug auf
Datenkonsistenz beachten?
Wie führe ich
Caching ein?
1 Identifiziere geeignete
Ebenen für Caching
BeschwerdeManagementRestController
BeschwerdeManagementBusinessService
DatenBeschaffungsManager
Host!
Commands
Umsystem!
Commands
JPA!
DAO
HTTP
Caching
Lese
Operationen
Lese
Operationen
Lese
Operationen
Lese
Operationen
Lese- und
Schreib-
Operationen
Cache
Ebenen
2 Bleibe so lange lokal wie
möglich
Lokal In-Memory
JVM
Cache
Clustered
JVM
Cache
JVM
Cache
JVM
Cache
JVM
Cache
DemoHazelcast lokal vs verteilt
Was soll
ich cachen?
Wo soll ich
cachen?
Welchen Cache soll ich
nutzen?
Welchen Einfluss hat das
auf meine Infrastruktur?
Was muss ich in Bezug auf
Datenkonsistenz beachten?
Wie führe ich
Caching ein?
Ein transaktionaler Cache
kostet Performance!
JVM
JVM
JVM
JVM
Clustered - with sync
Cache
Cache
Cache
Cache
Invalidation
Replication
3 Ziehe Invalidation,
Replication vor
Cache
Cache
Cache
Cache
Invalidation
Cache
Cache
Cache
Cache
Invalidation
#1
PUT
(Insert)
PUT
(Insert)
#1
#1
PUT
(Insert)
PUT
(Insert)
#1
Cache
Cache
Cache
Cache
Invalidation
#1 #1
#1#1
Cache
Cache
Cache
Cache
Invalidation
#1 #1
PUT
(Update)
#1#1
Cache
Cache
Cache
Cache
Invalidation
PUT
(Update)
#1
Cache
Cache
Cache
Cache
Replication
Cache
Cache
Cache
Cache
#1
#1 #1
Replication
#1
PUT
(Insert)
Cache
Cache
Cache
Cache
#1
#1 #1
Replication
#1
Cache
Cache
Cache
Cache
#1
#1 #1
Replication
#1
PUT
(Update)
Bisher hält jeder Cache
potentiell alle Daten
und belegt Platz im Heap
Big Heap
?
Was soll
ich cachen?
Wo soll ich
cachen?
Welchen Cache soll ich
nutzen?
Welchen Einfluss hat das
auf meine Infrastruktur?
Was muss ich in Bezug auf
Datenkonsistenz beachten?
Wie führe ich
Caching ein?
4 Vermeide große Heap-Sizes
nur für Caching.
Grosser Heap
führt zu langen
major GCs
Application
Data
Cache
32GB
Lange GCs können Cluster
destabilisieren
JVM
Cache
JVM
Cache
JVM
Cache
JVM
Cache
Lange GCs können Cluster
destabilisieren
JVM
Cache
JVM
Cache
JVM
Cache
JVM
Cache
Lösung:
Kleine Caches?
"
Viele Evictions,
wenige Hits,
„hot data“ kann
nicht entstehen
5 Sehr grosse Datenmenge?
Distributed Cache!
Distributed Caches
JVM
JVM JVM
JVM
Cache Node
1
Cache Node
2
Cache Node
3
1
1
Kunde
#23
Kunde
#30
Kunde
#27
Kunde
#32
1
Kunde
#23
Kunde
#30
Kunde
#27
Kunde
#32
2
1 2
Kunde
#23
Kunde
#30
Kunde
#27
Kunde
#32
Die Daten werden
verteilt und Backups
gesichert
1 2
Kunde
#23
Kunde
#30
Kunde
#27
Kunde
#32
BACKUP
#27
BACKUP
#32
BACKUP
#23
BACKUP
#30
Die Daten werden
verteilt und Backups
gesichert
3
1 2
Kunde
#23
Kunde
#30
Kunde
#27
Kunde
#32
BACKUP
#27
BACKUP
#32
BACKUP
#23
BACKUP
#30
43
1 2
Kunde
#23
Kunde
#30
Kunde
#27
Kunde
#32
BACKUP
#27
BACKUP
#32
BACKUP
#23
BACKUP
#30
DEMO
Hazelcast

on
Raspberry Pi
in
Lego
8 Raspberry Pis
mit je einer
Hazelcast Instanz
!
1 MacBook Pro
mit zwei
Hazelcast Instanzen
Test Programme
Raspberry
Hazelcast
Raspberry
Hazelcast
Raspberry
Hazelcast
Raspberry
Hazelcast
Raspberry
Hazelcast
Raspberry
Hazelcast
Raspberry
Hazelcast
Raspberry
Hazelcast
Hazelcast
Hazelcast
MacBook Pro Lego Cloud
Hazelcast Cluster mit beliebig
skalierbarer Anzahl an Instanzen
Ein verteilter Cache führt zu
kleinen Heaps, mehr Kapazität
und lässt sich einfach skalieren
Application
Data
Cache
2-4GB
… Cache
6 Der Operations-Mitarbeiter
ist Dein bester Freund!
Caches im Cluster

sind komplex
Betrieb mit an Board holen!
Was soll
ich cachen?
Wo soll ich
cachen?
Welchen Cache soll ich
nutzen?
Welchen Einfluss hat das
auf meine Infrastruktur?
Was muss ich in Bezug auf
Datenkonsistenz beachten?
Wie führe ich
Caching ein?
7 Cache nur geeignete Daten
Die besten Cache
Kandidaten sind read-
mostly Daten, die teuer in
der Beschaffung sind
Will man dennoch schreib-
intensive Daten im Cluster
cachen, dann nur mit dem
Modus „distributed cache“
Was soll
ich cachen?
Wo soll ich
cachen?
Welchen Cache soll ich
nutzen?
Welchen Einfluss hat das
auf meine Infrastruktur?
Was muss ich in Bezug auf
Datenkonsistenz beachten?
Wie führe ich
Caching ein?
8 Nutze erprobte Cache-
Implementierungen
NIEMALS
eine eigene Cache
Implementierung
entwickeln
CACHE

Implementierungen
Infinispan, EHCache, Hazelcast, Couchbase,
Memcache, OSCache, SwarmCache, Xtreme
Cache, Apache DirectMemory
Terracotta, Coherence, Gemfire, Cacheonix,
WebSphere eXtreme Scale, Oracle 12c In
Memory Database
Was soll
ich cachen?
Wo soll ich
cachen?
Welchen Cache soll ich
nutzen?
Welchen Einfluss hat das
auf meine Infrastruktur?
Was muss ich in Bezug auf
Datenkonsistenz beachten?
Wie führe ich
Caching ein?
9 Führe Caching in drei
Schritten ein
Anwendungs-
Optimierung
Lokaler Cache Verteilter Cache
Performance
Boost
Performance
Slowdown
10 Optimiere die Serialisierung
von Objekten
DemoProprietäre

Serialisierungs-Möglichkeiten
Beispiel: Hazelcast

10.000 Objekte lokal schreiben und lesen
GET Time PUT Time Payload Size
Serializable 1287 ms 1220 ms 1164 byte
Data

Serializable 443 ms 408 ms 916 byte
Identifier

Data

Serializable
264 ms 207 ms 882 byte
JAVA
SERIALIZATION

SUCKSfor Caching if alternatives are present
11 Abstrahiere Deinen Cache
Provider
<cache:annotation-driven cache-manager="ehCacheManager"/>!
!
<!-- EH Cache local -->!
<bean id="ehCacheManager" 

! class="org.springframework.cache.ehcache.EhCacheCacheManager"!
p:cacheManager-ref="ehcache"/>!
! !
<bean id="ehcache" 

! class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"!
! p:configLocation="/ehcache.xml"/>
Beispiel: Spring
@Cacheable("CrmIntegrationService#retrieveCustomer")!
public Customer retrieveCustomer(Long customerNumber) {!
! …!
}
DemoKundensuche in Call-Center
User Interface
„CRM“


Kundendaten
„Host“
!
Konten

Transaktionen
DB
Spring + Wicket
Spring Boot Java EE 7 H2 Server
Netzwerk
12
Lagere „heisse Daten“
möglichst nah an der
Anwendung
Beispiel: Near Cache
JVM
Cache Node
1
Cache Node
2
Cache Node
3
Cache Node
4
Cache Node
5
Cache Node
6
Beispiel: Near Cache
JVM
Cache Node
1
Cache Node
2
Cache Node
3
Cache Node
4
Cache Node
5
Cache Node
6
Cache Node
13
Verwende Off-Heap
Storage für Cache
Instanzen mit mehr wie 4
GB Heap Size
THINK
BIG
Off Heap
30GBRAM
JVM
Cache Runtime
Cache
Data
2GBHEAP Keine Garbage
Collection
Sehr kurze Garbage
Collections
14 JPA: Flush vor Cache Put
IMMER
entityManager.flush()
VOR
Cache Put
14 JPA: Flush vor Cache Put
13
12
11
10
9
8
7
6
5
4
3
2
1
Off-Heap Storage für Cache Instanzen mit mehr wie 4 GB Heap Size
Lagere „heisse Daten“ möglichst nah an der Anwendung
Abstrahiere Deinen Cache Provider
Optimiere die Serialisierung von Objekten
Führe Caching in drei Schritten ein
Nutze erprobte Cache-Implementierungen
Cache nur geeignete Daten
Der Operations-Mitarbeiter ist Dein bester Freund!
Sehr grosse Datenmenge? Distributed Cache!
Vermeide große Heap-Sizes nur für Caching.
Ziehe Invalidation, Replication vor
Bleibe so lange lokal wie möglich
Identifiziere geeignete Ebenen für Caching
Fragen?
Michael Plöd"
Senacor Technologies AG"
@bitboss"
http://slideshare.net/mploed"
michael.ploed@senacor.com"

Mais conteúdo relacionado

Destaque

2.17 session 21 einheit 5
2.17 session 21 einheit 52.17 session 21 einheit 5
2.17 session 21 einheit 5
nblock
 
Rosalía et Carmen
Rosalía  et  CarmenRosalía  et  Carmen
Rosalía et Carmen
School
 
Clase 10-bases de datos
Clase 10-bases de datosClase 10-bases de datos
Clase 10-bases de datos
Maria
 
Ikram présente lorena
Ikram présente lorenaIkram présente lorena
Ikram présente lorena
School
 
Genoma humano
Genoma humanoGenoma humano
Genoma humano
javier
 
Fase planificación
Fase planificaciónFase planificación
Fase planificación
patoloco1
 

Destaque (20)

Pflegeversicherung - Zusatz und gesetzliche
Pflegeversicherung - Zusatz und gesetzlichePflegeversicherung - Zusatz und gesetzliche
Pflegeversicherung - Zusatz und gesetzliche
 
2.17 session 21 einheit 5
2.17 session 21 einheit 52.17 session 21 einheit 5
2.17 session 21 einheit 5
 
Shareconomy - auf dem Weg in eine neue Konsumkultur?
Shareconomy - auf dem Weg in eine neue Konsumkultur?Shareconomy - auf dem Weg in eine neue Konsumkultur?
Shareconomy - auf dem Weg in eine neue Konsumkultur?
 
ELABORACION DE REACTIVOS
ELABORACION DE REACTIVOS ELABORACION DE REACTIVOS
ELABORACION DE REACTIVOS
 
Rosalía et Carmen
Rosalía  et  CarmenRosalía  et  Carmen
Rosalía et Carmen
 
Clase 10-bases de datos
Clase 10-bases de datosClase 10-bases de datos
Clase 10-bases de datos
 
VB2
VB2VB2
VB2
 
Rocío Carrillo
Rocío CarrilloRocío Carrillo
Rocío Carrillo
 
Intervention Bruno Le Lan - Etourisme - INTERPATT 2012
Intervention Bruno Le Lan - Etourisme - INTERPATT 2012Intervention Bruno Le Lan - Etourisme - INTERPATT 2012
Intervention Bruno Le Lan - Etourisme - INTERPATT 2012
 
Descubre y aprende
Descubre y aprendeDescubre y aprende
Descubre y aprende
 
Leichtgewichtige API-Dokumentation – Ein Paradoxon?
Leichtgewichtige API-Dokumentation – Ein Paradoxon?Leichtgewichtige API-Dokumentation – Ein Paradoxon?
Leichtgewichtige API-Dokumentation – Ein Paradoxon?
 
Le négoce d’énergie du point de vue local
Le négoce d’énergie du point de vue local Le négoce d’énergie du point de vue local
Le négoce d’énergie du point de vue local
 
Primagraphology Services and Inhouse Training Programmes
Primagraphology Services and Inhouse Training ProgrammesPrimagraphology Services and Inhouse Training Programmes
Primagraphology Services and Inhouse Training Programmes
 
Ikram présente lorena
Ikram présente lorenaIkram présente lorena
Ikram présente lorena
 
Social Media Ueberblick
Social Media UeberblickSocial Media Ueberblick
Social Media Ueberblick
 
Genoma humano
Genoma humanoGenoma humano
Genoma humano
 
Présentation du Sancy - Saison Hiver 2010/11
Présentation du Sancy - Saison Hiver 2010/11Présentation du Sancy - Saison Hiver 2010/11
Présentation du Sancy - Saison Hiver 2010/11
 
Alcatel Lucent Code de bonne conduite
Alcatel Lucent Code de bonne conduiteAlcatel Lucent Code de bonne conduite
Alcatel Lucent Code de bonne conduite
 
Trabajo práctico nº3 Yamila Awad
Trabajo práctico nº3 Yamila AwadTrabajo práctico nº3 Yamila Awad
Trabajo práctico nº3 Yamila Awad
 
Fase planificación
Fase planificaciónFase planificación
Fase planificación
 

Semelhante a Caching - Hintergründe, Patterns und Best Practices

Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"
schellsoft
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
AOE
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
AOE
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
Florian Holzhauer
 

Semelhante a Caching - Hintergründe, Patterns und Best Practices (20)

Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Where are all transactions gone? Was in_der_cloud_alles_verboten_ist
Where are all transactions gone? Was in_der_cloud_alles_verboten_istWhere are all transactions gone? Was in_der_cloud_alles_verboten_ist
Where are all transactions gone? Was in_der_cloud_alles_verboten_ist
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"
 
Node.js
Node.jsNode.js
Node.js
 
Ausgewählte Performance Technologien
Ausgewählte Performance TechnologienAusgewählte Performance Technologien
Ausgewählte Performance Technologien
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014
 
Apex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitApex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - Hochverfügbarkeit
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
 
Wordpress on steroids
Wordpress on steroidsWordpress on steroids
Wordpress on steroids
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
 
Production-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 WochenProduction-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 Wochen
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
 
Automatisiertes disaster recovery testing mit der oracle cloud
Automatisiertes disaster recovery testing mit der oracle cloudAutomatisiertes disaster recovery testing mit der oracle cloud
Automatisiertes disaster recovery testing mit der oracle cloud
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 

Mais de Michael Plöd

Mais de Michael Plöd (12)

Event Sourcing: Einführung und Best Practices
Event Sourcing: Einführung und Best PracticesEvent Sourcing: Einführung und Best Practices
Event Sourcing: Einführung und Best Practices
 
Building Microservices with Event Sourcing and CQRS
Building Microservices with Event Sourcing and CQRSBuilding Microservices with Event Sourcing and CQRS
Building Microservices with Event Sourcing and CQRS
 
Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3
 
Event Sourcing: Introduction & Challenges
Event Sourcing: Introduction & ChallengesEvent Sourcing: Introduction & Challenges
Event Sourcing: Introduction & Challenges
 
Anatomie von Microservice Landschaften
Anatomie von Microservice LandschaftenAnatomie von Microservice Landschaften
Anatomie von Microservice Landschaften
 
Event Sourcing für reaktive Anwendungen
Event Sourcing für reaktive AnwendungenEvent Sourcing für reaktive Anwendungen
Event Sourcing für reaktive Anwendungen
 
CQRS basierte Architekturen mit Microservices
CQRS basierte Architekturen mit MicroservicesCQRS basierte Architekturen mit Microservices
CQRS basierte Architekturen mit Microservices
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
 
Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework?
 
Hibernate Tuning
Hibernate TuningHibernate Tuning
Hibernate Tuning
 
Bessere Präsentationen
Bessere PräsentationenBessere Präsentationen
Bessere Präsentationen
 
Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6
 

Caching - Hintergründe, Patterns und Best Practices