SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Ehcache Architecture, Features and
Usage Patterns
Greg Luck
Maintainer, ehcache - http://ehcache.sf.net
Member, JSR 107 JCACHE Expert Group
Chief Architect, Wotif.com - http://wotif.com


                             2009 Updated from JavaOne Session 2007 |
Agenda
Introduction
The Theory of Caching
Ehcache Architecture
General Purpose Caching
Web Caching
Java Persistence API (JPA)/Hibernate Caching
Distributed Caching for Clusters
Cache Server
Step-by-Step Coding Demo
                    2009 Updated from JavaOne Session 2007 |   2
Introduction
About Ehcache
    Since 2003
●


    The most widely used Java platform Cache
●


    Apache 2.0 License
●


    Integrated by lots of projects, products
●


    Hibernate Provider implemented 2003
●


    Web Caching 2004
●


    Distributed Caching 2006
●


    JCACHE implementation 2007
●


    Cache Server 2008
●



                        2009 Updated from JavaOne Session 2007 |   3
The Theory of Caching
How much faster will caching make an application?
It depends on a multitude of factors being:
● how many times a cached piece of data can and

   is reused by the application
● the proportion of the response time that is

   alleviated by caching
● In applications that are I/O bound, which is most

   business applications, most of the response time
   is getting data from a database. Therefore the
   speed up mostly depends on how much reuse a
   piece of data gets.

                         2009 Updated from JavaOne Session 2007 |   4
The Theory of Caching
Cache Efficiency
Factors which affect the efficiency of a cache are:
● Required Liveness of Data


● Proportion of total data cached


● Read/Write ratio


● Caching in a single VM versus Caching Clusters




                       2009 Updated from JavaOne Session 2007 |   5
The Theory of Caching
How to calculate entire system speedup: Amdahl's Law
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)



Things to Watch:
   ● For a web application the “system” should

     include browser render time and network
     latency.

                           2009 Updated from JavaOne Session 2007 |   6
The Theory of Caching
Speed up from a Web Page Cache
Uncached page time: 2 seconds
Cache retrieval time: 2ms
Proportion: 100%
The expected server side system speedup is thus:
     1 / ((1 - 1) + 1 / 1000)
     = 1 / (0 + .001)
     = 1000 times system speedup
The to the browser “system” speed up is much less

                       2009 Updated from JavaOne Session 2007 |   7
The Theory of Caching
Speed up from a Database Level Cache
Uncached page time: 2 seconds
Database time: 1.5 seconds
Cache retrieval time: 2ms
Proportion: 75% (1.5/2)
The expected system speedup is thus:
    1 / ((1 - .75) + .75 / (1500/2)))
    = 1 / (.25 + .75/750)
    = 3.98 times system speedup

                        2009 Updated from JavaOne Session 2007 |   8
Architecture




               2009 Updated from JavaOne Session 2007 |   9
General Purpose Caching
Step by Step
1. Add ehcache Java Archive (JAR) to your
   classpath
2. Place configuration in ehcache.xml and add it to
   your classpath
3. Create a CacheManager
  CacheManager manager = CacheManager.create();

4. Reference a Cache
  Ehcache sampleCache = manager.getCache();

5. Use it
  sampleCache.put(new Element(“key”, “value”));
  sampleCache.get(“key”);


                                2009 Updated from JavaOne Session 2007 |   10
Usage - General Purpose Caching
ehcache.xml Configuration
<ehcache>

   <diskStore path=quot;java.io.tmpdirquot;/>

   ...

   <cache name=quot;sampleCache1quot;
           maxElementsInMemory=quot;10000quot;
           maxElementsOnDisk=quot;1000quot;
           eternal=quot;falsequot;
           overflowToDisk=quot;truequot;
           timeToIdleSeconds=quot;300quot;
           timeToLiveSeconds=quot;600quot;
           memoryStoreEvictionPolicy=quot;LFUquot;
            />
</ehcache>
                         2009 Updated from JavaOne Session 2007 |   11
Web Caching
Step by Step
1. Use or Subclass SimpleCachingFilter or
   SimplePageFragmentCachingFilter
2. Configure filter in web.xml
3. Create a mapping in web.xml
4. Configure a cache entry matching the filter name




                      2009 Updated from JavaOne Session 2007 |   12
Web Caching
Example Scenario



  /index.jsp




 /include/footer.jsp




                       2009 Updated from JavaOne Session 2007 |   13
