SlideShare a Scribd company logo
1 of 39
@payara_fish 
JSR107 
Come, Code, Cache, Compute! 
Steve Millidge
@payara_fish 
Agenda 
• Basic Caching 
– Cache API 
– Cache Configuration 
• Cache Events 
• Cache Computations
@payara_fish 
What is JSR107? 
JCACHE JavaTM Temporary Caching API
Time delay in requesting an operation 
and it being initiated 
@payara_fish
1Gb Ethernet : 25 – 30MB/s 
10Gb Ethernet : 250 – 350MB/s 
Infiniband : 6GB/s (maybe) 
@payara_fish
PING TIMES 
Local : 57μs 
LAN segment : 300μs 
LAN: switches : 4ms 
UK : 30ms 
USA : 100ms 
3G : 100s ms 
@payara_fish
@payara_fish 
Spinning Rust 
Source: tomshardware.com 
Typical SSD Speed 
540MB/s 
Disk BUS Speeds 
SATA 1.0 : 150MB/s 
SATA 2.0 : 300MB/s 
SATA 3.0 : 600MB/s 
SAS : 600MB/s 
Fibre Channel : 1GB/s 
Infiniband : 1GB/s
@payara_fish 
DDR3 1600 : 12.8GB/s
@payara_fish
@payara_fish 
Caching Concepts 
Caching 
Provider 
Cache 
Manager 
Cache 
Entry 
Key 
Value
@payara_fish 
Core Concepts 
• CachingProvider 
– Retrieves and closes Cache Managers 
• CacheManager 
– Creates and destroys caches 
• Cache 
– Contains Objects in Key Value Pairs
@payara_fish 
Simple Cache Code Architecture 
Coherence 
Cache Node 
(Simple Code) 
Coherence 
Cache Node 
(Get Example) 
Coherence 
Cache Node 
(Put Example) 
Stock
@payara_fish 
Code Interlude
CachingProvider cp = Caching.getCachingProvider(); 
@payara_fish 
CacheManager cm = cp.getCacheManager(); 
MutableConfiguration<String, Stock> config 
= new MutableConfiguration<>(); 
config.setStoreByValue(true) 
.setTypes(String.class,Stock.class) 
.setManagementEnabled(true) 
.setStatisticsEnabled(true); 
Cache<String, Stock> cache = cm.createCache("J12014", 
config); 
System.out.println(cache.get("PAYA"));
@payara_fish 
Further Cache Methods 
cache.replace("PAYA",new Stock(28.0,"PAYA"); 
cache.remove(“PAYA”); 
stock = cache.getAndPut("PAYA", new 
Stock(27.0,"PAYA")); 
stock = cache.getAndReplace("PAYA",new 
Stock(28.0,"PAYA")); 
stock = cache.getAndRemove("PAYA"); 
cache.putIfAbsent("PAYA", stock);
@payara_fish 
Events
@payara_fish 
Core Concepts Events 
• CacheEntryListener 
– Receives Events relating to specific Keys 
– Subinterfaces for Created, Expired, 
Updated, Removed 
• CacheEntryEventFilter 
– Filters Events Before Delivery 
– Useful in distributed caches
@payara_fish 
Events API 
Coherence 
Cache Node 
(Simple Code) 
Coherence 
Cache Node 
(Stock Ticker) 
Coherence 
Cache Node 
(PriceTicker) 
Listener Stock
@payara_fish 
Code Interlude
CachingProvider cp = Caching.getCachingProvider(); 
CacheManager cm = cp.getCacheManager(); 
MutableConfiguration<String, Stock> config 
@payara_fish 
= new MutableConfiguration<>(); 
config.setStoreByValue(true) 
.setTypes(String.class, Stock.class) 
.setManagementEnabled(true). 
setStatisticsEnabled(true); 
Cache<String, Stock> cache = cm.createCache("J12014", 
config); 
while (true) { 
cache.put("PAYA", new Stock(Math.random() * 
20.0d, "PAYA")); 
Thread.sleep(1000); 
}
@payara_fish 
public class StockListener implements 
CacheEntryUpdatedListener<>, Serializable{ 
@Override 
public void onUpdated(Iterable<> itrbl) throws 
CacheEntryListenerException 
{ 
Iterator<CacheEntryEvent<> i = itrbl.iterator(); 
while (i.hasNext()) { 
System.out.println(i.next().getValue()); 
} 
} 
}
MutableCacheEntryListenerConfiguration<> lConf 
@payara_fish 
= new 
MutableCacheEntryListenerConfiguration<>( 
FactoryBuilder.factoryOf(new StockListener()), 
null, false, false); 
cache.registerCacheEntryListener(lConf); 
while (true) { 
Thread.sleep(1000); 
}
@payara_fish 
Listerner Interfaces 
• CacheEntryCreatedListener<K,V> 
– onCreated() 
• CacheEntryExpiredListener<K,V> 
– onExpired() 
• CacheEntryRemovedListener<K,V> 
– onRemoved() 
• CacheEntryUpdatedListener<K,V> 
– onUpdated()
@payara_fish 
Listener semantics 
• Are fired after the entry is mutated in the cache 
• if synchronous are fired, for a given key, in the order 
that events occur 
• block the calling thread until the listener returns, 
where the listener was registered as synchronous 
• that are asynchronous iterate through multiple 
events with an undefined ordering, except that 
events on the same key are in the order that the 
events occur.
@payara_fish 
Events Demo 
http://demo.c2b2.co.uk:7080/
@payara_fish 
Compute!
@payara_fish 
Compute Architecture 
Coherence 
Cache Node 
(Simple Code) 
Coherence 
Cache Node 
(Simple Code) 
StocSktockStocSktock StocSktockStocSktock 
Coherence 
Cache Node 
(Revalue) 
Entry 
Processor 
Entry 
Processor 
Coherence 
Cache Node 
(FindStock)
@payara_fish 
Key Cache Methods 
• invoke(Key,EntryProcessor,args) 
• invokeAll(Set<Key>,EntryProcessor,args) 
• Entry Processor Interface 
T process(MutableEntry<K,V>,Object … args)
@payara_fish 
Code Interlude
public class PrintStock implements 
EntryProcessor<String, Stock, String>, Serializable 
{ 
@Override 
public String process(MutableEntry<String, Stock> 
me, Object... os) throws EntryProcessorException 
@payara_fish 
{ 
System.out.println(me.getValue() + " IS HERE 
........... "); 
return null; 
} 
}
CachingProvider cp = Caching.getCachingProvider(); 
@payara_fish 
CacheManager cm = cp.getCacheManager(); 
MutableConfiguration<String,Stock> config = 
new MutableConfiguration<>(); 
config.setStoreByValue(true) 
.setTypes(String.class,Stock.class) 
.setManagementEnabled(true) 
.setStatisticsEnabled(true); 
Cache<String,Stock> cache = 
cm.createCache("J12014",config); 
cache.invoke("PAYA", new PrintStock());
@payara_fish 
Other JSR107 Features 
• Cache Loader and Cache Writers 
– Implements Read through and write 
through caching for persistence stores 
• Statistics 
– JMX Statistics (demo) 
• CDI Integration 
– Annotations for automatic cache 
interactions
@payara_fish 
CacheLoader and CacheWriter 
• Integrate with external resource 
– JPA Caching 
– Memcached integration 
– NoSQL integration 
• Provide read through and write 
through capability
@payara_fish 
CacheLoader and CacheWriter 
• CacheLoader for read through 
– load(Key) 
– loadAll(Iterable<Key>) 
– Added to Cache Configuration 
• CacheWriter for write through 
– write, writeAll 
– delete, deleteAll 
– Added to Cache Configuration
@payara_fish 
JSR 107 Annotations 
• @CacheDefaults 
• @CacheResult 
• @CachePut 
• @CacheRemove 
• @CacheRemoveAll
@payara_fish 
Example Annotations 
package my.app; 
@CacheDefaults(cacheName="domainCache") 
public class DomainDao { 
@CacheResult 
public Domain getDomain(String domainId, int index) { 
... 
} 
@CacheRemove 
public void deleteDomain(String domainId, int index) { 
... 
} 
@CacheResult(cacheName="allDomains") 
public List<Domain> getAllDomains() { 
... 
} 
}
@payara_fish 
Example Annotations 
package my.app; 
public class DomainDao { 
@CachePut(cacheName="domainCache") 
public void updateDomain(String domainId, int index, 
@CacheValue Domain 
domain) { 
... 
} 
}
@payara_fish 
Learn More 
• https://jcp.org/en/jsr/detail?id=107 
• https://github.com/jsr107 
• https://groups.google.com/forum/#!foru 
m/jsr107
@payara_fish

More Related Content

What's hot

Automate MongoDB with MongoDB Management Service
Automate MongoDB with MongoDB Management ServiceAutomate MongoDB with MongoDB Management Service
Automate MongoDB with MongoDB Management ServiceMongoDB
 
Nginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksNginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksAdam Wiggins
 
Rails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeRails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeFastly
 
Introduction to .Net Driver
Introduction to .Net DriverIntroduction to .Net Driver
Introduction to .Net DriverDataStax Academy
 
Accelerating Rails with edge caching
Accelerating Rails with edge cachingAccelerating Rails with edge caching
Accelerating Rails with edge cachingMichael May
 
ProxySQL Tutorial - PLAM 2016
ProxySQL Tutorial - PLAM 2016ProxySQL Tutorial - PLAM 2016
ProxySQL Tutorial - PLAM 2016Derek Downey
 
CHI-YAPC-2009
CHI-YAPC-2009CHI-YAPC-2009
CHI-YAPC-2009jonswar
 
CHI - YAPC NA 2012
CHI - YAPC NA 2012CHI - YAPC NA 2012
CHI - YAPC NA 2012jonswar
 
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...MongoDB
 
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
 
Webinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDBWebinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDBMongoDB
 
Postgres connections at scale
Postgres connections at scalePostgres connections at scale
Postgres connections at scaleMydbops
 
Next Generation DevOps in Drupal: DrupalCamp London 2014
Next Generation DevOps in Drupal: DrupalCamp London 2014Next Generation DevOps in Drupal: DrupalCamp London 2014
Next Generation DevOps in Drupal: DrupalCamp London 2014Barney Hanlon
 
Web前端性能优化 2014
Web前端性能优化 2014Web前端性能优化 2014
Web前端性能优化 2014Yubei Li
 
MongoDB .local Bengaluru 2019: New Encryption Capabilities in MongoDB 4.2: A ...
MongoDB .local Bengaluru 2019: New Encryption Capabilities in MongoDB 4.2: A ...MongoDB .local Bengaluru 2019: New Encryption Capabilities in MongoDB 4.2: A ...
MongoDB .local Bengaluru 2019: New Encryption Capabilities in MongoDB 4.2: A ...MongoDB
 
Mongo performance tuning: tips and tricks
Mongo performance tuning: tips and tricksMongo performance tuning: tips and tricks
Mongo performance tuning: tips and tricksVladimir Malyk
 
EWD 3 Training Course Part 26: Event-driven Indexing
EWD 3 Training Course Part 26: Event-driven IndexingEWD 3 Training Course Part 26: Event-driven Indexing
EWD 3 Training Course Part 26: Event-driven IndexingRob Tweed
 
Advance java session 7
Advance java session 7Advance java session 7
Advance java session 7Smita B Kumar
 
Magento performance feat. core Hacks
Magento performance feat. core HacksMagento performance feat. core Hacks
Magento performance feat. core HacksDaniel Niedergesäß
 

What's hot (20)

Automate MongoDB with MongoDB Management Service
Automate MongoDB with MongoDB Management ServiceAutomate MongoDB with MongoDB Management Service
Automate MongoDB with MongoDB Management Service
 
Nginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksNginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP Tricks
 
Rails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeRails Caching: Secrets From the Edge
Rails Caching: Secrets From the Edge
 
Introduction to .Net Driver
Introduction to .Net DriverIntroduction to .Net Driver
Introduction to .Net Driver
 
Accelerating Rails with edge caching
Accelerating Rails with edge cachingAccelerating Rails with edge caching
Accelerating Rails with edge caching
 
ProxySQL Tutorial - PLAM 2016
ProxySQL Tutorial - PLAM 2016ProxySQL Tutorial - PLAM 2016
ProxySQL Tutorial - PLAM 2016
 
CHI-YAPC-2009
CHI-YAPC-2009CHI-YAPC-2009
CHI-YAPC-2009
 
CHI - YAPC NA 2012
CHI - YAPC NA 2012CHI - YAPC NA 2012
CHI - YAPC NA 2012
 
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
 
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
 
Webinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDBWebinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDB
 
Postgres connections at scale
Postgres connections at scalePostgres connections at scale
Postgres connections at scale
 
Next Generation DevOps in Drupal: DrupalCamp London 2014
Next Generation DevOps in Drupal: DrupalCamp London 2014Next Generation DevOps in Drupal: DrupalCamp London 2014
Next Generation DevOps in Drupal: DrupalCamp London 2014
 
Web前端性能优化 2014
Web前端性能优化 2014Web前端性能优化 2014
Web前端性能优化 2014
 
MongoDB .local Bengaluru 2019: New Encryption Capabilities in MongoDB 4.2: A ...
MongoDB .local Bengaluru 2019: New Encryption Capabilities in MongoDB 4.2: A ...MongoDB .local Bengaluru 2019: New Encryption Capabilities in MongoDB 4.2: A ...
MongoDB .local Bengaluru 2019: New Encryption Capabilities in MongoDB 4.2: A ...
 
Mongo performance tuning: tips and tricks
Mongo performance tuning: tips and tricksMongo performance tuning: tips and tricks
Mongo performance tuning: tips and tricks
 
EWD 3 Training Course Part 26: Event-driven Indexing
EWD 3 Training Course Part 26: Event-driven IndexingEWD 3 Training Course Part 26: Event-driven Indexing
EWD 3 Training Course Part 26: Event-driven Indexing
 
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
 
Advance java session 7
Advance java session 7Advance java session 7
Advance java session 7
 
Magento performance feat. core Hacks
Magento performance feat. core HacksMagento performance feat. core Hacks
Magento performance feat. core Hacks
 

Viewers also liked

Microservices Platforms - Which is Best?
Microservices Platforms - Which is Best?Microservices Platforms - Which is Best?
Microservices Platforms - Which is Best?Payara
 
High performance java ee with j cache and cdi
High performance java ee with j cache and cdiHigh performance java ee with j cache and cdi
High performance java ee with j cache and cdiPayara
 
Infinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridInfinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridJBug Italy
 
Servicio Agrícola y Ganadero
Servicio Agrícola y GanaderoServicio Agrícola y Ganadero
Servicio Agrícola y GanaderoMaca_OV
 
Иммиграционные Тенденции США
Иммиграционные Тенденции СШАИммиграционные Тенденции США
Иммиграционные Тенденции СШАmarikarami
 
West Midlands Java User Group - Payara Micro
West Midlands Java User Group - Payara MicroWest Midlands Java User Group - Payara Micro
West Midlands Java User Group - Payara MicroPayara
 
Content is king - Framgång med värdefullt innehåll 2014
Content is king - Framgång med värdefullt innehåll 2014Content is king - Framgång med värdefullt innehåll 2014
Content is king - Framgång med värdefullt innehåll 2014Andreas Sundqvist
 
Univ connections to community
Univ connections to communityUniv connections to community
Univ connections to communitybnb1723
 
Univ connections to community (1)
Univ connections to community (1)Univ connections to community (1)
Univ connections to community (1)bnb1723
 
Gallery Secret Detention & Abuse of Women in China’s “Black Jails”
Gallery Secret Detention & Abuse of Women in China’s “Black Jails”Gallery Secret Detention & Abuse of Women in China’s “Black Jails”
Gallery Secret Detention & Abuse of Women in China’s “Black Jails”franceseve
 
Kickstarta den digitala transformationen 2017 - 3 sätt att komma igång.
Kickstarta den digitala transformationen 2017 - 3 sätt att komma igång.Kickstarta den digitala transformationen 2017 - 3 sätt att komma igång.
Kickstarta den digitala transformationen 2017 - 3 sätt att komma igång.Andreas Sundqvist
 
La video participative_basee_sur_le changement- cl
La video participative_basee_sur_le changement- clLa video participative_basee_sur_le changement- cl
La video participative_basee_sur_le changement- clYao Roger Modeste APAHOU
 
The best holiday destination
The best holiday destination The best holiday destination
The best holiday destination Kristjana Llolli
 
Annual Report 2011 Husqvarna Group
Annual Report 2011 Husqvarna GroupAnnual Report 2011 Husqvarna Group
Annual Report 2011 Husqvarna GroupMartina Crepaz
 

Viewers also liked (20)

Microservices Platforms - Which is Best?
Microservices Platforms - Which is Best?Microservices Platforms - Which is Best?
Microservices Platforms - Which is Best?
 
High performance java ee with j cache and cdi
High performance java ee with j cache and cdiHigh performance java ee with j cache and cdi
High performance java ee with j cache and cdi
 
Infinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridInfinispan and Enterprise Data Grid
Infinispan and Enterprise Data Grid
 
Servicio Agrícola y Ganadero
Servicio Agrícola y GanaderoServicio Agrícola y Ganadero
Servicio Agrícola y Ganadero
 
Иммиграционные Тенденции США
Иммиграционные Тенденции СШАИммиграционные Тенденции США
Иммиграционные Тенденции США
 
West Midlands Java User Group - Payara Micro
West Midlands Java User Group - Payara MicroWest Midlands Java User Group - Payara Micro
West Midlands Java User Group - Payara Micro
 
Content is king - Framgång med värdefullt innehåll 2014
Content is king - Framgång med värdefullt innehåll 2014Content is king - Framgång med värdefullt innehåll 2014
Content is king - Framgång med värdefullt innehåll 2014
 
Univ connections to community
Univ connections to communityUniv connections to community
Univ connections to community
 
Social
SocialSocial
Social
 
Univ connections to community (1)
Univ connections to community (1)Univ connections to community (1)
Univ connections to community (1)
 
Gallery Secret Detention & Abuse of Women in China’s “Black Jails”
Gallery Secret Detention & Abuse of Women in China’s “Black Jails”Gallery Secret Detention & Abuse of Women in China’s “Black Jails”
Gallery Secret Detention & Abuse of Women in China’s “Black Jails”
 
StoreMotion Company Profile
StoreMotion Company ProfileStoreMotion Company Profile
StoreMotion Company Profile
 
Festival della Lentezza
Festival della LentezzaFestival della Lentezza
Festival della Lentezza
 
Kickstarta den digitala transformationen 2017 - 3 sätt att komma igång.
Kickstarta den digitala transformationen 2017 - 3 sätt att komma igång.Kickstarta den digitala transformationen 2017 - 3 sätt att komma igång.
Kickstarta den digitala transformationen 2017 - 3 sätt att komma igång.
 
La video participative_basee_sur_le changement- cl
La video participative_basee_sur_le changement- clLa video participative_basee_sur_le changement- cl
La video participative_basee_sur_le changement- cl
 
How To Brainstorm Keywords: App Store Optimization Tips
How To Brainstorm Keywords: App Store Optimization TipsHow To Brainstorm Keywords: App Store Optimization Tips
How To Brainstorm Keywords: App Store Optimization Tips
 
INVERNADERO
INVERNADEROINVERNADERO
INVERNADERO
 
The best holiday destination
The best holiday destination The best holiday destination
The best holiday destination
 
Essai cv2
Essai cv2Essai cv2
Essai cv2
 
Annual Report 2011 Husqvarna Group
Annual Report 2011 Husqvarna GroupAnnual Report 2011 Husqvarna Group
Annual Report 2011 Husqvarna Group
 

Similar to JSR107 Come, Code, Cache, Compute!

Hands on Data Grids - Stephen Milidge
Hands on Data Grids - Stephen MilidgeHands on Data Grids - Stephen Milidge
Hands on Data Grids - Stephen MilidgeJAXLondon2014
 
Scalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseScalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseChristina Lin
 
Cache is King: Get the Most Bang for Your Buck From Ruby
Cache is King: Get the Most Bang for Your Buck From RubyCache is King: Get the Most Bang for Your Buck From Ruby
Cache is King: Get the Most Bang for Your Buck From RubyMolly Struve
 
Simplifying Apache Cascading
Simplifying Apache CascadingSimplifying Apache Cascading
Simplifying Apache CascadingMing Yuan
 
Kick your database_to_the_curb_reston_08_27_19
Kick your database_to_the_curb_reston_08_27_19Kick your database_to_the_curb_reston_08_27_19
Kick your database_to_the_curb_reston_08_27_19confluent
 
Think Distributed: The Hazelcast Way
Think Distributed: The Hazelcast WayThink Distributed: The Hazelcast Way
Think Distributed: The Hazelcast WayRahul Gupta
 
Distributed caching and computing v3.7
Distributed caching and computing v3.7Distributed caching and computing v3.7
Distributed caching and computing v3.7Rahul Gupta
 
Scaling Your Cache
Scaling Your CacheScaling Your Cache
Scaling Your CacheAlex Miller
 
Apache Spark Structured Streaming + Apache Kafka = ♡
Apache Spark Structured Streaming + Apache Kafka = ♡Apache Spark Structured Streaming + Apache Kafka = ♡
Apache Spark Structured Streaming + Apache Kafka = ♡Bartosz Konieczny
 
mysqlnd query cache plugin: user-defined storage handler
mysqlnd query cache plugin: user-defined storage handlermysqlnd query cache plugin: user-defined storage handler
mysqlnd query cache plugin: user-defined storage handlerUlf Wendel
 
Speed Things Up with Transients
Speed Things Up with TransientsSpeed Things Up with Transients
Speed Things Up with TransientsCliff Seal
 
Kafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingKafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingYaroslav Tkachenko
 
Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)Tom Diederich
 
Python在豆瓣的应用
Python在豆瓣的应用Python在豆瓣的应用
Python在豆瓣的应用Qiangning Hong
 
C* Summit EU 2013: Cassandra Internals
C* Summit EU 2013: Cassandra Internals C* Summit EU 2013: Cassandra Internals
C* Summit EU 2013: Cassandra Internals DataStax Academy
 
Non-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsNon-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsMarcus Frödin
 
Hadoop Integration in Cassandra
Hadoop Integration in CassandraHadoop Integration in Cassandra
Hadoop Integration in CassandraJairam Chandar
 
Scaling with Python: SF Python Meetup, September 2017
Scaling with Python: SF Python Meetup, September 2017Scaling with Python: SF Python Meetup, September 2017
Scaling with Python: SF Python Meetup, September 2017Varun Varma
 
Java In-Process Caching - Performance, Progress and Pittfalls
Java In-Process Caching - Performance, Progress and PittfallsJava In-Process Caching - Performance, Progress and Pittfalls
Java In-Process Caching - Performance, Progress and Pittfallscruftex
 

Similar to JSR107 Come, Code, Cache, Compute! (20)

Hands on Data Grids - Stephen Milidge
Hands on Data Grids - Stephen MilidgeHands on Data Grids - Stephen Milidge
Hands on Data Grids - Stephen Milidge
 
Gimme Caching - The JCache Way
Gimme Caching - The JCache WayGimme Caching - The JCache Way
Gimme Caching - The JCache Way
 
Scalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseScalable Integration with JBoss Fuse
Scalable Integration with JBoss Fuse
 
Cache is King: Get the Most Bang for Your Buck From Ruby
Cache is King: Get the Most Bang for Your Buck From RubyCache is King: Get the Most Bang for Your Buck From Ruby
Cache is King: Get the Most Bang for Your Buck From Ruby
 
Simplifying Apache Cascading
Simplifying Apache CascadingSimplifying Apache Cascading
Simplifying Apache Cascading
 
Kick your database_to_the_curb_reston_08_27_19
Kick your database_to_the_curb_reston_08_27_19Kick your database_to_the_curb_reston_08_27_19
Kick your database_to_the_curb_reston_08_27_19
 
Think Distributed: The Hazelcast Way
Think Distributed: The Hazelcast WayThink Distributed: The Hazelcast Way
Think Distributed: The Hazelcast Way
 
Distributed caching and computing v3.7
Distributed caching and computing v3.7Distributed caching and computing v3.7
Distributed caching and computing v3.7
 
Scaling Your Cache
Scaling Your CacheScaling Your Cache
Scaling Your Cache
 
Apache Spark Structured Streaming + Apache Kafka = ♡
Apache Spark Structured Streaming + Apache Kafka = ♡Apache Spark Structured Streaming + Apache Kafka = ♡
Apache Spark Structured Streaming + Apache Kafka = ♡
 
mysqlnd query cache plugin: user-defined storage handler
mysqlnd query cache plugin: user-defined storage handlermysqlnd query cache plugin: user-defined storage handler
mysqlnd query cache plugin: user-defined storage handler
 
Speed Things Up with Transients
Speed Things Up with TransientsSpeed Things Up with Transients
Speed Things Up with Transients
 
Kafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingKafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processing
 
Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)
 
