SlideShare ist ein Scribd-Unternehmen logo
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"

Weitere ähnliche Inhalte

PDF
Caching in Hibernate
PDF
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
ODP
Caching in PHP - Status Quo
PDF
Performance durch Caching
 
PDF
Private Cloud mit Open Source
PDF
Einführung in Elasticsearch
PPT
Périgord ppoint
PPS
45 HISTORIC PHOTOS
Caching in Hibernate
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Caching in PHP - Status Quo
Performance durch Caching
 
Private Cloud mit Open Source
Einführung in Elasticsearch
Périgord ppoint
45 HISTORIC PHOTOS

Andere mochten auch (20)

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

Ähnlich wie Caching - Hintergründe, Patterns und Best Practices (7)

PDF
Title is loading ... Cache is cold.
PDF
Caching mit Spring Boot - Pain & Gain @ JCON22
PDF
Datenbankoptimierung
PDF
Query Result Caching
PDF
20121008 ssd-caches
PDF
Cache me if you can
PDF
Ausgewählte Performance Technologien
Title is loading ... Cache is cold.
Caching mit Spring Boot - Pain & Gain @ JCON22
Datenbankoptimierung
Query Result Caching
20121008 ssd-caches
Cache me if you can
Ausgewählte Performance Technologien
Anzeige

Mehr von Michael Plöd (12)

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

Caching - Hintergründe, Patterns und Best Practices