SlideShare a Scribd company logo
1 of 46
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
GREG LUCK, CO-SPEC LEAD JSR107
@GREGRLUCK CEO | HAZELCAST FOUNDER | EHCACHE FORMER CTO
23 MAY 2016
How to speed up your
application using JCache
See all the presentations from the In-Memory Computing
Summit at http://imcsummit.org
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Agenda
• Introduction to Caching
• Java Caching (JCache), JSR-107
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Introduction to Caching
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Benefits of Caching
• Performance
• Offload expensive or non-scalable parts of your architecture
• Scale up – get the most out of one machine
• Scale out – add more capacity with more machines
• Excellent Buffer against load variability
And…
• Usually very fast and easy to apply
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
When to Use Caching
• When applications use the same data more than once
• When cost (time / resources) of making an initial copy is less
than fetching or producing the data again or when faster to
request from a Cache
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Common Problem Areas that Benefit
Anything Web Scale Anything where the data is across the network
Compound Data Objects Data Persistence
1 3
2 4
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Database Caching
Moving data from the database into the cache increases processing speed
and can reduce database licensing and maintenance costs.
Speed ✓
Data
Store
Application
Cache
Application
Cache
Application
Cache
Application
Cache
Costs ✓ Scalability ✓
~200 us
Average Response Time
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Caches are built primarily in RAM
in-process or distributed
NVRAM/Flash/SSD
(serialized form)
Local Storage
Heap
(Objects)
Opaque to
GC in RAM
(serialized form)
<100 ns
< 100ns
+deserialization time
2
500
1,000+
Latency
Size (GB)
Network Storage
< 50us
+deserialization time
< 140us for 1Gbps
< 70us for 10Gbps/40Gbps
+deserialization time
20,000+Scaleout across the network
(serialized form)
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
‘s law
Estimated Performance Improvements
Predicted System Speedup
=
1 / ((1 – Proportion Sped Up) + Proportion Sped Up / Speed up))
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Cache Efficiency
Cache Efficiency = cache hits / total hits
• High efficiency = high offload
• High efficiency = high performance
• How to increase:
- Put reference data in the cache
- Put long lived in the cache.
- Consider frequency of mutability of data
- Put highly used data in cache
- Increase the size of the cache. Today you can create TB sized caches
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Problems to Consider
• Standalone Caches and the N * problem
- As each entry expires, the backing system gets N requests for data where
n is the number of standalone caches. Solution: Use a distributed cache
• Consistency with the System of Record
- How to keep the cache in sync with changes in a backing system. Solution:
Match mutability of data with data safety configuration. Update the cache
and backing store at the same time.
• Consistency with other cache nodes
- How to keep all cache nodes in sync: Solution: Use a distributed cache and
match consistency configuration with data mutability
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
New JCache Standard (JSR107)
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Java Caching (JCache)
What?
• Java Caching (JCache) standardized Caching for the Java Platform*
• A common mechanism to create, access, update and remove
information from Caches
How?
• JSR-107: Java Caching Specification (JCache)
• Java Community Process (JCP) 2.9
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Java Caching (JCache)
Why?
• Standardize! Standardize! Standardize!
- Core Caching Concepts
- Core Caching API
• Provide application portability between Caching solutions
- Big & Small, Open & Commercial
• Caching is ubiquitous!
• Allows frameworks to depend on JCache and stop creating specific
integrations to each and every cache
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Java Caching (Jcache)
Recent History
Item Date
JCache Final Spec Released 18 March 2014
Spring 4.1 September 2014
Hazelcast 3.3.1 TCK Compliant September 2014
Hazelcast 3.4 (with High-Density Memory Store) November 2014
Hazelcast 3.5 - added HD Memory Store to near cache) June 2015
Most project vendors create implementations June 2014 - June 2015
Hazelcast 3.6 (split brain handler, quorums) January 2016
JCache 1.1 Maintenance Release Summer 2016
JCache 2.0 Will start after 1.1
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Java Caching (JCache)
Which Platform?
java.util.Map (Java 6/7) Target Platform
Specification (SPEC) Java 6+ (SE or EE)
Reference Implementation (RI) Java 7+ (SE or EE)
Technology Compatibility Kit (TCK) Java 7+ (SE or EE)
Demos and Samples Java 7+ (SE or EE)
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Implementations
• JCache Reference Implementation
• Ehcache
• Hazelcast
• Oracle Coherence
• Infinispan
• GridGain/Apache Ignite
• TayzGrid
• Caffeine
• Cache2K (in progress)
• Blazing Cache (in progress)
• tCache (Trivago in process)
Keep Track
• https://jcp.org/aboutJava/communityprocess/i
mplementations/jsr107/index.html
• https://github.com/cruftex/jsr107-test-
zoo/blob/master/report.md
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Non-Implementation: Gemfire/Geode
Gemfire/Geode have no plans to implement
Why?
• Gemfire and Geode are directly supported in Spring
• Because Spring supports JCache cache annotations you can use
Gemfire/Geode from Spring but that is it.
See:
• http://apache-geode-incubating-developers-
forum.70738.x6.nabble.com/JCache-JSR-107-support-td1255.html
Campaign to have Pivotal Support JCache:
#PivotalJCache campaign for @PivotalGemFire to support #JSR107 #JCache.
Please retweet or mention #PivotalJCache
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Relationship to NoSQL
Difficult/Impossible for NoSQL to fully implement the spec
• Server Side code execution including: Entry Processors, Listeners,
Write-Through etc.
• Strong Consistency is the default consistency model and is not
supported by most/all NoSQL.
Likely that Couchbase will release a partial implementation
leaving out EntryProcessor and some other methods with an
UnsupportedOperationException if these methods are called. They
have Developer Preview 2 out.
Using With NoSQL
• Use NoSQL like a database and read-through/write-though to it using
CacheLoader/CacheWriter.
• NoSQL gives you scale our persistence - cache gives you very low
latencies
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Java Caching (JCache)
Project Hosting
• JCP Project:
- http://jcp.org/en/jsr/detail?id=107
• Source Code:
- https://github.com/jsr107
• Forum:
- https://groups.google.com/forum/?fromgroups#!forum/jsr107
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Java Caching (JCache)
How to get it
• Apache Maven (via Maven Central Repository)
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>1.0</version>
</dependency>
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Caches and Caching
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Caches and Caching
JSR107 Cache Definition:
A high-performance, low-latency data-structure* in
which an application places a temporary copy of
information that is likely to be used more than once
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Maps vs Cache APIs
java.util.Map (Java 6/7)
Key-Value Based API
Supports Atomic Updates
Entries Don’t Expire
Entries Aren’t Evicted
Entries Stored On-Heap
Store-By-Reference
javax.cache.Cache (Java 6)
Key-Value Based API
Supports Atomic Updates
Entries May Expire
Entries May Be Evicted
Entries Stored Anywhere (ie: topologies)
Store-By-Value and Store-By-Reference
Supports Integration (ie: Loaders / Writers)
Supports Observation (ie: Listeners)
Entry Processors
Statistics
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Features
• java.util.ConcurrentMap like API
• Atomic Operations
• Lock-Free
• Read-Through / Write-Through Integration Support
• Cache Event Listeners
• Fully Generic API = type-safety
• Statistics
• Annotations (for frameworks and containers)
• Store-By-Value semantics (optional store-by-reference)
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Features
• Topology Agnostic
- Topologies not defined or restricted by the specification
• Efficiently supports:
- “local” in-memory Caching and
- “distributed” server-based Caching
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache Key Classes/Interfaces
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Runtime Structure
Caching
“service loader”
CachingProvider
“SPI implementation”
CacheManager
“manager of caches”
Cache
“interface to a Cache”
*
Created &
Managed By
Created &
Managed By
“application”
Uses..
Loads &
Tracks
*
*
*
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Cache Managers
javax.cache.CacheManager
• Establishes, configures, manages and owns named Caches
- Caches may be pre-define or dynamically created at runtime
• Provides Cache infrastructure and resources
• Provides Cache “scoping” (say in a Cluster)
• Provides Cache ClassLoaders (important for store-by-value)
• Provides Cache lifecycle management
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Hello World
(via a Cache Manager)
// acquire the default CacheManager
CacheManager manager = Caching.getCacheManager();
// acquire a previously configured cache (via CacheManager)
Cache<Integer, String> cache = manager.getCache(“my-cache”,
Integer.class, String.class);
// put something in the cache
cache.put(123, “Hello World”);
// get something from the cache
String message = cache.get(123);
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Cache Interface & Methods (in IDE)
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Entry Processors
Custom atomic operations for everyone!
// acquire a cache
Cache<String, Integer> cache = manager.getCache(“my-cache”,
String.class, Integer.class);
// increment a cached value by 42, returning the old value
int value =
cache.invoke(“key”, new IncrementProcessor<>(), 42);
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Entry Processors
Custom atomic operations for everyone!
public class IncrementProcessor<K>
implements EntryProcessor<K, Integer, Integer>, Serializable {
@Override
public Integer process(MutableEntry<K, Integer> entry, Object...
arguments) {
if (entry.exists()) {
int amount =
arguments.length == 0 ? 1 :(Integer)arguments[0];
int current = entry.getValue();
entry.setValue(count + amount);
return current;
} else {
throw new IllegalStateException(“no entry exists”);
}
}
}
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Entry Processors
Custom atomic operations for everyone!
• Eliminate Round-Trips! (in distributed systems)
• Enable development of a Lock-Free API! (simplifies applications)
*May need to be Serializable (in distributed systems)
Application
CacheCache
Application
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache: Entry Processors
Which is better?
// using an entry processor?
int value = cache.invoke(
“key”, new IncrementProcessor<>(), 42);
// using a lock based API?
cache.lock(“key”);
int current = cache.get(“key”);
cache.put(“key”, current + 42);
cache.unlock(“key”);
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Annotations
• JSR107 introduces a standardized set of caching annotations,
which do method level caching interception on annotated
classes running in dependency injection containers.
• Caching annotations are becoming increasingly popular:
- Ehcache Annotations for Spring
- Spring 3’s caching annotations.
• JSR107 Annotations will be added to:
- Java EE 8 (planned?)
- Spring 4.1 (released)
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Annotation Operations
The JSR107 annotations cover the
most common cache operations:
• @CacheResult
• @CachePut
• @CacheRemove
• @CacheRemoveAll
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Fully Annotated Class Example
@CacheDefaults(cacheName = "blogManager")
public class BlogManager {
@CacheResult
public Blog getBlogEntry(String title) {...}
@CacheRemove
public void removeBlogEntry(String title) {...}
@CacheRemoveAll
public void removeAllBlogs() {...}
@CachePut
public void createEntry(@CacheKey String title,
@CacheValue Blog blog) {...}
@CacheResult
public Blog getEntryCached(String randomArg,
@CacheKey String title){...}
}
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache With Spring
• Spring
- uses JCache since 4.1 http://bit.ly/1V0q1Kp
- Added support for JCache cache annotations which can be mixed and
matched with Spring ones
• Spring Boot
- Auto-configuration for any JCache Provider http://bit.ly/1TPQKLx
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache With Java EE
• Java EE
- Can add JCache and an implementation to any Java EE app by adding the
jars and configuring it outside of EE.
• Java EE 8
- JCache added to EE8
- Add JCache Annotations
- Other integration possibilities:
• ejb timer store
• jbatch store
• JPA
- Adam Bien is prepared to lead a JSR to get JCache into EE8. 4
contributors so far. See See
https://abhirockzz.wordpress.com/2016/01/21/jcache-in-java-ee-8/
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
The Future
• JCache 1.1
• Java EE 8 Integration (2017)
• JCache 2.0 (Later)
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache 1.1
• CDDL GPL with Class Path Exception License to the spec API or
UPL.
• Errata
• TCK Challenges
• Very Close – should be Summer 2016
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
JCache 2.0
Enterprise Features
- Transactions
- Annotations Integration for EE
- Servlet 4.0 Integration / Session Caching
Core
- Java 8
- Java 9 Modularity
- Async API
- Distributed java.util.stream
- Basic cache profile: - listener, -integration, - EntryProcessor.
Timing
• Start after 1.1 is released
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Hazelcast JCache Support
Full TCK Compliant implementation for:
• Embedded Members
• Clients (caches are stored in Members)
• HD Memory Store for members and near cache
• Very Fast Persistence with the Hot Restart Store
• Very fast and highly scalable JCache Implementation
• Usable in all cloud environments. Works with CloudFoundry and
OpenShift
• Docs: http://bit.ly/1Q52yDz
© 2016 Hazelcast Inc. Confidential & Proprietary ‹#›
Questions?
Greg Luck
• @gregrluck
• greg@hazelcast.com
Thank you