Python在豆瓣的应用
Python在豆瓣的应用Python在豆瓣的应用
Python在豆瓣的应用
 
C* Summit EU 2013: Cassandra Internals
C* Summit EU 2013: Cassandra Internals C* Summit EU 2013: Cassandra Internals
C* Summit EU 2013: Cassandra Internals
 
Non-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsNon-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.js
 
Hadoop Integration in Cassandra
Hadoop Integration in CassandraHadoop Integration in Cassandra
Hadoop Integration in Cassandra
 
Scaling with Python: SF Python Meetup, September 2017
Scaling with Python: SF Python Meetup, September 2017Scaling with Python: SF Python Meetup, September 2017
Scaling with Python: SF Python Meetup, September 2017
 
Java In-Process Caching - Performance, Progress and Pittfalls
Java In-Process Caching - Performance, Progress and PittfallsJava In-Process Caching - Performance, Progress and Pittfalls
Java In-Process Caching - Performance, Progress and Pittfalls
 

More from Payara

Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​Payara
 
Payara Cloud - Cloud Native Jakarta EE.pptx
Payara Cloud - Cloud Native Jakarta EE.pptxPayara Cloud - Cloud Native Jakarta EE.pptx
Payara Cloud - Cloud Native Jakarta EE.pptxPayara
 
