Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Michael Plöd on Caching for business applications

Michael Plöd on Caching for business applications

More Decks by Enterprise Java User Group Austria

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. CACHES Arten 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
  4. 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?
  5. 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?
  6. 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
  7. 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. JVM JVM JVM JVM Clustered - with sync Cache Cache

    Cache Cache Invalidation Replication
  9. 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?
  10. 1

  11. 1 2 Kunde #23 Kunde #30 Kunde #27 Kunde #32

    Die Daten werden verteilt und Backups gesichert
  12. 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
  13. 3 1 2 Kunde #23 Kunde #30 Kunde #27 Kunde

    #32 BACKUP #27 BACKUP #32 BACKUP #23 BACKUP #30
  14. 4 3 1 2 Kunde #23 Kunde #30 Kunde #27

    Kunde #32 BACKUP #27 BACKUP #32 BACKUP #23 BACKUP #30
  15. 8 Raspberry Pis mit je einer Hazelcast Instanz ! 1

    MacBook Pro mit zwei Hazelcast Instanzen
  16. 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
  17. Ein verteilter Cache führt zu kleinen Heaps, mehr Kapazität und

    lässt sich einfach skalieren Application Data Cache 2 - 4 GB … Cache
  18. 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?
  19. Will man dennoch schreib- intensive Daten im Cluster cachen, dann

    nur mit dem Modus „distributed cache“
  20. 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?
  21. 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
  22. 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. 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
  24. <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) {! ! …! }
  25. User Interface „CRM“ 
 Kundendaten „Host“ ! Konten
 Transaktionen DB

    Spring + Wicket Spring Boot Java EE 7 H2 Server Netzwerk
  26. Beispiel: Near Cache JVM Cache Node 1 Cache Node 2

    Cache Node 3 Cache Node 4 Cache Node 5 Cache Node 6
  27. Beispiel: Near Cache JVM Cache Node 1 Cache Node 2

    Cache Node 3 Cache Node 4 Cache Node 5 Cache Node 6 Cache Node
  28. Off Heap 30 GB RAM JVM Cache Runtime Cache Data

    2 GB HEAP Keine Garbage Collection Sehr kurze Garbage Collections
  29. 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