More Related Content

What's hot

Postgres Plus Cloud Database on OpenStack
Postgres Plus Cloud Database on OpenStackPostgres Plus Cloud Database on OpenStack
Postgres Plus Cloud Database on OpenStackKamesh Pemmaraju
 
MySQL Performance Metrics that Matter
MySQL Performance Metrics that MatterMySQL Performance Metrics that Matter
MySQL Performance Metrics that MatterMorgan Tocker
 
MySQL Manchester TT - Performance Tuning
MySQL Manchester TT  - Performance TuningMySQL Manchester TT  - Performance Tuning
MySQL Manchester TT - Performance TuningMark Swarbrick
 
Proxysql use case scenarios fosdem17
Proxysql use case scenarios    fosdem17Proxysql use case scenarios    fosdem17
Proxysql use case scenarios fosdem17Alkin Tezuysal
 
Ehcache Architecture, Features And Usage Patterns
Ehcache Architecture, Features And Usage PatternsEhcache Architecture, Features And Usage Patterns
Ehcache Architecture, Features And Usage PatternsEduardo Pelegri-Llopart
 
MySQL Cloud Service Deep Dive
MySQL Cloud Service Deep DiveMySQL Cloud Service Deep Dive
MySQL Cloud Service Deep DiveMorgan Tocker
 
