Ehcache Architecture, Features And Usage Patterns

  • Published on
    06-May-2015

  • View
    13.604

  • Download
    3

DESCRIPTION

In depth presentation on Ehcache from Greg Luck, the Wotif.com Chief Architect and Ehcache maintainer

Transcript

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.com2009 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 timeis getting data from a database. Therefore thespeed up mostly depends on how much reuse apiece 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 Clusters2009 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 thesystem speed up from a speed up in part of thesystem. 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 networklatency. 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 speedup2009 Updated from JavaOne Session 2007 | 8 9. Architecture2009 Updated from JavaOne Session 2007 | 9 10. General Purpose Caching Step by Step 1. Add ehcache Java Archive (JAR) to yourclasspath 2. Place configuration in ehcache.xml and add it toyour 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 ... 2009 Updated from JavaOne Session 2007 | 11 12. Web Caching Step by Step 1. Use or Subclass SimpleCachingFilter orSimplePageFragmentCachingFilter 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.jsp2009 Updated from JavaOne Session 2007 | 13 14. Filter Configuration in web.xml Full Page Cache SimplePageCachingFilternet.sf.ehcache.constructs.web.filter.SimplePageCachingFilterSimplePageCachingFilter/index.jspREQUESTINCLUDEFORWARD2009 Updated from JavaOne Session 2007 | 14 15. Add Cache to Ehcache Configuration Full Page Cache ... 2009 Updated from JavaOne Session 2007 | 15 16. Filter Configuration in web.xml Page Fragment Cache SimplePageFragmentCachenet.sf.ehcache.constructs.web.filter. SimplePageFragmentCachingFilterSimplePageFragmentCachingFilter /include/Footer.jsp2009 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 ExampleSimple Country persistent object/Entity2009 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. Thiscan be done in a number of ways. 3. Decide whether to use defaults, or to configurespecific cache settings for the Country objectcache in ehcache.xml2009 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 net.sf.ehcache.configurationResourceName=/name_of_configuration_resource 2009 Updated from JavaOne Session 2007 | 19 20. JPA/Hibernate Caching Native Hibernate Mapping File Configuration ... 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 adds2. Replicate removes3. Replicate update by copy or invalidate4. Async or Sync 5. Bootstrapping from existing Caches in a cluster 2009 Updated from JavaOne Session 2007 | 22 23. Distributed Caching for Clusters Architecture2009 Updated from JavaOne Session 2007 | 23 24. Distributed Caching for Clusters RMI Based Replication 1. Multicast Peer Discovery 2. RMI Listener2009 Updated from JavaOne Session 2007 | 24 25. Distributed Caching for Clusters Set Replication Per Cache ... 2009 Updated from JavaOne Session 2007 | 25 26. Distributed Caching for Clusters Set Bootstrapping Per 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 Architecture2009 Updated from JavaOne Session 2007 | 28 29. Cache ServerEhcache in-process compared with Memcached(Ehcache server would be similar to memcached) 700060005000ehcache-1.2.4memory 4000ehcache-1.2.4 diskmemcached-1.2.1 300020001000 0 put/setget remove/delete2009 Updated from JavaOne Session 2007 | 29 30. Cache Server Client coding examples Scala import java.net.URLimport 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 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 332009 Updated from JavaOne Session 2007 |