Jakarta Concurrency: Present and Future
Jakarta Concurrency: Present and FutureJakarta Concurrency: Present and Future
Jakarta Concurrency: Present and FuturePayara
 
GlassFish Migration Webinar 2022 Current version.pptx
GlassFish Migration Webinar 2022 Current version.pptxGlassFish Migration Webinar 2022 Current version.pptx
GlassFish Migration Webinar 2022 Current version.pptxPayara
 
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...Payara
 
Securing Microservices with MicroProfile and Auth0v2
Securing Microservices with MicroProfile and Auth0v2Securing Microservices with MicroProfile and Auth0v2
Securing Microservices with MicroProfile and Auth0v2Payara
 
Reactive features of MicroProfile you need to learn
Reactive features of MicroProfile you need to learnReactive features of MicroProfile you need to learn
Reactive features of MicroProfile you need to learnPayara
 
Effective cloud-ready apps with MicroProfile
Effective cloud-ready apps with MicroProfileEffective cloud-ready apps with MicroProfile
Effective cloud-ready apps with MicroProfilePayara
 
A step-by-step guide from traditional Java EE to reactive microservice design
A step-by-step guide from traditional Java EE to reactive microservice designA step-by-step guide from traditional Java EE to reactive microservice design
A step-by-step guide from traditional Java EE to reactive microservice designPayara
 