Postgres on OpenStack
Postgres on OpenStackPostgres on OpenStack
Postgres on OpenStackEDB
 
Implementing High Availability Caching with Memcached
Implementing High Availability Caching with MemcachedImplementing High Availability Caching with Memcached
Implementing High Availability Caching with MemcachedGear6
 
Squeezing Performance out of Hazelcast
Squeezing Performance out of HazelcastSqueezing Performance out of Hazelcast
Squeezing Performance out of HazelcastHazelcast
 
Distributed Caching Essential Lessons (Ts 1402)
Distributed Caching   Essential Lessons (Ts 1402)Distributed Caching   Essential Lessons (Ts 1402)
Distributed Caching Essential Lessons (Ts 1402)Yury Kaliaha
 
Mysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp : 20-June-14 : Mysql FabricMysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp : 20-June-14 : Mysql FabricMysql User Camp
 
Optimizing MySQL for Cascade Server
Optimizing MySQL for Cascade ServerOptimizing MySQL for Cascade Server
Optimizing MySQL for Cascade Serverhannonhill
 
Whirr dev-up-puppetconf2011
Whirr dev-up-puppetconf2011Whirr dev-up-puppetconf2011
Whirr dev-up-puppetconf2011Puppet
 
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Dave Stokes
 
Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsAlex Snaps
 
Time to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data GridsTime to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data GridsHazelcast
 
Hadoop Operations at LinkedIn
Hadoop Operations at LinkedInHadoop Operations at LinkedIn
Hadoop Operations at LinkedInDataWorks Summit
 
MySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksMySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksDave Stokes
 
Understanding MySql locking issues
Understanding MySql locking issuesUnderstanding MySql locking issues
Understanding MySql locking issuesOm Vikram Thapa
 
JCache (JSR107) - QCon London 2015 & JBCNConf Barcelona 2015
JCache (JSR107) - QCon London 2015 & JBCNConf Barcelona 2015JCache (JSR107) - QCon London 2015 & JBCNConf Barcelona 2015
JCache (JSR107) - QCon London 2015 & JBCNConf Barcelona 2015David Brimley
 

What's hot (20)

Postgres Plus Cloud Database on OpenStack
Postgres Plus Cloud Database on OpenStackPostgres Plus Cloud Database on OpenStack
Postgres Plus Cloud Database on OpenStack
 
MySQL Performance Metrics that Matter
MySQL Performance Metrics that MatterMySQL Performance Metrics that Matter
MySQL Performance Metrics that Matter
 
MySQL Manchester TT - Performance Tuning
MySQL Manchester TT  - Performance TuningMySQL Manchester TT  - Performance Tuning
MySQL Manchester TT - Performance Tuning
 
Proxysql use case scenarios fosdem17
Proxysql use case scenarios    fosdem17Proxysql use case scenarios    fosdem17
Proxysql use case scenarios fosdem17
 
Ehcache Architecture, Features And Usage Patterns
Ehcache Architecture, Features And Usage PatternsEhcache Architecture, Features And Usage Patterns
Ehcache Architecture, Features And Usage Patterns
 
MySQL Cloud Service Deep Dive
MySQL Cloud Service Deep DiveMySQL Cloud Service Deep Dive
MySQL Cloud Service Deep Dive
 
Postgres on OpenStack
Postgres on OpenStackPostgres on OpenStack
Postgres on OpenStack
 
Implementing High Availability Caching with Memcached
Implementing High Availability Caching with MemcachedImplementing High Availability Caching with Memcached
Implementing High Availability Caching with Memcached
 
Squeezing Performance out of Hazelcast
Squeezing Performance out of HazelcastSqueezing Performance out of Hazelcast
Squeezing Performance out of Hazelcast
 
Distributed Caching Essential Lessons (Ts 1402)
Distributed Caching   Essential Lessons (Ts 1402)Distributed Caching   Essential Lessons (Ts 1402)
Distributed Caching Essential Lessons (Ts 1402)
 
Mysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp : 20-June-14 : Mysql FabricMysql User Camp : 20-June-14 : Mysql Fabric
Mysql User Camp : 20-June-14 : Mysql Fabric
 
Optimizing MySQL for Cascade Server
Optimizing MySQL for Cascade ServerOptimizing MySQL for Cascade Server
Optimizing MySQL for Cascade Server
 
Whirr dev-up-puppetconf2011
Whirr dev-up-puppetconf2011Whirr dev-up-puppetconf2011
Whirr dev-up-puppetconf2011
 
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
Scaling MySQl 1 to N Servers -- Los Angelese MySQL User Group Feb 2014
 
Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroids
 
Time to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data GridsTime to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data Grids
 
Hadoop Operations at LinkedIn
Hadoop Operations at LinkedInHadoop Operations at LinkedIn
Hadoop Operations at LinkedIn
 
MySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksMySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disks
 
Understanding MySql locking issues
Understanding MySql locking issuesUnderstanding MySql locking issues
Understanding MySql locking issues
 
JCache (JSR107) - QCon London 2015 & JBCNConf Barcelona 2015
JCache (JSR107) - QCon London 2015 & JBCNConf Barcelona 2015JCache (JSR107) - QCon London 2015 & JBCNConf Barcelona 2015
JCache (JSR107) - QCon London 2015 & JBCNConf Barcelona 2015
 

Viewers also liked (14)

Tim hieu ve nganh quan he cong chung
Tim hieu ve nganh quan he cong chungTim hieu ve nganh quan he cong chung
Tim hieu ve nganh quan he cong chung
 
7 hábitos de la gente altamente efectiva
7 hábitos de la gente altamente efectiva7 hábitos de la gente altamente efectiva
7 hábitos de la gente altamente efectiva
 
Mãe
MãeMãe
Mãe
 
Aniurcar pérez ecología
Aniurcar pérez ecologíaAniurcar pérez ecología
Aniurcar pérez ecología
 
The Tugler Show Episode 7
The Tugler Show   Episode 7The Tugler Show   Episode 7
The Tugler Show Episode 7
 
การสะท้อนของแสง
การสะท้อนของแสงการสะท้อนของแสง
การสะท้อนของแสง
 
Vitrine Tupperware 1/2016 - Juliana Marchetti
Vitrine Tupperware 1/2016 - Juliana MarchettiVitrine Tupperware 1/2016 - Juliana Marchetti
Vitrine Tupperware 1/2016 - Juliana Marchetti
 
Ekosistema.4.taldea.mendi
Ekosistema.4.taldea.mendiEkosistema.4.taldea.mendi
Ekosistema.4.taldea.mendi
 
Chocolate Toast Crunch Cereal
Chocolate Toast Crunch CerealChocolate Toast Crunch Cereal
Chocolate Toast Crunch Cereal
 
POLYMERASE CHAIN REACTION
POLYMERASE CHAIN REACTIONPOLYMERASE CHAIN REACTION
POLYMERASE CHAIN REACTION
 
