Eh cache in Kaunas JUG

25
EhCache To Cache Or Not To Cache? Kaunas JUG Saulius Tvarijonas · [email protected]

description

Saulius Tvarijonas presented EhCach

Transcript of Eh cache in Kaunas JUG

Page 1: Eh cache in Kaunas JUG

EhCacheTo Cache Or Not To Cache?

Kaunas JUG

Saulius Tvarijonas · [email protected]

Page 2: Eh cache in Kaunas JUG

Wiki● Ehcache is a widely used open source Java distributed

cache for general purpose caching, Java EE and light-

weight containers

● Ehcache was originally developed by Greg Luck,

starting in 2003. In 2009, the project was purchased by

Terracotta

Page 3: Eh cache in Kaunas JUG

Will an Application Benefit from Caching?

Page 4: Eh cache in Kaunas JUG

Will an Application Benefit from Caching?

● Speeding up CPU-bound Applications

● Speeding up I/O-bound Applications

● Increased Application Scalability

Page 5: Eh cache in Kaunas JUG

Scaling

Page 6: Eh cache in Kaunas JUG

Topologies

● Standalone

● Distributed

● Replicated

Page 7: Eh cache in Kaunas JUG

Storage Options

● MemoryStore

● Off-HeapStore

● DiskStore

Page 8: Eh cache in Kaunas JUG

Cache Usage Patterns● cache-aside (or direct manipulation)

● cache-as-sor (a combination of read-through and write-x patterns)

● read-through

● write-through

● write-behind (or write-back)

● copy-cache

Page 9: Eh cache in Kaunas JUG

Cache Sizing● Bytes (maxBytesLocalHeap=”30M”)

● Count (maxEntriesLocalHeap)

● Percentage (maxBytesLocalHeap="40%")

Page 10: Eh cache in Kaunas JUG

Evic

tion

● Time To Live● Time To Idle● Eternal● Pinning● Overflow● memoryStoreEvictionPolicy

Page 11: Eh cache in Kaunas JUG

Cache Persistence

<cache>

<persistence strategy=”localRestartable|localTempSwap|none|distributed”

synchronousWrites=”false|true”/>

</cache>

Page 12: Eh cache in Kaunas JUG

Search

Page 13: Eh cache in Kaunas JUG

Replication

Page 14: Eh cache in Kaunas JUG

Rep

licat

ion

● RMI, JGroups, JMS

● Serialization of key at least required

● Automatic Peer Discovery (Multicast)

● Bootstrap

● Sync and ASync

● Puts, Updates, Removals,

UpdatesViaCopy

Page 15: Eh cache in Kaunas JUG

WAN Replication

Page 16: Eh cache in Kaunas JUG

BigMemory Max

Page 17: Eh cache in Kaunas JUG

BigMemory Max

● Persistent Application State

● High Availability

● Fast Restartability

● Scalability

● Search

Page 18: Eh cache in Kaunas JUG

Prod

ucts

Page 19: Eh cache in Kaunas JUG

JSR 107 Java Caching Standard

● javax.cache.Cache

● Java 6 required

● Included in Java 7 EE

Page 20: Eh cache in Kaunas JUG

Web Console

Page 21: Eh cache in Kaunas JUG

Web Console

● Real Time Statistics

● Live Configuration Updates

● Cache enable/disable/clear

● Charts

Page 22: Eh cache in Kaunas JUG

Test Storage Results

Type Total time

(Concurrent)HashMap 11ms

MemoryStore 39ms

Off-HeapStore 5800ms

DiskStore 11300ms

● Cache with 1k elements● Element size 500 bytes● Measuring getFromCache time (100k times)

Page 23: Eh cache in Kaunas JUG

EhCache 3.0

● Standard API JSR 107

● Generics, Java 8 ready

● Java 6 compatible

● Better configuration

Page 24: Eh cache in Kaunas JUG

Competitors

● Hazelcast

● Memcached

● Oracle Coherence

● Infinispan

● GemFire

● GridGain

Page 25: Eh cache in Kaunas JUG

Java Forever

Thank

You!