Filter Configuration in web.xml
Full Page Cache
<filter>
   <filter-name>SimplePageCachingFilter</filter-name>
   <filter-class>net.sf.ehcache.constructs.web.filter.
               SimplePageCachingFilter
   </filter-class>
</filter>

<filter-mapping>
     <filter-name>SimplePageCachingFilter</filter-name>
     <url-pattern>/index.jsp</url-pattern>
     <dispatcher>REQUEST</dispatcher>
     <dispatcher>INCLUDE</dispatcher>
     <dispatcher>FORWARD</dispatcher>
 </filter-mapping>

                          2009 Updated from JavaOne Session 2007 |   14
Add Cache to Ehcache Configuration
Full Page Cache
<ehcache>

   <diskStore path=quot;java.io.tmpdirquot;/>

   ...

   <cache name=quot;SimplePageCachingFilterquot;
           maxElementsInMemory=quot;10000quot;
           maxElementsOnDisk=quot;1000quot;
           eternal=quot;falsequot;
           overflowToDisk=quot;truequot;
           timeToIdleSeconds=quot;300quot;
           timeToLiveSeconds=quot;600quot;
           memoryStoreEvictionPolicy=quot;LFUquot;
            />
</ehcache>
                         2009 Updated from JavaOne Session 2007 |   15
Filter Configuration in web.xml
Page Fragment Cache
<filter>
   <filter-name>SimplePageFragmentCache</filter-name>
   <filter-class>net.sf.ehcache.constructs.web.filter.
                    SimplePageFragmentCachingFilter
   </filter-class>
</filter>

<!-- Page Fragment Cache -->
<filter-mapping>
     <filter-name>SimplePageFragmentCachingFilter
</filter-name>
     <url-pattern>/include/Footer.jsp</url-pattern>
</filter-mapping>



                          2009 Updated from JavaOne Session 2007 |   16
JPA/Hibernate Caching
Overview
    Hibernate can either be used directly either or
●

    via the Hibernate Java Persistence API Provider
    in Hibernate 3.2
    Ehcache is a CacheProvider for Hibernate 2.x
●

    and 3.x
Example

        Simple Country persistent
    ●

        object/Entity


                         2009 Updated from JavaOne Session 2007 |   17
JPA/Hibernate Caching
Step by Step
1. Configure Hibernate to use ehcache
2. Configure the Country object's cacheability. This
   can be done in a number of ways.
3. Decide whether to use defaults, or to configure
   specific cache settings for the Country object
   cache in ehcache.xml




                       2009 Updated from JavaOne Session 2007 |   18
JPA/Hibernate Caching
Configure Hibernate to use ehcache


Add the following to hibernate.properties
hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider

<!-- optional configuration file parameter -->
net.sf.ehcache.configurationResourceName=/name_of_configuration_resource




                                2009 Updated from JavaOne Session 2007 |   19
JPA/Hibernate Caching
Native Hibernate Mapping File Configuration
<hibernate-mapping>

<class
    name=quot;com.somecompany.someproject.domain.Countryquot;
    table=quot;ut_Countriesquot;
    dynamic-update=quot;falsequot;
    dynamic-insert=quot;falsequot;
>
    <cache usage=quot;read-write|nonstrict-read-write|read-onlyquot; />
</class>
...
</hibernate-mapping>

<cache
    usage=quot;transactional|read-write|nonstrict-read-write|read-onlyquot;
    region=quot;RegionNamequot;
    include=quot;all|non-lazyquot;
/>

                                2009 Updated from JavaOne Session 2007 |   20
JPA/Hibernate Caching
Entity Configuration with JPA and Hibernate Annotations

@Entity
...
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public Class Country {

    private String name;

    ...

}




                                2009 Updated from JavaOne Session 2007 |   21
Distributed Caching for Clusters
Features
1. Pluggable distribution mechanism.
2. RMI, JGroups and JMS replication modules.
   Terracotta also has an ehcache provider.
3. Multiple “clusters”
4. Replication set per Cache. Options:
   1. Replicate adds
   2. Replicate removes
   3. Replicate update by copy or invalidate
   4. Async or Sync
5. Bootstrapping from existing Caches in a cluster
                          2009 Updated from JavaOne Session 2007 |   22
Distributed Caching for Clusters
Architecture




                 2009 Updated from JavaOne Session 2007 |   23
Distributed Caching for Clusters
RMI Based Replication
1. Multicast Peer Discovery
  <cacheManagerPeerProviderFactory class=
  quot;net.sf.ehcache.distribution.
  RMICacheManagerPeerProviderFactoryquot;
  properties=quot;peerDiscovery=automatic,
     multicastGroupAddress=230.0.0.1,
  multicastGroupPort=4446/>