IOCL-REPORT
IOCL-REPORTIOCL-REPORT
IOCL-REPORT
 
สื่อการสอน Internet 2559
สื่อการสอน Internet  2559สื่อการสอน Internet  2559
สื่อการสอน Internet 2559
 
Труды Тимофеевой Ю. Ф.
Труды Тимофеевой Ю. Ф.Труды Тимофеевой Ю. Ф.
Труды Тимофеевой Ю. Ф.
 
Труды Щагина Э. М.
Труды Щагина Э. М.Труды Щагина Э. М.
Труды Щагина Э. М.
 

Similar to IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using JCache

Using JCache to speed up your apps
Using JCache to speed up your appsUsing JCache to speed up your apps
Using JCache to speed up your appsVassilis Bekiaris
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018harvraja
 
In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014Hazelcast
 
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld
 
MySQL :What's New #GIDS16
MySQL :What's New #GIDS16MySQL :What's New #GIDS16
MySQL :What's New #GIDS16Sanjay Manwani
 
Xap memory xtend-tutorial-2014
Xap memory xtend-tutorial-2014Xap memory xtend-tutorial-2014
Xap memory xtend-tutorial-2014Shay Hassidim
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 
Geek Nights Hong Kong
Geek Nights Hong KongGeek Nights Hong Kong
Geek Nights Hong KongRahul Gupta
 
Where Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsWhere Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsConcentric Sky
 
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!Tinku Ajit
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQLKonstantin Gredeskoul
 
Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using HazelcastTaras Matyashovsky
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQLTed Wennmark
 
Accelerating analytics in the cloud with the Starburst Presto + Alluxio stack
Accelerating analytics in the cloud with the Starburst Presto + Alluxio stackAccelerating analytics in the cloud with the Starburst Presto + Alluxio stack
Accelerating analytics in the cloud with the Starburst Presto + Alluxio stackAlluxio, Inc.
 
Building Effective Near-Real-Time Analytics with Spark Streaming and Kudu
Building Effective Near-Real-Time Analytics with Spark Streaming and KuduBuilding Effective Near-Real-Time Analytics with Spark Streaming and Kudu
Building Effective Near-Real-Time Analytics with Spark Streaming and KuduJeremy Beard
 
OpenStack Cinder, Implementation Today and New Trends for Tomorrow
OpenStack Cinder, Implementation Today and New Trends for TomorrowOpenStack Cinder, Implementation Today and New Trends for Tomorrow
OpenStack Cinder, Implementation Today and New Trends for TomorrowEd Balduf
 
Rails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeRails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeMichael May
 
JCache data store for Apache Gora
JCache data store for Apache GoraJCache data store for Apache Gora
JCache data store for Apache GoraKevin Ratnasekera
 
JSR107 State of the Union JavaOne 2013
JSR107  State of the Union JavaOne 2013JSR107  State of the Union JavaOne 2013
JSR107 State of the Union JavaOne 2013Hazelcast
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django ArchitectureRami Sayar
 

Similar to IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using JCache (20)

Using JCache to speed up your apps
Using JCache to speed up your appsUsing JCache to speed up your apps
Using JCache to speed up your apps
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018
 
In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014
 
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right
 
MySQL :What's New #GIDS16
MySQL :What's New #GIDS16MySQL :What's New #GIDS16
MySQL :What's New #GIDS16
 
Xap memory xtend-tutorial-2014
Xap memory xtend-tutorial-2014Xap memory xtend-tutorial-2014
Xap memory xtend-tutorial-2014
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
Geek Nights Hong Kong
Geek Nights Hong KongGeek Nights Hong Kong
Geek Nights Hong Kong
 
Where Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsWhere Django Caching Bust at the Seams
Where Django Caching Bust at the Seams
 
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!
MySQL Enterprise Backup: Better Very Large Database Backup & Recovery and More!!
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using Hazelcast
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQL
 
Accelerating analytics in the cloud with the Starburst Presto + Alluxio stack
Accelerating analytics in the cloud with the Starburst Presto + Alluxio stackAccelerating analytics in the cloud with the Starburst Presto + Alluxio stack
Accelerating analytics in the cloud with the Starburst Presto + Alluxio stack
 
Building Effective Near-Real-Time Analytics with Spark Streaming and Kudu
Building Effective Near-Real-Time Analytics with Spark Streaming and KuduBuilding Effective Near-Real-Time Analytics with Spark Streaming and Kudu
Building Effective Near-Real-Time Analytics with Spark Streaming and Kudu
 
OpenStack Cinder, Implementation Today and New Trends for Tomorrow
OpenStack Cinder, Implementation Today and New Trends for TomorrowOpenStack Cinder, Implementation Today and New Trends for Tomorrow
OpenStack Cinder, Implementation Today and New Trends for Tomorrow
 
Rails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeRails Caching Secrets from the Edge
Rails Caching Secrets from the Edge
 
JCache data store for Apache Gora
JCache data store for Apache GoraJCache data store for Apache Gora
JCache data store for Apache Gora
 
JSR107 State of the Union JavaOne 2013
JSR107  State of the Union JavaOne 2013JSR107  State of the Union JavaOne 2013
JSR107 State of the Union JavaOne 2013
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django Architecture
 

More from In-Memory Computing Summit

IMC Summit 2016 Breakout - Per Minoborg - Work with Multiple Hot Terabytes in...
IMC Summit 2016 Breakout - Per Minoborg - Work with Multiple Hot Terabytes in...IMC Summit 2016 Breakout - Per Minoborg - Work with Multiple Hot Terabytes in...
IMC Summit 2016 Breakout - Per Minoborg - Work with Multiple Hot Terabytes in...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Henning Andersen - Using Lock-free and Wait-free I...
IMC Summit 2016 Breakout - Henning Andersen - Using Lock-free and Wait-free I...IMC Summit 2016 Breakout - Henning Andersen - Using Lock-free and Wait-free I...
IMC Summit 2016 Breakout - Henning Andersen - Using Lock-free and Wait-free I...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Roman Shtykh - Apache Ignite as a Data Processing Hub
IMC Summit 2016 Breakout - Roman Shtykh - Apache Ignite as a Data Processing HubIMC Summit 2016 Breakout - Roman Shtykh - Apache Ignite as a Data Processing Hub
IMC Summit 2016 Breakout - Roman Shtykh - Apache Ignite as a Data Processing HubIn-Memory Computing Summit
 
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...In-Memory Computing Summit
 
IMC Summit 2016 Innovation - Derek Nelson - PipelineDB: The Streaming-SQL Dat...
IMC Summit 2016 Innovation - Derek Nelson - PipelineDB: The Streaming-SQL Dat...IMC Summit 2016 Innovation - Derek Nelson - PipelineDB: The Streaming-SQL Dat...
IMC Summit 2016 Innovation - Derek Nelson - PipelineDB: The Streaming-SQL Dat...In-Memory Computing Summit
 
