SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Talk about ``Active’’ Cache
by qrtt1
Cache For Web Application
http request
Web Handler Layer
Cache For Web Application
http request
Web Handler Layer
Business Logic Layer
call some business logic
Cache For Web Application
http request
Web Handler Layer
Business Logic Layer
call some business logic
very very busy business
Cache For Web Application
http request
Web Handler Layer
Business Logic Layer
call some business logic
http response
compose the final output
very very busy business
Cache For Web Application
http request
Web Handler Layer
Business Logic Layer
call some business logic
http response
compose the final output
very very busy business
HOW LONG DOES
THE CLIENT WAIT ?
Cache For Web Application
http request
Web Handler Layer
Business Logic Layer
http response
Cache Layer
using cacheto reduce the response time
Cache For Web Application
http request
Web Handler Layer
Business Logic Layer
http response
Cache Layer
HIT CACHE
Cache For Web Application
http request
Web Handler Layer
Business Logic Layer
http response
Cache Layer
MISS CACHE
RUN IN THE BUSY WAY
Cache Layer
Cache is passive and only update by caller
if foo in cache:
return cache[foo]
data = business(xyz)
cache[foo] = data
return data
Cache Layer
Data in the cache is expired eventually.
if foo in cache:
return cache[foo]
else:
# users should wait the data available
do_something_with_expired..
ACTIVECache Layer
Data in the cache is updated eventually.
if foo in active_cache:
return active_cache[foo]
data = active_cache({business, xyz})
return data
The difference
Passive Cache
put the data into cache
update the data by caller
Active Cache
put the update-method into cache
update the data by itself
ACTIVE Cache Layer
POC in Java Web
Using AspectJ add the advice to Business Logic
foo(a, b, c, ...)
Business Logic Layer
waving the aop-advice learning how to invoke the business logic
by keep the information about {instance, method signature and arguments}
HIT CACHE forever
refresh cache data automatically
Active Cache Problem
How does the key to define ?
key(args of method) or ...
How to design the cache updater and
scheduler ?
How to migrate the broken deserialiazation
from the class definition change ?
Cache Key Building
methodA(userInfo, str, int, otherPojo)
what does a user
see ? it depends on
userInfo
how does data filter or
sort ?
key = signauure_ + args[0] + args[1] + args[...]
=> signature_UserInfo@a3a4a3a5_3_{a:3,b:3_}
wtf, the key is so bad and never hit cache
Cache Key Building
=> signature_UserInfo@a3a4a3a5_3_{a:3,b:3_}
sometimes toString() is a not good enough
treat userInfo as userInfo.getGroupId()
or convert to the better key format
=> signature_1234567890_3_{a:3,b:3_}
Cache Key Building
=> signature_OtherClass@a3a4a3a5_3_{a:3,b:3_}
sometimes OtherClass no available getters
the useful information is assigned by its constructor
using AOP & mix-in ActiveCacheToString interface
to provide alternative toString()
Should I update it
request from Http Client should not update
request from Scheduler should update
How to check the issue coming from ?
check the stacktrace having
javax.servlet.http.HttpServlet.service is
request from Http Client.
Handle the class definition change
class definition changes will break
everything when deserialization
should change the cache storage pool, too
DevOps should support to check the change
happening

Weitere ähnliche Inhalte

Andere mochten auch

Java web programming
Java web programmingJava web programming
Java web programmingChing Yi Chan
 
JCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineChing Yi Chan
 
The journey of Moving from AWS ELK to GCP Data Pipeline
The journey of Moving from AWS ELK to GCP Data PipelineThe journey of Moving from AWS ELK to GCP Data Pipeline
The journey of Moving from AWS ELK to GCP Data PipelineRandy Huang
 

Andere mochten auch (6)

OSGi Small Lab
OSGi Small LabOSGi Small Lab
OSGi Small Lab
 
Osgi Intro
Osgi IntroOsgi Intro
Osgi Intro
 
Java web programming
Java web programmingJava web programming
Java web programming
 
JCConf2016 Jenkins Pipeline
JCConf2016 Jenkins PipelineJCConf2016 Jenkins Pipeline
JCConf2016 Jenkins Pipeline
 
老舊web上雲端
老舊web上雲端老舊web上雲端
老舊web上雲端
 
