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.
4. 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
11. 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
12. Zu teuer! Zu langsam!
Schlechter
Service!
IT-Chef Betreuer Kunde
13. 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
15. 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?
16. 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?
23. 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?
38. 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?
60. 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?
63. Will man dennoch schreib-
intensive Daten im Cluster
cachen, dann nur mit dem
Modus „distributed cache“
64. 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?
68. 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?
73. 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
87. 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