Transactions in Microservices
Transactions in MicroservicesTransactions in Microservices
Transactions in MicroservicesPayara
 
Fun with Kubernetes and Payara Micro 5
Fun with Kubernetes and Payara Micro 5Fun with Kubernetes and Payara Micro 5
Fun with Kubernetes and Payara Micro 5Payara
 
What's new in Jakarta EE and Eclipse GlassFish (May 2019)
What's new in Jakarta EE and Eclipse GlassFish (May 2019)What's new in Jakarta EE and Eclipse GlassFish (May 2019)
What's new in Jakarta EE and Eclipse GlassFish (May 2019)Payara
 
Previewing Payara Platform 5.192
Previewing Payara Platform 5.192Previewing Payara Platform 5.192
Previewing Payara Platform 5.192Payara
 
Secure JAX-RS
Secure JAX-RSSecure JAX-RS
Secure JAX-RSPayara
 
Gradual Migration to MicroProfile
Gradual Migration to MicroProfileGradual Migration to MicroProfile
Gradual Migration to MicroProfilePayara
 
Monitor Microservices with MicroProfile Metrics
Monitor Microservices with MicroProfile MetricsMonitor Microservices with MicroProfile Metrics
Monitor Microservices with MicroProfile MetricsPayara
 
Java2 days -_be_reactive_and_micro_with_a_microprofile_stack
Java2 days -_be_reactive_and_micro_with_a_microprofile_stackJava2 days -_be_reactive_and_micro_with_a_microprofile_stack
Java2 days -_be_reactive_and_micro_with_a_microprofile_stackPayara
 