The journey of Moving from AWS ELK to GCP Data Pipeline
The journey of Moving from AWS ELK to GCP Data PipelineThe journey of Moving from AWS ELK to GCP Data Pipeline
The journey of Moving from AWS ELK to GCP Data Pipeline
 

Ähnlich wie idea: talk about the Active Cache

TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9Nuno Godinho
 
Instrumenting plugins for Performance Schema
Instrumenting plugins for Performance SchemaInstrumenting plugins for Performance Schema
Instrumenting plugins for Performance SchemaMark Leith
 
Ajax to the Moon
Ajax to the MoonAjax to the Moon
Ajax to the Moondavejohnson
 
Windows Server AppFabric Caching - What it is & when you should use it?
Windows Server AppFabric Caching - What it is & when you should use it?Windows Server AppFabric Caching - What it is & when you should use it?
Windows Server AppFabric Caching - What it is & when you should use it?Robert MacLean
 
Metrics-Driven Engineering
Metrics-Driven EngineeringMetrics-Driven Engineering
Metrics-Driven EngineeringMike Brittain
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Wim Godden
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalabilityWim Godden
 
Optimizing CakePHP 2.x Apps
Optimizing CakePHP 2.x AppsOptimizing CakePHP 2.x Apps
Optimizing CakePHP 2.x AppsJuan Basso
 
Heavy Web Optimization: Backend
Heavy Web Optimization: BackendHeavy Web Optimization: Backend
Heavy Web Optimization: BackendVõ Duy Tuấn
 
Microsoft Windows Server AppFabric
Microsoft Windows Server AppFabricMicrosoft Windows Server AppFabric
Microsoft Windows Server AppFabricMark Ginnebaugh
 
Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Wim Godden
 
Caching and tuning fun for high scalability @ PHPTour
Caching and tuning fun for high scalability @ PHPTourCaching and tuning fun for high scalability @ PHPTour
Caching and tuning fun for high scalability @ PHPTourWim Godden
 
The Value of Reactive
The Value of ReactiveThe Value of Reactive
The Value of ReactiveVMware Tanzu
 
Ten Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-onsTen Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-onsAtlassian
 
php & performance
 php & performance php & performance
php & performancesimon8410
 
Built-in query caching for all PHP MySQL extensions/APIs
Built-in query caching for all PHP MySQL extensions/APIsBuilt-in query caching for all PHP MySQL extensions/APIs
Built-in query caching for all PHP MySQL extensions/APIsUlf Wendel
 
Web Performance, Scalability, and Testing Techniques - Boston PHP Meetup
Web Performance, Scalability, and Testing Techniques - Boston PHP MeetupWeb Performance, Scalability, and Testing Techniques - Boston PHP Meetup
Web Performance, Scalability, and Testing Techniques - Boston PHP MeetupJonathan Klein
 

Ähnlich wie idea: talk about the Active Cache (20)

TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
 
Instrumenting plugins for Performance Schema
Instrumenting plugins for Performance SchemaInstrumenting plugins for Performance Schema
Instrumenting plugins for Performance Schema
 
Ajax to the Moon
Ajax to the MoonAjax to the Moon
Ajax to the Moon
 
Windows Server AppFabric Caching - What it is & when you should use it?
Windows Server AppFabric Caching - What it is & when you should use it?Windows Server AppFabric Caching - What it is & when you should use it?
Windows Server AppFabric Caching - What it is & when you should use it?
 
Metrics-Driven Engineering
Metrics-Driven EngineeringMetrics-Driven Engineering
Metrics-Driven Engineering
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalability
 
Optimizing CakePHP 2.x Apps
Optimizing CakePHP 2.x AppsOptimizing CakePHP 2.x Apps
Optimizing CakePHP 2.x Apps
 
Heavy Web Optimization: Backend
Heavy Web Optimization: BackendHeavy Web Optimization: Backend
Heavy Web Optimization: Backend
 
Microsoft Windows Server AppFabric
Microsoft Windows Server AppFabricMicrosoft Windows Server AppFabric
Microsoft Windows Server AppFabric
 
Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011
 
Lecture1
Lecture1Lecture1
Lecture1
 
Caching and tuning fun for high scalability @ PHPTour
Caching and tuning fun for high scalability @ PHPTourCaching and tuning fun for high scalability @ PHPTour
Caching and tuning fun for high scalability @ PHPTour
 