2. RMI Listener
   <cacheManagerPeerListenerFactory class=
   quot;net.sf.ehcache.distribution.RMICacheManagerPeerLis
   tenerFactoryquot;properties=quot;port=40001quot;/>



                        2009 Updated from JavaOne Session 2007 |   24
Distributed Caching for Clusters
    Set Replication Per Cache
<cache ...>
   <cacheEventListenerFactory
  class=quot;net.sf.ehcache.distribution.RMICacheReplicatorFactoryquot;
      properties=quot;replicateAsynchronously=true,
      replicatePuts=true,
      replicateUpdates=true,
      replicateUpdatesViaCopy=true,
      replicateRemovals=true,
      asynchronousReplicationIntervalMillis=1000quot;/>
      ...
</cache>




                                2009 Updated from JavaOne Session 2007 |   25
Distributed Caching for Clusters
    Set Bootstrapping Per Cache
<cache ...>
       <bootstrapCacheLoaderFactory class=quot;
  net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactoryquot;
   properties=quot;bootstrapAsynchronously=true,
               maximumChunkSizeBytes=5000000quot;/>
</cache>




                               2009 Updated from JavaOne Session 2007 |   26
Cache Server
REST and SOAP APIs
Supports HTTP/1.1 request pipelining
Deployed to a WAR or self-contained with Glassfish
Embedded
Benefits over memcached:
•clients in any language
•may utilise HTTP load balancers
•servers are clustered using ehcache replication



                           2009 Updated from JavaOne Session 2007 |   27
Cache Server
Architecture




               2009 Updated from JavaOne Session 2007 |   28
Cache Server
 Ehcache in-process compared with Memcached
 (Ehcache server would be similar to memcached)
7000

6000

5000
                                                                             ehcache-1.2.4
                                                                             memory
4000
                                                                             ehcache-1.2.4 disk
                                                                             memcached-1.2.1
3000

2000

1000

   0
        put/set        get                         remove/delete
                             2009 Updated from JavaOne Session 2007 |   29
