SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
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 |

Más contenido relacionado

La actualidad más candente

Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Mikhail Kurnosov
 
How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)
Gavin Guo
 

La actualidad más candente (20)

Lezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaLezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in Java
 
Prerequisite knowledge for shared memory concurrency
Prerequisite knowledge for shared memory concurrencyPrerequisite knowledge for shared memory concurrency
Prerequisite knowledge for shared memory concurrency
 
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례
 
How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)
 
SO-04 Escalonamento de Processos
SO-04 Escalonamento de ProcessosSO-04 Escalonamento de Processos
SO-04 Escalonamento de Processos
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
 
Intro to Node.js (v1)
Intro to Node.js (v1)Intro to Node.js (v1)
Intro to Node.js (v1)
 
Tutoriel Netvibes
Tutoriel NetvibesTutoriel Netvibes
Tutoriel Netvibes
 
Evolution of Android Update Principles
Evolution of Android Update PrinciplesEvolution of Android Update Principles
Evolution of Android Update Principles
 
Lenovo Rack and Tower Server Portfolio
Lenovo Rack and Tower Server PortfolioLenovo Rack and Tower Server Portfolio
Lenovo Rack and Tower Server Portfolio
 
Microsoft Azure Traffic Manager
Microsoft Azure Traffic ManagerMicrosoft Azure Traffic Manager
Microsoft Azure Traffic Manager
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
あるmmapの話
あるmmapの話あるmmapの話
あるmmapの話
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
OpenESB et BPEL
OpenESB et BPELOpenESB et BPEL
OpenESB et BPEL
 
Embedded Hypervisor for ARM
Embedded Hypervisor for ARMEmbedded Hypervisor for ARM
Embedded Hypervisor for ARM
 
IBM MQ V9 Overview
IBM MQ V9 OverviewIBM MQ V9 Overview
IBM MQ V9 Overview
 
System Booting Process overview
System Booting Process overviewSystem Booting Process overview
System Booting Process overview
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
 

Destacado

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

Destacado (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
 

Similar a 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
 

Similar a 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
 

Más de Eduardo Pelegri-Llopart

Más de 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
 

Último

+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@
 

Último (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
+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...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 

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 |