Java2 days 5_agile_steps_to_cloud-ready_apps
Java2 days 5_agile_steps_to_cloud-ready_appsJava2 days 5_agile_steps_to_cloud-ready_apps
Java2 days 5_agile_steps_to_cloud-ready_appsPayara
 
Rapid development tools for java ee 8 and micro profile [GIDS]
Rapid development tools for java ee 8 and micro profile [GIDS] Rapid development tools for java ee 8 and micro profile [GIDS]
Rapid development tools for java ee 8 and micro profile [GIDS] Payara
 
Ondrej mihalyi be reactive and micro with a micro profile stack
Ondrej mihalyi   be reactive and micro with a micro profile stackOndrej mihalyi   be reactive and micro with a micro profile stack
Ondrej mihalyi be reactive and micro with a micro profile stackPayara
 

More from Payara (20)

Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​
 
Payara Cloud - Cloud Native Jakarta EE.pptx
Payara Cloud - Cloud Native Jakarta EE.pptxPayara Cloud - Cloud Native Jakarta EE.pptx
Payara Cloud - Cloud Native Jakarta EE.pptx
 
Jakarta Concurrency: Present and Future
Jakarta Concurrency: Present and FutureJakarta Concurrency: Present and Future
Jakarta Concurrency: Present and Future
 