Cache Server
Client coding examples
Scala
import java.net.URL
   import scala.io.Source.fromInputStream

   object ExampleScalaGet extends Application {
     val url = new URL(quot;http://localhost:8080/ehcache/rest/sampleCache2/2quot;)
     fromInputStream(url.openStream).getLines.foreach(print)
   }



PHP
<?php
   $ch = curl_init();
   curl_setopt ($ch, CURLOPT_URL, quot;http://localhost:8080/ehcache/rest/sampleCache2/3quot;);
   curl_setopt ($ch, CURLOPT_HEADER, 0);
   curl_exec ($ch);
   curl_close ($ch);
   ?>




                                        2009 Updated from JavaOne Session 2007 |   30
Summary
    Most apps will benefit from caching
●


    You can calculate the speed up
●


    Ehcache is a modern, modular family of caching
●

    tools
    You can also benefit from ehcache indirectly
●

    through frameworks that use it
    Distributed ehcache is a small configuration step
●


    Cache Server is the new kid on the block
●




                        2009 Updated from JavaOne Session 2007 |   31
For More Information
    Project Website:
●

    http://ehcache.sf.net
    Downloadable Book:
●


    http://www.lulu.com/content/paperback-
●

    book/ehcache-150-guide-reference/3553390
    My Email:
●

    gluck@gregluck.com




                            2009 Updated from JavaOne Session 2007 |   32
Q&A
Greg Luck
gluck@gregluck.com




                                                                33
                     2009 Updated from JavaOne Session 2007 |

Weitere ähnliche Inhalte

Was ist angesagt?

Understanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Understanding Query Optimization with ‘regular’ and ‘Exadata’ OracleUnderstanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Understanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Guatemala User Group
 
Security in PHP - 那些在滲透測試的小技巧
Security in PHP - 那些在滲透測試的小技巧Security in PHP - 那些在滲透測試的小技巧
Security in PHP - 那些在滲透測試的小技巧
Orange Tsai
 
EuroBSDcon 2017 System Performance Analysis Methodologies
EuroBSDcon 2017 System Performance Analysis MethodologiesEuroBSDcon 2017 System Performance Analysis Methodologies
EuroBSDcon 2017 System Performance Analysis Methodologies
Brendan Gregg
 
Intel i7 Technologies
Intel i7 TechnologiesIntel i7 Technologies
Intel i7 Technologies
Bibhu Biswal
 

Was ist angesagt? (20)

關聯式資料庫系統的規劃
關聯式資料庫系統的規劃關聯式資料庫系統的規劃
關聯式資料庫系統的規劃
 
Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)
 
Understanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Understanding Query Optimization with ‘regular’ and ‘Exadata’ OracleUnderstanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
Understanding Query Optimization with ‘regular’ and ‘Exadata’ Oracle
 
Security in PHP - 那些在滲透測試的小技巧
Security in PHP - 那些在滲透測試的小技巧Security in PHP - 那些在滲透測試的小技巧
Security in PHP - 那些在滲透測試的小技巧
 
Linux SMEP bypass techniques
Linux SMEP bypass techniquesLinux SMEP bypass techniques
Linux SMEP bypass techniques
 
SQLite3
SQLite3SQLite3
SQLite3
 
Understanding and Measuring I/O Performance
Understanding and Measuring I/O PerformanceUnderstanding and Measuring I/O Performance
Understanding and Measuring I/O Performance
 
Firmware Co-Design & Development for IP Cores in C++/SystemC using Verilator
Firmware Co-Design & Development for IP Cores in C++/SystemC using VerilatorFirmware Co-Design & Development for IP Cores in C++/SystemC using Verilator
Firmware Co-Design & Development for IP Cores in C++/SystemC using Verilator
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at Netflix
 
Linux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringLinux Performance Profiling and Monitoring
Linux Performance Profiling and Monitoring
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
 
Epoll - from the kernel side
Epoll -  from the kernel sideEpoll -  from the kernel side
Epoll - from the kernel side
 
EuroBSDcon 2017 System Performance Analysis Methodologies
EuroBSDcon 2017 System Performance Analysis MethodologiesEuroBSDcon 2017 System Performance Analysis Methodologies
EuroBSDcon 2017 System Performance Analysis Methodologies
 
Intel core i7 processor
Intel core i7 processorIntel core i7 processor
Intel core i7 processor
 
DbVisualizer for NonStop SQL
DbVisualizer for NonStop SQLDbVisualizer for NonStop SQL
DbVisualizer for NonStop SQL
 
Sql Injection
Sql InjectionSql Injection
Sql Injection
 
Intel i7 Technologies
Intel i7 TechnologiesIntel i7 Technologies
Intel i7 Technologies
 
Microcontroller overview 1
Microcontroller overview 1Microcontroller overview 1
Microcontroller overview 1
 
Linux Kernel Crashdump
Linux Kernel CrashdumpLinux Kernel Crashdump
Linux Kernel Crashdump
 
Dpdk performance
Dpdk performanceDpdk performance
Dpdk performance
 

Andere mochten auch

Memcache and Drupal - Vaibhav Jain
Memcache and Drupal - Vaibhav JainMemcache and Drupal - Vaibhav Jain
Memcache and Drupal - Vaibhav Jain
Drupal Camp Delhi
 

Andere mochten auch (19)

Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcache
 
Eh cache in Kaunas JUG
Eh cache in Kaunas JUGEh cache in Kaunas JUG
Eh cache in Kaunas JUG
 
The new ehcache 2.0 and hibernate spi
The new ehcache 2.0 and hibernate spiThe new ehcache 2.0 and hibernate spi
The new ehcache 2.0 and hibernate spi
 
Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroids
 
Introduction to JQuery
Introduction to JQueryIntroduction to JQuery
Introduction to JQuery
 
Memcache
MemcacheMemcache
Memcache
 
Real Terracotta
Real TerracottaReal Terracotta
Real Terracotta
 
Memcache and Drupal - Vaibhav Jain
Memcache and Drupal - Vaibhav JainMemcache and Drupal - Vaibhav Jain
Memcache and Drupal - Vaibhav Jain
 
Memcache
MemcacheMemcache
Memcache
 
Refreshing mule cache using oracle database change notification
Refreshing mule cache using oracle database change notificationRefreshing mule cache using oracle database change notification
Refreshing mule cache using oracle database change notification
 
Building High Scalability Apps With Terracotta
Building High Scalability Apps With TerracottaBuilding High Scalability Apps With Terracotta
Building High Scalability Apps With Terracotta
 
Clustering Java applications with Terracotta and Hazelcast
Clustering Java applications with Terracotta and HazelcastClustering Java applications with Terracotta and Hazelcast
Clustering Java applications with Terracotta and Hazelcast
 
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...
Architectural Terracotta History, Composition, Failure, Anchoring, Repair and...
 
Apache Geode で始める Spring Data Gemfire
Apache Geode で始めるSpring Data GemfireApache Geode で始めるSpring Data Gemfire
Apache Geode で始める Spring Data Gemfire
 
Terracotta And Hibernate
Terracotta And  HibernateTerracotta And  Hibernate
Terracotta And Hibernate
 
SAP Logistics - CS - Standard Process & Configuration document
SAP Logistics - CS - Standard Process & Configuration documentSAP Logistics - CS - Standard Process & Configuration document
SAP Logistics - CS - Standard Process & Configuration document
 
SAP for Beginners
SAP for BeginnersSAP for Beginners
SAP for Beginners
 
Basics of SAP for noobs (dummies)
Basics of SAP for noobs (dummies)Basics of SAP for noobs (dummies)
Basics of SAP for noobs (dummies)
 
Sap plant maintenance
Sap plant maintenanceSap plant maintenance
Sap plant maintenance
 

Ähnlich wie Ehcache Architecture, Features And Usage Patterns

Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
elliando dias
 
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionAdvanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
ColdFusionConference
 
Faq websphere performance
Faq websphere performanceFaq websphere performance
Faq websphere performance
budakia
 
Struts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web ApplicationsStruts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web Applications
elliando dias
 

Ähnlich wie Ehcache Architecture, Features And Usage Patterns (20)

Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
 
awergaezrg
awergaezrgawergaezrg
awergaezrg
 
sakdjfhaksjfhaskjh
sakdjfhaksjfhaskjhsakdjfhaksjfhaskjh
sakdjfhaksjfhaskjh
 
salkdjfhdjkghdfkjh
salkdjfhdjkghdfkjhsalkdjfhdjkghdfkjh
salkdjfhdjkghdfkjh
 
aksdfhaskdjfhasdjkh
aksdfhaskdjfhasdjkhaksdfhaskdjfhasdjkh
aksdfhaskdjfhasdjkh
 
askldjfhaskdfj aslkdjfhaskdfhasjk askldf ashkdf
askldjfhaskdfj aslkdjfhaskdfhasjk askldf ashkdfaskldjfhaskdfj aslkdjfhaskdfhasjk askldf ashkdf
askldjfhaskdfj aslkdjfhaskdfhasjk askldf ashkdf
 
aergserga
aergsergaaergserga
aergserga
 
sergaerwga
sergaerwgasergaerwga
sergaerwga
 
Cache is King
Cache is KingCache is King
Cache is King
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 Presentation
 
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionAdvanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
 
Faq websphere performance
Faq websphere performanceFaq websphere performance
Faq websphere performance
 
Developing High Performance and Scalable ColdFusion Application Using Terraco...
Developing High Performance and Scalable ColdFusion Application Using Terraco...Developing High Performance and Scalable ColdFusion Application Using Terraco...
Developing High Performance and Scalable ColdFusion Application Using Terraco...
 
Developing High Performance and Scalable ColdFusion Applications Using Terrac...
Developing High Performance and Scalable ColdFusion Applications Using Terrac...Developing High Performance and Scalable ColdFusion Applications Using Terrac...
Developing High Performance and Scalable ColdFusion Applications Using Terrac...
 
Struts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web ApplicationsStruts An Open-source Architecture for Web Applications
Struts An Open-source Architecture for Web Applications
 
Hackingtomcat
HackingtomcatHackingtomcat
Hackingtomcat
 
Hacking Tomcat
Hacking TomcatHacking Tomcat
Hacking Tomcat
 
ASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache ExtensibilityASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache Extensibility
 
Manual 5
Manual 5Manual 5
Manual 5
 
MySQL 5.7: Performance Schema Improvements
MySQL 5.7: Performance Schema ImprovementsMySQL 5.7: Performance Schema Improvements
MySQL 5.7: Performance Schema Improvements
 

Mehr von Eduardo Pelegri-Llopart

Mehr von Eduardo Pelegri-Llopart (20)

Juggling at freenome
Juggling   at freenomeJuggling   at freenome
Juggling at freenome
 
Csumb capstone-fall2016
Csumb capstone-fall2016Csumb capstone-fall2016
Csumb capstone-fall2016
 
Digital activitymanagement
Digital activitymanagementDigital activitymanagement
Digital activitymanagement
 
Progress next iot_pelegri
Progress next iot_pelegriProgress next iot_pelegri
Progress next iot_pelegri
 
Pelegri Desarrollando en una nueva era de software
Pelegri   Desarrollando en una nueva era de software Pelegri   Desarrollando en una nueva era de software
Pelegri Desarrollando en una nueva era de software
 
Market trends in IT - exchange cala - October 2015
Market trends in IT - exchange cala - October 2015Market trends in IT - exchange cala - October 2015
Market trends in IT - exchange cala - October 2015
 
The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015
 
IOT - Presentation to PEP @ Progress
IOT - Presentation to PEP @ ProgressIOT - Presentation to PEP @ Progress
IOT - Presentation to PEP @ Progress
 
Node.js as an IOT Bridge
Node.js as an IOT BridgeNode.js as an IOT Bridge
Node.js as an IOT Bridge
 
What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...
What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...
What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...
 
What is the Internet of Things and How it Impacts You
What is the Internet of Things and How it Impacts YouWhat is the Internet of Things and How it Impacts You
What is the Internet of Things and How it Impacts You
 
Community Update 25 Mar2010 - English
Community Update 25 Mar2010 - EnglishCommunity Update 25 Mar2010 - English
Community Update 25 Mar2010 - English
 
GlassFish Community Update 25 Mar2010
GlassFish Community Update 25 Mar2010GlassFish Community Update 25 Mar2010
GlassFish Community Update 25 Mar2010
 
Glass Fish Portfolio C1 West V3.Mini
Glass Fish Portfolio C1 West V3.MiniGlass Fish Portfolio C1 West V3.Mini
Glass Fish Portfolio C1 West V3.Mini
 
Virtual Box Aquarium May09
Virtual Box Aquarium May09Virtual Box Aquarium May09
Virtual Box Aquarium May09
 
Introduction To Web Beans
Introduction To Web BeansIntroduction To Web Beans
Introduction To Web Beans
 
OpenDS Primer Aquarium
OpenDS Primer AquariumOpenDS Primer Aquarium
OpenDS Primer Aquarium
 
Fuji Overview
Fuji OverviewFuji Overview
Fuji Overview
 
Nuxeo 5.2 Glassfish
Nuxeo 5.2 GlassfishNuxeo 5.2 Glassfish
Nuxeo 5.2 Glassfish
 
OpenSSO Deployments
OpenSSO DeploymentsOpenSSO Deployments
OpenSSO Deployments
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Ehcache Architecture, Features And Usage Patterns

  • 1. Ehcache Architecture, Features and Usage Patterns Greg Luck Maintainer, ehcache - http://ehcache.sf.net Member, JSR 107 JCACHE Expert Group Chief Architect, Wotif.com - http://wotif.com 2009 Updated from JavaOne Session 2007 |
  • 2. Agenda Introduction The Theory of Caching Ehcache Architecture General Purpose Caching Web Caching Java Persistence API (JPA)/Hibernate Caching Distributed Caching for Clusters Cache Server Step-by-Step Coding Demo 2009 Updated from JavaOne Session 2007 | 2
  • 3. Introduction About Ehcache Since 2003 ● The most widely used Java platform Cache ● Apache 2.0 License ● Integrated by lots of projects, products ● Hibernate Provider implemented 2003 ● Web Caching 2004 ● Distributed Caching 2006 ● JCACHE implementation 2007 ● Cache Server 2008 ● 2009 Updated from JavaOne Session 2007 | 3
  • 4. The Theory of Caching How much faster will caching make an application? It depends on a multitude of factors being: ● how many times a cached piece of data can and is reused by the application ● the proportion of the response time that is alleviated by caching ● In applications that are I/O bound, which is most business applications, most of the response time is getting data from a database. Therefore the speed up mostly depends on how much reuse a piece of data gets. 2009 Updated from JavaOne Session 2007 | 4
  • 5. The Theory of Caching Cache Efficiency Factors which affect the efficiency of a cache are: ● Required Liveness of Data ● Proportion of total data cached ● Read/Write ratio ● Caching in a single VM versus Caching Clusters 2009 Updated from JavaOne Session 2007 | 5
  • 6. The Theory of Caching How to calculate entire system speedup: Amdahl's Law 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) Things to Watch: ● For a web application the “system” should include browser render time and network latency. 2009 Updated from JavaOne Session 2007 | 6
  • 7. The Theory of Caching Speed up from a Web Page Cache Uncached page time: 2 seconds Cache retrieval time: 2ms Proportion: 100% The expected server side system speedup is thus: 1 / ((1 - 1) + 1 / 1000) = 1 / (0 + .001) = 1000 times system speedup The to the browser “system” speed up is much less 2009 Updated from JavaOne Session 2007 | 7
  • 8. The Theory of Caching Speed up from a Database Level Cache Uncached page time: 2 seconds Database time: 1.5 seconds Cache retrieval time: 2ms Proportion: 75% (1.5/2) The expected system speedup is thus: 1 / ((1 - .75) + .75 / (1500/2))) = 1 / (.25 + .75/750) = 3.98 times system speedup 2009 Updated from JavaOne Session 2007 | 8
  • 9. Architecture 2009 Updated from JavaOne Session 2007 | 9
  • 10. General Purpose Caching Step by Step 1. Add ehcache Java Archive (JAR) to your classpath 2. Place configuration in ehcache.xml and add it to your classpath 3. Create a CacheManager CacheManager manager = CacheManager.create(); 4. Reference a Cache Ehcache sampleCache = manager.getCache(); 5. Use it sampleCache.put(new Element(“key”, “value”)); sampleCache.get(“key”); 2009 Updated from JavaOne Session 2007 | 10
  • 11. Usage - General Purpose Caching ehcache.xml Configuration <ehcache> <diskStore path=quot;java.io.tmpdirquot;/> ... <cache name=quot;sampleCache1quot; maxElementsInMemory=quot;10000quot; maxElementsOnDisk=quot;1000quot; eternal=quot;falsequot; overflowToDisk=quot;truequot; timeToIdleSeconds=quot;300quot; timeToLiveSeconds=quot;600quot; memoryStoreEvictionPolicy=quot;LFUquot; /> </ehcache> 2009 Updated from JavaOne Session 2007 | 11
  • 12. Web Caching Step by Step 1. Use or Subclass SimpleCachingFilter or SimplePageFragmentCachingFilter 2. Configure filter in web.xml 3. Create a mapping in web.xml 4. Configure a cache entry matching the filter name 2009 Updated from JavaOne Session 2007 | 12
  • 13. Web Caching Example Scenario /index.jsp /include/footer.jsp 2009 Updated from JavaOne Session 2007 | 13
  • 14. Filter Configuration in web.xml Full Page Cache <filter> <filter-name>SimplePageCachingFilter</filter-name> <filter-class>net.sf.ehcache.constructs.web.filter. SimplePageCachingFilter </filter-class> </filter> <filter-mapping> <filter-name>SimplePageCachingFilter</filter-name> <url-pattern>/index.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 2009 Updated from JavaOne Session 2007 | 14
  • 15. Add Cache to Ehcache Configuration Full Page Cache <ehcache> <diskStore path=quot;java.io.tmpdirquot;/> ... <cache name=quot;SimplePageCachingFilterquot; maxElementsInMemory=quot;10000quot; maxElementsOnDisk=quot;1000quot; eternal=quot;falsequot; overflowToDisk=quot;truequot; timeToIdleSeconds=quot;300quot; timeToLiveSeconds=quot;600quot; memoryStoreEvictionPolicy=quot;LFUquot; /> </ehcache> 2009 Updated from JavaOne Session 2007 | 15
  • 16. Filter Configuration in web.xml Page Fragment Cache <filter> <filter-name>SimplePageFragmentCache</filter-name> <filter-class>net.sf.ehcache.constructs.web.filter. SimplePageFragmentCachingFilter </filter-class> </filter> <!-- Page Fragment Cache --> <filter-mapping> <filter-name>SimplePageFragmentCachingFilter </filter-name> <url-pattern>/include/Footer.jsp</url-pattern> </filter-mapping> 2009 Updated from JavaOne Session 2007 | 16
  • 17. JPA/Hibernate Caching Overview Hibernate can either be used directly either or ● via the Hibernate Java Persistence API Provider in Hibernate 3.2 Ehcache is a CacheProvider for Hibernate 2.x ● and 3.x Example Simple Country persistent ● object/Entity 2009 Updated from JavaOne Session 2007 | 17
  • 18. JPA/Hibernate Caching Step by Step 1. Configure Hibernate to use ehcache 2. Configure the Country object's cacheability. This can be done in a number of ways. 3. Decide whether to use defaults, or to configure specific cache settings for the Country object cache in ehcache.xml 2009 Updated from JavaOne Session 2007 | 18
  • 19. JPA/Hibernate Caching Configure Hibernate to use ehcache Add the following to hibernate.properties hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider <!-- optional configuration file parameter --> net.sf.ehcache.configurationResourceName=/name_of_configuration_resource 2009 Updated from JavaOne Session 2007 | 19
  • 20. JPA/Hibernate Caching Native Hibernate Mapping File Configuration <hibernate-mapping> <class name=quot;com.somecompany.someproject.domain.Countryquot; table=quot;ut_Countriesquot; dynamic-update=quot;falsequot; dynamic-insert=quot;falsequot; > <cache usage=quot;read-write|nonstrict-read-write|read-onlyquot; /> </class> ... </hibernate-mapping> <cache usage=quot;transactional|read-write|nonstrict-read-write|read-onlyquot; region=quot;RegionNamequot; include=quot;all|non-lazyquot; /> 2009 Updated from JavaOne Session 2007 | 20
  • 21. JPA/Hibernate Caching Entity Configuration with JPA and Hibernate Annotations @Entity ... @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public Class Country { private String name; ... } 2009 Updated from JavaOne Session 2007 | 21
  • 22. Distributed Caching for Clusters Features 1. Pluggable distribution mechanism. 2. RMI, JGroups and JMS replication modules. Terracotta also has an ehcache provider. 3. Multiple “clusters” 4. Replication set per Cache. Options: 1. Replicate adds 2. Replicate removes 3. Replicate update by copy or invalidate 4. Async or Sync 5. Bootstrapping from existing Caches in a cluster 2009 Updated from JavaOne Session 2007 | 22
  • 23. Distributed Caching for Clusters Architecture 2009 Updated from JavaOne Session 2007 | 23
  • 24. Distributed Caching for Clusters RMI Based Replication 1. Multicast Peer Discovery <cacheManagerPeerProviderFactory class= quot;net.sf.ehcache.distribution. RMICacheManagerPeerProviderFactoryquot; properties=quot;peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, multicastGroupPort=4446/> 2. RMI Listener <cacheManagerPeerListenerFactory class= quot;net.sf.ehcache.distribution.RMICacheManagerPeerLis tenerFactoryquot;properties=quot;port=40001quot;/> 2009 Updated from JavaOne Session 2007 | 24
  • 25. Distributed Caching for Clusters Set Replication Per Cache <cache ...> <cacheEventListenerFactory class=quot;net.sf.ehcache.distribution.RMICacheReplicatorFactoryquot; properties=quot;replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true, replicateUpdatesViaCopy=true, replicateRemovals=true, asynchronousReplicationIntervalMillis=1000quot;/> ... </cache> 2009 Updated from JavaOne Session 2007 | 25
  • 26. Distributed Caching for Clusters Set Bootstrapping Per Cache <cache ...> <bootstrapCacheLoaderFactory class=quot; net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactoryquot; properties=quot;bootstrapAsynchronously=true, maximumChunkSizeBytes=5000000quot;/> </cache> 2009 Updated from JavaOne Session 2007 | 26
  • 27. Cache Server REST and SOAP APIs Supports HTTP/1.1 request pipelining Deployed to a WAR or self-contained with Glassfish Embedded Benefits over memcached: •clients in any language •may utilise HTTP load balancers •servers are clustered using ehcache replication 2009 Updated from JavaOne Session 2007 | 27
  • 28. Cache Server Architecture 2009 Updated from JavaOne Session 2007 | 28
  • 29. Cache Server Ehcache in-process compared with Memcached (Ehcache server would be similar to memcached) 7000 6000 5000 ehcache-1.2.4 memory 4000 ehcache-1.2.4 disk memcached-1.2.1 3000 2000 1000 0 put/set get remove/delete 2009 Updated from JavaOne Session 2007 | 29
  • 30. Cache Server Client coding examples Scala import java.net.URL import scala.io.Source.fromInputStream object ExampleScalaGet extends Application { val url = new URL(quot;http://localhost:8080/ehcache/rest/sampleCache2/2quot;) fromInputStream(url.openStream).getLines.foreach(print) } PHP <?php $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, quot;http://localhost:8080/ehcache/rest/sampleCache2/3quot;); curl_setopt ($ch, CURLOPT_HEADER, 0); curl_exec ($ch); curl_close ($ch); ?> 2009 Updated from JavaOne Session 2007 | 30
  • 31. Summary Most apps will benefit from caching ● You can calculate the speed up ● Ehcache is a modern, modular family of caching ● tools You can also benefit from ehcache indirectly ● through frameworks that use it Distributed ehcache is a small configuration step ● Cache Server is the new kid on the block ● 2009 Updated from JavaOne Session 2007 | 31
  • 32. For More Information Project Website: ● http://ehcache.sf.net Downloadable Book: ● http://www.lulu.com/content/paperback- ● book/ehcache-150-guide-reference/3553390 My Email: ● gluck@gregluck.com 2009 Updated from JavaOne Session 2007 | 32
  • 33. Q&A Greg Luck gluck@gregluck.com 33 2009 Updated from JavaOne Session 2007 |