The value of reactive
The value of reactiveThe value of reactive
The value of reactive
 
The Value of Reactive
The Value of ReactiveThe Value of Reactive
The Value of Reactive
 
Ten Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-onsTen Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-ons
 
php & performance
 php & performance php & performance
php & performance
 
Built-in query caching for all PHP MySQL extensions/APIs
Built-in query caching for all PHP MySQL extensions/APIsBuilt-in query caching for all PHP MySQL extensions/APIs
Built-in query caching for all PHP MySQL extensions/APIs
 
Caching Strategies
Caching StrategiesCaching Strategies
Caching Strategies
 
Web Performance, Scalability, and Testing Techniques - Boston PHP Meetup
Web Performance, Scalability, and Testing Techniques - Boston PHP MeetupWeb Performance, Scalability, and Testing Techniques - Boston PHP Meetup
Web Performance, Scalability, and Testing Techniques - Boston PHP Meetup
 

idea: talk about the Active Cache

  • 1. Talk about ``Active’’ Cache by qrtt1
  • 2. Cache For Web Application http request Web Handler Layer
  • 3. Cache For Web Application http request Web Handler Layer Business Logic Layer call some business logic
  • 4. Cache For Web Application http request Web Handler Layer Business Logic Layer call some business logic very very busy business
  • 5. Cache For Web Application http request Web Handler Layer Business Logic Layer call some business logic http response compose the final output very very busy business
  • 6. Cache For Web Application http request Web Handler Layer Business Logic Layer call some business logic http response compose the final output very very busy business HOW LONG DOES THE CLIENT WAIT ?
  • 7. Cache For Web Application http request Web Handler Layer Business Logic Layer http response Cache Layer using cacheto reduce the response time
  • 8. Cache For Web Application http request Web Handler Layer Business Logic Layer http response Cache Layer HIT CACHE
  • 9. Cache For Web Application http request Web Handler Layer Business Logic Layer http response Cache Layer MISS CACHE RUN IN THE BUSY WAY
  • 10. Cache Layer Cache is passive and only update by caller if foo in cache: return cache[foo] data = business(xyz) cache[foo] = data return data
  • 11. Cache Layer Data in the cache is expired eventually. if foo in cache: return cache[foo] else: # users should wait the data available do_something_with_expired..
  • 12. ACTIVECache Layer Data in the cache is updated eventually. if foo in active_cache: return active_cache[foo] data = active_cache({business, xyz}) return data
  • 13. The difference Passive Cache put the data into cache update the data by caller Active Cache put the update-method into cache update the data by itself
  • 14. ACTIVE Cache Layer POC in Java Web Using AspectJ add the advice to Business Logic foo(a, b, c, ...) Business Logic Layer waving the aop-advice learning how to invoke the business logic by keep the information about {instance, method signature and arguments} HIT CACHE forever refresh cache data automatically
  • 15. Active Cache Problem How does the key to define ? key(args of method) or ... How to design the cache updater and scheduler ? How to migrate the broken deserialiazation from the class definition change ?
  • 16. Cache Key Building methodA(userInfo, str, int, otherPojo) what does a user see ? it depends on userInfo how does data filter or sort ? key = signauure_ + args[0] + args[1] + args[...] => signature_UserInfo@a3a4a3a5_3_{a:3,b:3_} wtf, the key is so bad and never hit cache
  • 17. Cache Key Building => signature_UserInfo@a3a4a3a5_3_{a:3,b:3_} sometimes toString() is a not good enough treat userInfo as userInfo.getGroupId() or convert to the better key format => signature_1234567890_3_{a:3,b:3_}
  • 18. Cache Key Building => signature_OtherClass@a3a4a3a5_3_{a:3,b:3_} sometimes OtherClass no available getters the useful information is assigned by its constructor using AOP & mix-in ActiveCacheToString interface to provide alternative toString()
  • 19. Should I update it request from Http Client should not update request from Scheduler should update How to check the issue coming from ? check the stacktrace having javax.servlet.http.HttpServlet.service is request from Http Client.
  • 20. Handle the class definition change class definition changes will break everything when deserialization should change the cache storage pool, too DevOps should support to check the change happening