IMC Summit 2016 Innovation - Dennis Duckworth - Lambda-B-Gone: The In-memory ...
IMC Summit 2016 Innovation - Dennis Duckworth - Lambda-B-Gone: The In-memory ...IMC Summit 2016 Innovation - Dennis Duckworth - Lambda-B-Gone: The In-memory ...
IMC Summit 2016 Innovation - Dennis Duckworth - Lambda-B-Gone: The In-memory ...In-Memory Computing Summit
 
IMC Summit 2016 Innovation - Steve Wilkes - Tap Into Your Enterprise – Why Da...
IMC Summit 2016 Innovation - Steve Wilkes - Tap Into Your Enterprise – Why Da...IMC Summit 2016 Innovation - Steve Wilkes - Tap Into Your Enterprise – Why Da...
IMC Summit 2016 Innovation - Steve Wilkes - Tap Into Your Enterprise – Why Da...In-Memory Computing Summit
 
IMC Summit 2016 Innovation - Girish Mutreja - Unveiling the X Platform
IMC Summit 2016 Innovation - Girish Mutreja - Unveiling the X PlatformIMC Summit 2016 Innovation - Girish Mutreja - Unveiling the X Platform
IMC Summit 2016 Innovation - Girish Mutreja - Unveiling the X PlatformIn-Memory Computing Summit
 
IMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage Tier
IMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage TierIMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage Tier
IMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage TierIn-Memory Computing Summit
 
IMC Summit 2016 Breakout - Brian Bulkowski - NVMe, Storage Class Memory and O...
IMC Summit 2016 Breakout - Brian Bulkowski - NVMe, Storage Class Memory and O...IMC Summit 2016 Breakout - Brian Bulkowski - NVMe, Storage Class Memory and O...
IMC Summit 2016 Breakout - Brian Bulkowski - NVMe, Storage Class Memory and O...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Yanping Wang - Non-volatile Generic Object Program...
IMC Summit 2016 Breakout - Yanping Wang - Non-volatile Generic Object Program...IMC Summit 2016 Breakout - Yanping Wang - Non-volatile Generic Object Program...
IMC Summit 2016 Breakout - Yanping Wang - Non-volatile Generic Object Program...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Andy Pavlo - What Non-Volatile Memory Means for th...
IMC Summit 2016 Breakout - Andy Pavlo - What Non-Volatile Memory Means for th...IMC Summit 2016 Breakout - Andy Pavlo - What Non-Volatile Memory Means for th...
IMC Summit 2016 Breakout - Andy Pavlo - What Non-Volatile Memory Means for th...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Gordon Patrick - Developments in Persistent Memory
IMC Summit 2016 Breakout - Gordon Patrick - Developments in Persistent MemoryIMC Summit 2016 Breakout - Gordon Patrick - Developments in Persistent Memory
IMC Summit 2016 Breakout - Gordon Patrick - Developments in Persistent MemoryIn-Memory Computing Summit
 
IMC Summit 2016 Breakout - Girish Kathalagiri - Decision Making with MLLIB, S...
IMC Summit 2016 Breakout - Girish Kathalagiri - Decision Making with MLLIB, S...IMC Summit 2016 Breakout - Girish Kathalagiri - Decision Making with MLLIB, S...
IMC Summit 2016 Breakout - Girish Kathalagiri - Decision Making with MLLIB, S...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Steve Wikes - Making IMC Enterprise Grade
IMC Summit 2016 Breakout - Steve Wikes - Making IMC Enterprise GradeIMC Summit 2016 Breakout - Steve Wikes - Making IMC Enterprise Grade
IMC Summit 2016 Breakout - Steve Wikes - Making IMC Enterprise GradeIn-Memory Computing Summit
 
IMC Summit 2016 Breakout - Noah Arliss - The Truth: How to Test Your Distribu...
IMC Summit 2016 Breakout - Noah Arliss - The Truth: How to Test Your Distribu...IMC Summit 2016 Breakout - Noah Arliss - The Truth: How to Test Your Distribu...
IMC Summit 2016 Breakout - Noah Arliss - The Truth: How to Test Your Distribu...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of Statelessness
IMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of StatelessnessIMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of Statelessness
IMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of StatelessnessIn-Memory Computing Summit
 
IMC Summit 2016 Breakout - Girish Mutreja - Extreme Transaction Processing in...
IMC Summit 2016 Breakout - Girish Mutreja - Extreme Transaction Processing in...IMC Summit 2016 Breakout - Girish Mutreja - Extreme Transaction Processing in...
IMC Summit 2016 Breakout - Girish Mutreja - Extreme Transaction Processing in...In-Memory Computing Summit
 
IMC Summit 2016 Breakout - Pandurang Naik - Demystifying In-Memory Data Grid,...
IMC Summit 2016 Breakout - Pandurang Naik - Demystifying In-Memory Data Grid,...IMC Summit 2016 Breakout - Pandurang Naik - Demystifying In-Memory Data Grid,...
IMC Summit 2016 Breakout - Pandurang Naik - Demystifying In-Memory Data Grid,...In-Memory Computing Summit
 

More from In-Memory Computing Summit (20)

IMC Summit 2016 Breakout - Per Minoborg - Work with Multiple Hot Terabytes in...
IMC Summit 2016 Breakout - Per Minoborg - Work with Multiple Hot Terabytes in...IMC Summit 2016 Breakout - Per Minoborg - Work with Multiple Hot Terabytes in...
IMC Summit 2016 Breakout - Per Minoborg - Work with Multiple Hot Terabytes in...
 
IMC Summit 2016 Breakout - Henning Andersen - Using Lock-free and Wait-free I...
IMC Summit 2016 Breakout - Henning Andersen - Using Lock-free and Wait-free I...IMC Summit 2016 Breakout - Henning Andersen - Using Lock-free and Wait-free I...
IMC Summit 2016 Breakout - Henning Andersen - Using Lock-free and Wait-free I...
 
IMC Summit 2016 Breakout - Roman Shtykh - Apache Ignite as a Data Processing Hub
IMC Summit 2016 Breakout - Roman Shtykh - Apache Ignite as a Data Processing HubIMC Summit 2016 Breakout - Roman Shtykh - Apache Ignite as a Data Processing Hub
IMC Summit 2016 Breakout - Roman Shtykh - Apache Ignite as a Data Processing Hub
 
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
IMC Summit 2016 Breakout - Nikita Shamgunov - Propelling IoT Innovation with ...
 
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
 
IMC Summit 2016 Innovation - Derek Nelson - PipelineDB: The Streaming-SQL Dat...
IMC Summit 2016 Innovation - Derek Nelson - PipelineDB: The Streaming-SQL Dat...IMC Summit 2016 Innovation - Derek Nelson - PipelineDB: The Streaming-SQL Dat...
IMC Summit 2016 Innovation - Derek Nelson - PipelineDB: The Streaming-SQL Dat...
 
IMC Summit 2016 Innovation - Dennis Duckworth - Lambda-B-Gone: The In-memory ...
IMC Summit 2016 Innovation - Dennis Duckworth - Lambda-B-Gone: The In-memory ...IMC Summit 2016 Innovation - Dennis Duckworth - Lambda-B-Gone: The In-memory ...
IMC Summit 2016 Innovation - Dennis Duckworth - Lambda-B-Gone: The In-memory ...
 