GlassFish Migration Webinar 2022 Current version.pptx
GlassFish Migration Webinar 2022 Current version.pptxGlassFish Migration Webinar 2022 Current version.pptx
GlassFish Migration Webinar 2022 Current version.pptx
 
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
 
Securing Microservices with MicroProfile and Auth0v2
Securing Microservices with MicroProfile and Auth0v2Securing Microservices with MicroProfile and Auth0v2
Securing Microservices with MicroProfile and Auth0v2
 
Reactive features of MicroProfile you need to learn
Reactive features of MicroProfile you need to learnReactive features of MicroProfile you need to learn
Reactive features of MicroProfile you need to learn
 
Effective cloud-ready apps with MicroProfile
Effective cloud-ready apps with MicroProfileEffective cloud-ready apps with MicroProfile
Effective cloud-ready apps with MicroProfile
 
A step-by-step guide from traditional Java EE to reactive microservice design
A step-by-step guide from traditional Java EE to reactive microservice designA step-by-step guide from traditional Java EE to reactive microservice design
A step-by-step guide from traditional Java EE to reactive microservice design
 
Transactions in Microservices
Transactions in MicroservicesTransactions in Microservices
Transactions in Microservices
 
Fun with Kubernetes and Payara Micro 5
Fun with Kubernetes and Payara Micro 5Fun with Kubernetes and Payara Micro 5
Fun with Kubernetes and Payara Micro 5
 
