caching - hintergründe, patterns und best practices
DESCRIPTION
Das Thema Caching ist für zahlreiche Business Anwendungen relevant und der Markt für Caching-Lösungen reicht von einfachen lokalen Caches bis hin zu mächtigen und komplexen Data Grids. Ein weiteres Differenzierungsmerkmal ist die Konsistenzgarantie beziehungsweise die transaktionale Integrität, welche die unterschiedlichen Lösungen bieten. Allerdings unterscheiden sich Anwendungen, welche Geschäftsprozesse in gewachsenen Unternehmenslandschaften umsetzen stark von sozialen Netzwerken oder Internetdiensten, welche aus dem Startup-Umfeld kommen. Der Vortrag adressiert in erster Linie das erste Szenario: Caching in Unternehmensanwendungen, welche auf Basis einer bereits bestehenden Infrastruktur umgesetzt werden. Hierbei werden zuerst die Herausforderungen, die diese Anwendungen an das Thema Caching stellen, vorgestellt. Aspekte die hierbei betrachtet werden sind: Security, Monitoring, Audit-Compliance, Art der Daten sowie Geschäftsprozesse. Im zweiten Teil werden unterschiedliche Arten des Cachings vorgestellt und im Hinblick auf die eben erwähnten Herausforderungen bewertet. Abschließend geht der Vortrag darauf ein, welche Patterns und Best Practices sich in der Praxis bewährt haben und wie das Thema Caching möglichst transparent und deterministisch in Business-Anwendungen integriert werden kann.TRANSCRIPT
![Page 1: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/1.jpg)
CachingHintergründe, Patterns
&" Best Practices"für Business Anwendungen
![Page 2: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/2.jpg)
Michael Plöd"Senacor Technologies AG
@bitboss
![Page 3: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/3.jpg)
Business-Anwendung
!= Twitter / Facebook & co.
![Page 4: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/4.jpg)
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
![Page 5: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/5.jpg)
Caches everywhere!!!
NO WAY
![Page 6: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/6.jpg)
Viele Enterprise Projekte haben Angst vor Caching……
![Page 7: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/7.jpg)
"
…….. und setzen Caching deshalb insuffizient ein.
![Page 8: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/8.jpg)
Mit dem richtigen Einsatz von Caching können
Business-Anwendungen skalierbarer, performanter und günstiger im Betrieb
werden.
![Page 9: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/9.jpg)
Aufbau und Laufzeit-Verhalten einer typischen
Business-Anwendung
![Page 10: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/10.jpg)
Web
HostSystem
X .. Y .. ZDB
Anwendungsfall
![Page 11: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/11.jpg)
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
![Page 12: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/12.jpg)
Zu teuer! Zu langsam!Schlechter
Service!
IT-Chef Betreuer Kunde
![Page 13: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/13.jpg)
CACHESArten von
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
![Page 14: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/14.jpg)
Wir betrachten primär lokales und verteiltes
Caching auf Anwendungs-Ebene mit einem Exkurs in
Richtung JPA
![Page 15: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/15.jpg)
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?
![Page 16: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/16.jpg)
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?
![Page 17: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/17.jpg)
1 Identifiziere geeignete Ebenen für Caching
![Page 18: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/18.jpg)
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
![Page 19: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/19.jpg)
2 Bleibe so lange lokal wie möglich
![Page 20: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/20.jpg)
Lokal In-Memory
JVM
Cache
![Page 21: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/21.jpg)
ClusteredJVM
Cache
JVM
Cache
JVM
Cache
JVM
Cache
![Page 22: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/22.jpg)
Demo Hazelcast lokal vs verteilt
![Page 23: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/23.jpg)
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?
![Page 24: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/24.jpg)
Ein transaktionaler Cache kostet Performance!
![Page 25: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/25.jpg)
JVM
JVM
JVM
JVM
Clustered - with sync
Cache
Cache
Cache
Cache
Invalidation
Replication
![Page 26: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/26.jpg)
3 Ziehe Invalidation, Replication vor
![Page 27: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/27.jpg)
Cache
Cache
Cache
Cache
Invalidation
![Page 28: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/28.jpg)
Cache
Cache
Cache
Cache
Invalidation
#1PUT (Insert)
PUT (Insert)
#1
#1PUT (Insert)
PUT (Insert)
#1
![Page 29: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/29.jpg)
Cache
Cache
Cache
Cache
Invalidation
#1 #1
#1#1
![Page 30: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/30.jpg)
Cache
Cache
Cache
Cache
Invalidation
#1 #1
PUT (Update)
#1#1
![Page 31: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/31.jpg)
Cache
Cache
Cache
Cache
Invalidation
PUT (Update)
#1
![Page 32: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/32.jpg)
Cache
Cache
Cache
Cache
Replication
![Page 33: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/33.jpg)
Cache
Cache
Cache
Cache
#1
#1 #1
Replication
#1PUT (Insert)
![Page 34: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/34.jpg)
Cache
Cache
Cache
Cache
#1
#1 #1
Replication
#1
![Page 35: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/35.jpg)
Cache
Cache
Cache
Cache
#1
#1 #1
Replication
#1 PUT (Update)
![Page 36: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/36.jpg)
Bisher hält jeder Cache potentiell alle Daten
und belegt Platz im Heap
![Page 37: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/37.jpg)
Big Heap
?
![Page 38: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/38.jpg)
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?
![Page 39: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/39.jpg)
4 Vermeide große Heap-Sizes nur für Caching.
![Page 40: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/40.jpg)
Grosser Heap führt zu langen
major GCs
Application Data
Cache
32 G
B
![Page 41: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/41.jpg)
Lange GCs können Cluster destabilisieren
JVM
Cache
JVM
Cache
JVM
Cache
JVM
Cache
![Page 42: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/42.jpg)
Lange GCs können Cluster destabilisieren
JVM
Cache
JVM
Cache
JVM
Cache
JVM
Cache
![Page 43: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/43.jpg)
Lösung: Kleine Caches?
"
Viele Evictions, wenige Hits,
„hot data“ kann nicht entstehen
![Page 44: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/44.jpg)
5 Sehr grosse Datenmenge? Distributed Cache!
![Page 45: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/45.jpg)
Distributed CachesJVM
JVM JVM
JVM
Cache Node
1
Cache Node
2
Cache Node
3
![Page 46: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/46.jpg)
Cache
1
![Page 47: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/47.jpg)
Cache
1Kunde
#23Kunde
#30
Kunde #27
Kunde #32
![Page 48: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/48.jpg)
Cache
1Kunde
#23Kunde
#30
Kunde #27
Kunde #32
2
![Page 49: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/49.jpg)
1 2Kunde
#23Kunde
#30Kunde
#27Kunde
#32
Die Daten werden verteilt und Backups
gesichert
![Page 50: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/50.jpg)
1 2Kunde
#23Kunde
#30Kunde
#27Kunde
#32
BACKUP #27
BACKUP #32
BACKUP #23
BACKUP #30
Die Daten werden verteilt und Backups
gesichert
![Page 51: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/51.jpg)
3
1 2Kunde
#23
Kunde #30
Kunde #27
Kunde #32
BACKUP #27
BACKUP #32
BACKUP #23
BACKUP #30
![Page 52: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/52.jpg)
43
1 2Kunde
#23
Kunde #30
Kunde #27
Kunde #32
BACKUP #27
BACKUP #32
BACKUP #23
BACKUP #30
![Page 53: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/53.jpg)
DEMOHazelcast
on Raspberry Pi
in Lego
![Page 54: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/54.jpg)
8 Raspberry Pis mit je einer
Hazelcast Instanz !
1 MacBook Pro mit zwei
Hazelcast Instanzen
![Page 55: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/55.jpg)
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
![Page 56: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/56.jpg)
Ein verteilter Cache führt zu kleinen Heaps, mehr Kapazität und lässt sich einfach skalieren
Application Data
Cache
2 - 4
GB
… Cache
![Page 57: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/57.jpg)
6 Der Operations-Mitarbeiter ist Dein bester Freund!
![Page 58: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/58.jpg)
Caches im Cluster sind komplex
![Page 59: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/59.jpg)
Betrieb mit an Board holen!
![Page 60: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/60.jpg)
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?
![Page 61: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/61.jpg)
7 Cache nur geeignete Daten
![Page 62: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/62.jpg)
Die besten Cache Kandidaten sind read-
mostly Daten, die teuer in der Beschaffung sind
![Page 63: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/63.jpg)
Will man dennoch schreib-intensive Daten im Cluster cachen, dann nur mit dem Modus „distributed cache“
![Page 64: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/64.jpg)
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?
![Page 65: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/65.jpg)
8 Nutze erprobte Cache-Implementierungen
![Page 66: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/66.jpg)
NIEMALS eine eigene Cache Implementierung
entwickeln
![Page 67: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/67.jpg)
CACHEImplementierungen
Infinispan, EHCache, Hazelcast, Couchbase, Memcache, OSCache, SwarmCache, Xtreme
Cache, Apache DirectMemory
Terracotta, Coherence, Gemfire, Cacheonix, WebSphere eXtreme Scale, Oracle 12c In
Memory Database
![Page 68: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/68.jpg)
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?
![Page 69: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/69.jpg)
9 Führe Caching in drei Schritten ein
![Page 70: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/70.jpg)
Anwendungs- Optimierung
Lokaler Cache Verteilter Cache
Performance Boost
Performance Slowdown
![Page 71: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/71.jpg)
10 Optimiere die Serialisierung von Objekten
![Page 72: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/72.jpg)
Demo Proprietäre
Serialisierungs-Möglichkeiten
![Page 73: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/73.jpg)
Beispiel: Hazelcast 10.000 Objekte lokal schreiben und lesen
GET Time PUT Time Payload Size
Serializable 1287 ms 1220 ms 1164 byte
DataSerializable 443 ms 408 ms 916 byte
IdentifierData
Serializable264 ms 207 ms 882 byte
![Page 74: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/74.jpg)
JAVA SERIALIZATIONSUCKS
for Caching if alternatives are present
![Page 75: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/75.jpg)
11 Abstrahiere Deinen Cache Provider
![Page 76: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/76.jpg)
<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) {!! …!}
![Page 77: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/77.jpg)
Demo Kundensuche in Call-Center
![Page 78: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/78.jpg)
User Interface
„CRM“
Kundendaten
„Host“ !
Konten Transaktionen
DB
Spring + Wicket
Spring Boot Java EE 7 H2 Server
Netzwerk
![Page 79: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/79.jpg)
12Lagere „heisse Daten“ möglichst nah an der Anwendung
![Page 80: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/80.jpg)
Beispiel: Near Cache
JVMCache Node
1
Cache Node
2
Cache Node
3
Cache Node
4
Cache Node
5
Cache Node
6
![Page 81: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/81.jpg)
Beispiel: Near Cache
JVMCache Node
1
Cache Node
2
Cache Node
3
Cache Node
4
Cache Node
5
Cache Node
6
Cache Node
![Page 82: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/82.jpg)
13Verwende Off-Heap Storage für Cache Instanzen mit mehr wie 4 GB Heap Size
![Page 83: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/83.jpg)
THINK
BIG
![Page 84: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/84.jpg)
Off Heap
30 G
B RA
MJVM
Cache Runtime
Cache Data
2 G
B H
EAP
Keine Garbage Collection
Sehr kurze Garbage Collections
![Page 85: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/85.jpg)
14 JPA: Flush vor Cache Put
![Page 86: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/86.jpg)
IMMER entityManager.flush()
VOR Cache Put
![Page 87: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/87.jpg)
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
![Page 88: Caching - Hintergründe, Patterns und Best Practices](https://reader034.vdocument.in/reader034/viewer/2022042713/548f5230b479598e6a8b4dfe/html5/thumbnails/88.jpg)
Fragen?Michael Plöd"
Senacor Technologies AG"@bitboss"
http://slideshare.net/mploed"[email protected]"