IMC Summit 2016 Innovation - Steve Wilkes - Tap Into Your Enterprise – Why Da...
IMC Summit 2016 Innovation - Steve Wilkes - Tap Into Your Enterprise – Why Da...IMC Summit 2016 Innovation - Steve Wilkes - Tap Into Your Enterprise – Why Da...
IMC Summit 2016 Innovation - Steve Wilkes - Tap Into Your Enterprise – Why Da...
 
IMC Summit 2016 Innovation - Girish Mutreja - Unveiling the X Platform
IMC Summit 2016 Innovation - Girish Mutreja - Unveiling the X PlatformIMC Summit 2016 Innovation - Girish Mutreja - Unveiling the X Platform
IMC Summit 2016 Innovation - Girish Mutreja - Unveiling the X Platform
 
IMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage Tier
IMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage TierIMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage Tier
IMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage Tier
 
IMC Summit 2016 Breakout - Brian Bulkowski - NVMe, Storage Class Memory and O...
IMC Summit 2016 Breakout - Brian Bulkowski - NVMe, Storage Class Memory and O...IMC Summit 2016 Breakout - Brian Bulkowski - NVMe, Storage Class Memory and O...
IMC Summit 2016 Breakout - Brian Bulkowski - NVMe, Storage Class Memory and O...
 
IMC Summit 2016 Breakout - Yanping Wang - Non-volatile Generic Object Program...
IMC Summit 2016 Breakout - Yanping Wang - Non-volatile Generic Object Program...IMC Summit 2016 Breakout - Yanping Wang - Non-volatile Generic Object Program...
IMC Summit 2016 Breakout - Yanping Wang - Non-volatile Generic Object Program...
 
IMC Summit 2016 Breakout - Andy Pavlo - What Non-Volatile Memory Means for th...
IMC Summit 2016 Breakout - Andy Pavlo - What Non-Volatile Memory Means for th...IMC Summit 2016 Breakout - Andy Pavlo - What Non-Volatile Memory Means for th...
IMC Summit 2016 Breakout - Andy Pavlo - What Non-Volatile Memory Means for th...
 
IMC Summit 2016 Breakout - Gordon Patrick - Developments in Persistent Memory
IMC Summit 2016 Breakout - Gordon Patrick - Developments in Persistent MemoryIMC Summit 2016 Breakout - Gordon Patrick - Developments in Persistent Memory
IMC Summit 2016 Breakout - Gordon Patrick - Developments in Persistent Memory
 
IMC Summit 2016 Breakout - Girish Kathalagiri - Decision Making with MLLIB, S...
IMC Summit 2016 Breakout - Girish Kathalagiri - Decision Making with MLLIB, S...IMC Summit 2016 Breakout - Girish Kathalagiri - Decision Making with MLLIB, S...
IMC Summit 2016 Breakout - Girish Kathalagiri - Decision Making with MLLIB, S...
 
IMC Summit 2016 Breakout - Steve Wikes - Making IMC Enterprise Grade
IMC Summit 2016 Breakout - Steve Wikes - Making IMC Enterprise GradeIMC Summit 2016 Breakout - Steve Wikes - Making IMC Enterprise Grade
IMC Summit 2016 Breakout - Steve Wikes - Making IMC Enterprise Grade
 
IMC Summit 2016 Breakout - Noah Arliss - The Truth: How to Test Your Distribu...
IMC Summit 2016 Breakout - Noah Arliss - The Truth: How to Test Your Distribu...IMC Summit 2016 Breakout - Noah Arliss - The Truth: How to Test Your Distribu...
IMC Summit 2016 Breakout - Noah Arliss - The Truth: How to Test Your Distribu...
 
IMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of Statelessness
IMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of StatelessnessIMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of Statelessness
IMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of Statelessness
 
IMC Summit 2016 Breakout - Girish Mutreja - Extreme Transaction Processing in...
IMC Summit 2016 Breakout - Girish Mutreja - Extreme Transaction Processing in...IMC Summit 2016 Breakout - Girish Mutreja - Extreme Transaction Processing in...
IMC Summit 2016 Breakout - Girish Mutreja - Extreme Transaction Processing in...
 
IMC Summit 2016 Breakout - Pandurang Naik - Demystifying In-Memory Data Grid,...
IMC Summit 2016 Breakout - Pandurang Naik - Demystifying In-Memory Data Grid,...IMC Summit 2016 Breakout - Pandurang Naik - Demystifying In-Memory Data Grid,...
IMC Summit 2016 Breakout - Pandurang Naik - Demystifying In-Memory Data Grid,...
 

Recently uploaded

Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDRafezzaman
 
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...soniya singh
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFAAndrei Kaleshka
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130Suhani Kapoor
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]📊 Markus Baersch
 
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理e4aez8ss
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样vhwb25kk
 
B2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxB2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxStephen266013
 
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls DubaiDubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls Dubaihf8803863
 
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort servicejennyeacort
 
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degreeyuu sss
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfLars Albertsson
 
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Sapana Sha
 
Call Girls In Mahipalpur O9654467111 Escorts Service
Call Girls In Mahipalpur O9654467111  Escorts ServiceCall Girls In Mahipalpur O9654467111  Escorts Service
Call Girls In Mahipalpur O9654467111 Escorts ServiceSapana Sha
 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfSocial Samosa
 
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...dajasot375
 
ASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel CanterASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel Cantervoginip
 

Recently uploaded (20)

Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
 
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
High Class Call Girls Noida Sector 39 Aarushi 🔝8264348440🔝 Independent Escort...
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFA
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]
 
E-Commerce Order PredictionShraddha Kamble.pptx
E-Commerce Order PredictionShraddha Kamble.pptxE-Commerce Order PredictionShraddha Kamble.pptx
E-Commerce Order PredictionShraddha Kamble.pptx
 
Call Girls in Saket 99530🔝 56974 Escort Service
Call Girls in Saket 99530🔝 56974 Escort ServiceCall Girls in Saket 99530🔝 56974 Escort Service
Call Girls in Saket 99530🔝 56974 Escort Service
 
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
 
B2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docxB2 Creative Industry Response Evaluation.docx
B2 Creative Industry Response Evaluation.docx
 
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls DubaiDubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
 
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
 
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdf
 
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
 
Call Girls In Mahipalpur O9654467111 Escorts Service
Call Girls In Mahipalpur O9654467111  Escorts ServiceCall Girls In Mahipalpur O9654467111  Escorts Service
Call Girls In Mahipalpur O9654467111 Escorts Service
 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
 
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
Indian Call Girls in Abu Dhabi O5286O24O8 Call Girls in Abu Dhabi By Independ...
 
ASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel CanterASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel Canter
 

IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using JCache

  • 1. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› GREG LUCK, CO-SPEC LEAD JSR107 @GREGRLUCK CEO | HAZELCAST FOUNDER | EHCACHE FORMER CTO 23 MAY 2016 How to speed up your application using JCache See all the presentations from the In-Memory Computing Summit at http://imcsummit.org
  • 2. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Agenda • Introduction to Caching • Java Caching (JCache), JSR-107
  • 3. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Introduction to Caching
  • 4. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Benefits of Caching • Performance • Offload expensive or non-scalable parts of your architecture • Scale up – get the most out of one machine • Scale out – add more capacity with more machines • Excellent Buffer against load variability And… • Usually very fast and easy to apply
  • 5. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› When to Use Caching • When applications use the same data more than once • When cost (time / resources) of making an initial copy is less than fetching or producing the data again or when faster to request from a Cache
  • 6. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Common Problem Areas that Benefit Anything Web Scale Anything where the data is across the network Compound Data Objects Data Persistence 1 3 2 4
  • 7. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Database Caching Moving data from the database into the cache increases processing speed and can reduce database licensing and maintenance costs. Speed ✓ Data Store Application Cache Application Cache Application Cache Application Cache Costs ✓ Scalability ✓ ~200 us Average Response Time
  • 8. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Caches are built primarily in RAM in-process or distributed NVRAM/Flash/SSD (serialized form) Local Storage Heap (Objects) Opaque to GC in RAM (serialized form) <100 ns < 100ns +deserialization time 2 500 1,000+ Latency Size (GB) Network Storage < 50us +deserialization time < 140us for 1Gbps < 70us for 10Gbps/40Gbps +deserialization time 20,000+Scaleout across the network (serialized form)
  • 9. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› ‘s law Estimated Performance Improvements Predicted System Speedup = 1 / ((1 – Proportion Sped Up) + Proportion Sped Up / Speed up))
  • 10. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Cache Efficiency Cache Efficiency = cache hits / total hits • High efficiency = high offload • High efficiency = high performance • How to increase: - Put reference data in the cache - Put long lived in the cache. - Consider frequency of mutability of data - Put highly used data in cache - Increase the size of the cache. Today you can create TB sized caches
  • 11. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Problems to Consider • Standalone Caches and the N * problem - As each entry expires, the backing system gets N requests for data where n is the number of standalone caches. Solution: Use a distributed cache • Consistency with the System of Record - How to keep the cache in sync with changes in a backing system. Solution: Match mutability of data with data safety configuration. Update the cache and backing store at the same time. • Consistency with other cache nodes - How to keep all cache nodes in sync: Solution: Use a distributed cache and match consistency configuration with data mutability
  • 12. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› New JCache Standard (JSR107)
  • 13. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Java Caching (JCache) What? • Java Caching (JCache) standardized Caching for the Java Platform* • A common mechanism to create, access, update and remove information from Caches How? • JSR-107: Java Caching Specification (JCache) • Java Community Process (JCP) 2.9
  • 14. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Java Caching (JCache) Why? • Standardize! Standardize! Standardize! - Core Caching Concepts - Core Caching API • Provide application portability between Caching solutions - Big & Small, Open & Commercial • Caching is ubiquitous! • Allows frameworks to depend on JCache and stop creating specific integrations to each and every cache
  • 15. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Java Caching (Jcache) Recent History Item Date JCache Final Spec Released 18 March 2014 Spring 4.1 September 2014 Hazelcast 3.3.1 TCK Compliant September 2014 Hazelcast 3.4 (with High-Density Memory Store) November 2014 Hazelcast 3.5 - added HD Memory Store to near cache) June 2015 Most project vendors create implementations June 2014 - June 2015 Hazelcast 3.6 (split brain handler, quorums) January 2016 JCache 1.1 Maintenance Release Summer 2016 JCache 2.0 Will start after 1.1
  • 16. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Java Caching (JCache) Which Platform? java.util.Map (Java 6/7) Target Platform Specification (SPEC) Java 6+ (SE or EE) Reference Implementation (RI) Java 7+ (SE or EE) Technology Compatibility Kit (TCK) Java 7+ (SE or EE) Demos and Samples Java 7+ (SE or EE)
  • 17. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Implementations • JCache Reference Implementation • Ehcache • Hazelcast • Oracle Coherence • Infinispan • GridGain/Apache Ignite • TayzGrid • Caffeine • Cache2K (in progress) • Blazing Cache (in progress) • tCache (Trivago in process) Keep Track • https://jcp.org/aboutJava/communityprocess/i mplementations/jsr107/index.html • https://github.com/cruftex/jsr107-test- zoo/blob/master/report.md
  • 18. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Non-Implementation: Gemfire/Geode Gemfire/Geode have no plans to implement Why? • Gemfire and Geode are directly supported in Spring • Because Spring supports JCache cache annotations you can use Gemfire/Geode from Spring but that is it. See: • http://apache-geode-incubating-developers- forum.70738.x6.nabble.com/JCache-JSR-107-support-td1255.html Campaign to have Pivotal Support JCache: #PivotalJCache campaign for @PivotalGemFire to support #JSR107 #JCache. Please retweet or mention #PivotalJCache
  • 19. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Relationship to NoSQL Difficult/Impossible for NoSQL to fully implement the spec • Server Side code execution including: Entry Processors, Listeners, Write-Through etc. • Strong Consistency is the default consistency model and is not supported by most/all NoSQL. Likely that Couchbase will release a partial implementation leaving out EntryProcessor and some other methods with an UnsupportedOperationException if these methods are called. They have Developer Preview 2 out. Using With NoSQL • Use NoSQL like a database and read-through/write-though to it using CacheLoader/CacheWriter. • NoSQL gives you scale our persistence - cache gives you very low latencies
  • 20. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Java Caching (JCache) Project Hosting • JCP Project: - http://jcp.org/en/jsr/detail?id=107 • Source Code: - https://github.com/jsr107 • Forum: - https://groups.google.com/forum/?fromgroups#!forum/jsr107
  • 21. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Java Caching (JCache) How to get it • Apache Maven (via Maven Central Repository) <dependency> <groupId>javax.cache</groupId> <artifactId>cache-api</artifactId> <version>1.0</version> </dependency>
  • 22. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Caches and Caching
  • 23. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Caches and Caching JSR107 Cache Definition: A high-performance, low-latency data-structure* in which an application places a temporary copy of information that is likely to be used more than once
  • 24. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Maps vs Cache APIs java.util.Map (Java 6/7) Key-Value Based API Supports Atomic Updates Entries Don’t Expire Entries Aren’t Evicted Entries Stored On-Heap Store-By-Reference javax.cache.Cache (Java 6) Key-Value Based API Supports Atomic Updates Entries May Expire Entries May Be Evicted Entries Stored Anywhere (ie: topologies) Store-By-Value and Store-By-Reference Supports Integration (ie: Loaders / Writers) Supports Observation (ie: Listeners) Entry Processors Statistics
  • 25. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Features • java.util.ConcurrentMap like API • Atomic Operations • Lock-Free • Read-Through / Write-Through Integration Support • Cache Event Listeners • Fully Generic API = type-safety • Statistics • Annotations (for frameworks and containers) • Store-By-Value semantics (optional store-by-reference)
  • 26. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Features • Topology Agnostic - Topologies not defined or restricted by the specification • Efficiently supports: - “local” in-memory Caching and - “distributed” server-based Caching
  • 27. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache Key Classes/Interfaces
  • 28. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Runtime Structure Caching “service loader” CachingProvider “SPI implementation” CacheManager “manager of caches” Cache “interface to a Cache” * Created & Managed By Created & Managed By “application” Uses.. Loads & Tracks * * *
  • 29. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Cache Managers javax.cache.CacheManager • Establishes, configures, manages and owns named Caches - Caches may be pre-define or dynamically created at runtime • Provides Cache infrastructure and resources • Provides Cache “scoping” (say in a Cluster) • Provides Cache ClassLoaders (important for store-by-value) • Provides Cache lifecycle management
  • 30. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Hello World (via a Cache Manager) // acquire the default CacheManager CacheManager manager = Caching.getCacheManager(); // acquire a previously configured cache (via CacheManager) Cache<Integer, String> cache = manager.getCache(“my-cache”, Integer.class, String.class); // put something in the cache cache.put(123, “Hello World”); // get something from the cache String message = cache.get(123);
  • 31. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Cache Interface & Methods (in IDE)
  • 32. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Entry Processors Custom atomic operations for everyone! // acquire a cache Cache<String, Integer> cache = manager.getCache(“my-cache”, String.class, Integer.class); // increment a cached value by 42, returning the old value int value = cache.invoke(“key”, new IncrementProcessor<>(), 42);
  • 33. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Entry Processors Custom atomic operations for everyone! public class IncrementProcessor<K> implements EntryProcessor<K, Integer, Integer>, Serializable { @Override public Integer process(MutableEntry<K, Integer> entry, Object... arguments) { if (entry.exists()) { int amount = arguments.length == 0 ? 1 :(Integer)arguments[0]; int current = entry.getValue(); entry.setValue(count + amount); return current; } else { throw new IllegalStateException(“no entry exists”); } } }
  • 34. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Entry Processors Custom atomic operations for everyone! • Eliminate Round-Trips! (in distributed systems) • Enable development of a Lock-Free API! (simplifies applications) *May need to be Serializable (in distributed systems) Application CacheCache Application
  • 35. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache: Entry Processors Which is better? // using an entry processor? int value = cache.invoke( “key”, new IncrementProcessor<>(), 42); // using a lock based API? cache.lock(“key”); int current = cache.get(“key”); cache.put(“key”, current + 42); cache.unlock(“key”);
  • 36. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Annotations • JSR107 introduces a standardized set of caching annotations, which do method level caching interception on annotated classes running in dependency injection containers. • Caching annotations are becoming increasingly popular: - Ehcache Annotations for Spring - Spring 3’s caching annotations. • JSR107 Annotations will be added to: - Java EE 8 (planned?) - Spring 4.1 (released)
  • 37. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Annotation Operations The JSR107 annotations cover the most common cache operations: • @CacheResult • @CachePut • @CacheRemove • @CacheRemoveAll
  • 38. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Fully Annotated Class Example @CacheDefaults(cacheName = "blogManager") public class BlogManager { @CacheResult public Blog getBlogEntry(String title) {...} @CacheRemove public void removeBlogEntry(String title) {...} @CacheRemoveAll public void removeAllBlogs() {...} @CachePut public void createEntry(@CacheKey String title, @CacheValue Blog blog) {...} @CacheResult public Blog getEntryCached(String randomArg, @CacheKey String title){...} }
  • 39. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache With Spring • Spring - uses JCache since 4.1 http://bit.ly/1V0q1Kp - Added support for JCache cache annotations which can be mixed and matched with Spring ones • Spring Boot - Auto-configuration for any JCache Provider http://bit.ly/1TPQKLx
  • 40. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache With Java EE • Java EE - Can add JCache and an implementation to any Java EE app by adding the jars and configuring it outside of EE. • Java EE 8 - JCache added to EE8 - Add JCache Annotations - Other integration possibilities: • ejb timer store • jbatch store • JPA - Adam Bien is prepared to lead a JSR to get JCache into EE8. 4 contributors so far. See See https://abhirockzz.wordpress.com/2016/01/21/jcache-in-java-ee-8/
  • 41. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› The Future • JCache 1.1 • Java EE 8 Integration (2017) • JCache 2.0 (Later)
  • 42. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache 1.1 • CDDL GPL with Class Path Exception License to the spec API or UPL. • Errata • TCK Challenges • Very Close – should be Summer 2016
  • 43. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› JCache 2.0 Enterprise Features - Transactions - Annotations Integration for EE - Servlet 4.0 Integration / Session Caching Core - Java 8 - Java 9 Modularity - Async API - Distributed java.util.stream - Basic cache profile: - listener, -integration, - EntryProcessor. Timing • Start after 1.1 is released
  • 44. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Hazelcast JCache Support Full TCK Compliant implementation for: • Embedded Members • Clients (caches are stored in Members) • HD Memory Store for members and near cache • Very Fast Persistence with the Hot Restart Store • Very fast and highly scalable JCache Implementation • Usable in all cloud environments. Works with CloudFoundry and OpenShift • Docs: http://bit.ly/1Q52yDz
  • 45. © 2016 Hazelcast Inc. Confidential & Proprietary ‹#› Questions? Greg Luck • @gregrluck • greg@hazelcast.com