What's new in Jakarta EE and Eclipse GlassFish (May 2019)
What's new in Jakarta EE and Eclipse GlassFish (May 2019)What's new in Jakarta EE and Eclipse GlassFish (May 2019)
What's new in Jakarta EE and Eclipse GlassFish (May 2019)
 
Previewing Payara Platform 5.192
Previewing Payara Platform 5.192Previewing Payara Platform 5.192
Previewing Payara Platform 5.192
 
Secure JAX-RS
Secure JAX-RSSecure JAX-RS
Secure JAX-RS
 
Gradual Migration to MicroProfile
Gradual Migration to MicroProfileGradual Migration to MicroProfile
Gradual Migration to MicroProfile
 
Monitor Microservices with MicroProfile Metrics
Monitor Microservices with MicroProfile MetricsMonitor Microservices with MicroProfile Metrics
Monitor Microservices with MicroProfile Metrics
 
Java2 days -_be_reactive_and_micro_with_a_microprofile_stack
Java2 days -_be_reactive_and_micro_with_a_microprofile_stackJava2 days -_be_reactive_and_micro_with_a_microprofile_stack
Java2 days -_be_reactive_and_micro_with_a_microprofile_stack
 
Java2 days 5_agile_steps_to_cloud-ready_apps
Java2 days 5_agile_steps_to_cloud-ready_appsJava2 days 5_agile_steps_to_cloud-ready_apps
Java2 days 5_agile_steps_to_cloud-ready_apps
 
Rapid development tools for java ee 8 and micro profile [GIDS]
Rapid development tools for java ee 8 and micro profile [GIDS] Rapid development tools for java ee 8 and micro profile [GIDS]
Rapid development tools for java ee 8 and micro profile [GIDS]
 
Ondrej mihalyi be reactive and micro with a micro profile stack
Ondrej mihalyi   be reactive and micro with a micro profile stackOndrej mihalyi   be reactive and micro with a micro profile stack
Ondrej mihalyi be reactive and micro with a micro profile stack
 

Recently uploaded

Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 

Recently uploaded (20)

Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 