Editor's Notes

  1. Caching as a solution automatically provides speed. And a distributed cache provides scale out.
  2. Caching as a solution automatically provides speed. And a distributed cache provides scale out.
  3. Most Amdahl’s Law analyses will turn up the following bottlenecks: Web: static content (solved by edge caches such as Akamai, Limelight, CloudFront), origin page caching and page fragment caching. e.g. Can be hundreds of DB lookups to build up a page Collections Caching: Storing precomputed or transformed results. E.g. hotels in a region External Systems: Web services, Data: Data Stores
  4. But in Ehcache you should be always able to fit what you need to in cache. Even beyond the limits of local storage, the partitioned cache available with Terracotta Server Array takes you into the terabytes. And the speeds shown are worst case. The average for a given cache will heavily favour the highest points of the pyramid. Overall throughput is scaleable by increasing threads, cpus and nodes.
  5. Amdahl's law, after Gene Amdahl, is used to find the system speed up from a speed up in part of the system. 1 / ((1 - Proportion Sped Up) + Proportion Sped Up / Speed up)To apply Amdahl’s law you must measure the components of system time and the before and after affect of the perf change made. It is thus an empirical approach.
  6. Two reasons for poor performance: What if the data set is too large to fit in the cache? What about limiting time to live due to concerns around staleness of data i.e. incoherence with the underlying SOR
  7. Two reasons for poor performance: What if the data set is too large to fit in the cache? What about limiting time to live due to concerns around staleness of data i.e. incoherence with the underlying SOR
  8. Perhaps ask who is using Java 6? Note that we’re comparing to Java 6/7 java.lang.Map, not Java 8.