JSR107 Come, Code, Cache, Compute!

  • 1. @payara_fish JSR107 Come, Code, Cache, Compute! Steve Millidge
  • 2. @payara_fish Agenda • Basic Caching – Cache API – Cache Configuration • Cache Events • Cache Computations
  • 3. @payara_fish What is JSR107? JCACHE JavaTM Temporary Caching API
  • 4. Time delay in requesting an operation and it being initiated @payara_fish
  • 5. 1Gb Ethernet : 25 – 30MB/s 10Gb Ethernet : 250 – 350MB/s Infiniband : 6GB/s (maybe) @payara_fish
  • 6. PING TIMES Local : 57μs LAN segment : 300μs LAN: switches : 4ms UK : 30ms USA : 100ms 3G : 100s ms @payara_fish
  • 7. @payara_fish Spinning Rust Source: tomshardware.com Typical SSD Speed 540MB/s Disk BUS Speeds SATA 1.0 : 150MB/s SATA 2.0 : 300MB/s SATA 3.0 : 600MB/s SAS : 600MB/s Fibre Channel : 1GB/s Infiniband : 1GB/s
  • 10. @payara_fish Caching Concepts Caching Provider Cache Manager Cache Entry Key Value
  • 11. @payara_fish Core Concepts • CachingProvider – Retrieves and closes Cache Managers • CacheManager – Creates and destroys caches • Cache – Contains Objects in Key Value Pairs
  • 12. @payara_fish Simple Cache Code Architecture Coherence Cache Node (Simple Code) Coherence Cache Node (Get Example) Coherence Cache Node (Put Example) Stock
  • 14. CachingProvider cp = Caching.getCachingProvider(); @payara_fish CacheManager cm = cp.getCacheManager(); MutableConfiguration<String, Stock> config = new MutableConfiguration<>(); config.setStoreByValue(true) .setTypes(String.class,Stock.class) .setManagementEnabled(true) .setStatisticsEnabled(true); Cache<String, Stock> cache = cm.createCache("J12014", config); System.out.println(cache.get("PAYA"));
  • 15. @payara_fish Further Cache Methods cache.replace("PAYA",new Stock(28.0,"PAYA"); cache.remove(“PAYA”); stock = cache.getAndPut("PAYA", new Stock(27.0,"PAYA")); stock = cache.getAndReplace("PAYA",new Stock(28.0,"PAYA")); stock = cache.getAndRemove("PAYA"); cache.putIfAbsent("PAYA", stock);
  • 17. @payara_fish Core Concepts Events • CacheEntryListener – Receives Events relating to specific Keys – Subinterfaces for Created, Expired, Updated, Removed • CacheEntryEventFilter – Filters Events Before Delivery – Useful in distributed caches
  • 18. @payara_fish Events API Coherence Cache Node (Simple Code) Coherence Cache Node (Stock Ticker) Coherence Cache Node (PriceTicker) Listener Stock
  • 20. CachingProvider cp = Caching.getCachingProvider(); CacheManager cm = cp.getCacheManager(); MutableConfiguration<String, Stock> config @payara_fish = new MutableConfiguration<>(); config.setStoreByValue(true) .setTypes(String.class, Stock.class) .setManagementEnabled(true). setStatisticsEnabled(true); Cache<String, Stock> cache = cm.createCache("J12014", config); while (true) { cache.put("PAYA", new Stock(Math.random() * 20.0d, "PAYA")); Thread.sleep(1000); }
  • 21. @payara_fish public class StockListener implements CacheEntryUpdatedListener<>, Serializable{ @Override public void onUpdated(Iterable<> itrbl) throws CacheEntryListenerException { Iterator<CacheEntryEvent<> i = itrbl.iterator(); while (i.hasNext()) { System.out.println(i.next().getValue()); } } }
  • 22. MutableCacheEntryListenerConfiguration<> lConf @payara_fish = new MutableCacheEntryListenerConfiguration<>( FactoryBuilder.factoryOf(new StockListener()), null, false, false); cache.registerCacheEntryListener(lConf); while (true) { Thread.sleep(1000); }
  • 23. @payara_fish Listerner Interfaces • CacheEntryCreatedListener<K,V> – onCreated() • CacheEntryExpiredListener<K,V> – onExpired() • CacheEntryRemovedListener<K,V> – onRemoved() • CacheEntryUpdatedListener<K,V> – onUpdated()
  • 24. @payara_fish Listener semantics • Are fired after the entry is mutated in the cache • if synchronous are fired, for a given key, in the order that events occur • block the calling thread until the listener returns, where the listener was registered as synchronous • that are asynchronous iterate through multiple events with an undefined ordering, except that events on the same key are in the order that the events occur.
  • 25. @payara_fish Events Demo http://demo.c2b2.co.uk:7080/
  • 27. @payara_fish Compute Architecture Coherence Cache Node (Simple Code) Coherence Cache Node (Simple Code) StocSktockStocSktock StocSktockStocSktock Coherence Cache Node (Revalue) Entry Processor Entry Processor Coherence Cache Node (FindStock)
  • 28. @payara_fish Key Cache Methods • invoke(Key,EntryProcessor,args) • invokeAll(Set<Key>,EntryProcessor,args) • Entry Processor Interface T process(MutableEntry<K,V>,Object … args)
  • 30. public class PrintStock implements EntryProcessor<String, Stock, String>, Serializable { @Override public String process(MutableEntry<String, Stock> me, Object... os) throws EntryProcessorException @payara_fish { System.out.println(me.getValue() + " IS HERE ........... "); return null; } }
  • 31. CachingProvider cp = Caching.getCachingProvider(); @payara_fish CacheManager cm = cp.getCacheManager(); MutableConfiguration<String,Stock> config = new MutableConfiguration<>(); config.setStoreByValue(true) .setTypes(String.class,Stock.class) .setManagementEnabled(true) .setStatisticsEnabled(true); Cache<String,Stock> cache = cm.createCache("J12014",config); cache.invoke("PAYA", new PrintStock());
  • 32. @payara_fish Other JSR107 Features • Cache Loader and Cache Writers – Implements Read through and write through caching for persistence stores • Statistics – JMX Statistics (demo) • CDI Integration – Annotations for automatic cache interactions
  • 33. @payara_fish CacheLoader and CacheWriter • Integrate with external resource – JPA Caching – Memcached integration – NoSQL integration • Provide read through and write through capability
  • 34. @payara_fish CacheLoader and CacheWriter • CacheLoader for read through – load(Key) – loadAll(Iterable<Key>) – Added to Cache Configuration • CacheWriter for write through – write, writeAll – delete, deleteAll – Added to Cache Configuration
  • 35. @payara_fish JSR 107 Annotations • @CacheDefaults • @CacheResult • @CachePut • @CacheRemove • @CacheRemoveAll
  • 36. @payara_fish Example Annotations package my.app; @CacheDefaults(cacheName="domainCache") public class DomainDao { @CacheResult public Domain getDomain(String domainId, int index) { ... } @CacheRemove public void deleteDomain(String domainId, int index) { ... } @CacheResult(cacheName="allDomains") public List<Domain> getAllDomains() { ... } }
  • 37. @payara_fish Example Annotations package my.app; public class DomainDao { @CachePut(cacheName="domainCache") public void updateDomain(String domainId, int index, @CacheValue Domain domain) { ... } }
  • 38. @payara_fish Learn More • https://jcp.org/en/jsr/detail?id=107 • https://github.com/jsr107 • https://groups.google.com/forum/#!foru m/jsr107