This document describes some cache solutions, it is a reference for developing cache solution in dashboard server.
In current dashboard, when loading the data from database, often the performance is not good enough, by introducing cache into dashboard, performance should be get improved.
Why Need Cache
Load dashboard configurations from Liferay portlet preference slowly
Load dashboard data from MESR database slowly
No third party cache framework, today we save the dashboard data into Java Map
The cache will:
Be used to save the dashboard and the its configurations data
Bed used in Dashboard server
Make the interactive fast between the B/S
Make a good integration with Restful API
Popular Cache Solutions
Introduce: a simple plug-in component write by java.
Features: fast and simple,lightweight, little dependence, extension and listener. support persistence, support hibernate, distribution, cluster, support REST & SOAP api, support LRU,LFU and FIFO strategy.
Introduce: a cache for reducing the database pressure
Features: multiple file type, deadline 30 days, the limit of key length is 250 bytes, the items limit to 1M( slabs ), the biggest connection is 200 and the biggest soft connection is 1024, a socket communication server that no block, support multiple program language in client, support TCP and UDdepend on GCC and libevent,high performance,simple install, support multi thread,distribution, support LRU, management by hash table, support P protocol
Introduce: a cache( database ) which can save a multiple type data .
Features: support persistence,rich data types,replication, do not support multi thread, a key-value memory system like memcache, support master-slave, support multiple program language in client, support multiple data model( not only String type,it can save list and collection ), three cache method contain memory cache,disk cache and log cache,
Introduce: a standard JSP page data cache.
Features: cache any object, comprehensive API, persistence, cluster, expired limit, only cache http status 200,
JCS(Java Caching System)
Introduce: a temporary buffer area main used by configure the configuration files.
Features: distributed, cluster, use JavaGroups to manage dependencies, expired limit, high performance for that which read operation more than write operation, support LRU and MRU, support lateral， a master server can contains 256 client server,
Introduce: a temporary cache for java object.
Features: spooling, consistency, access shared,can used for jsp data cache,
Introduce:Java lib that performs a series of strict object caching policies
Features: support LRU,LFU,FIFO
Introduce: a java cache plug-in component
Features: distributed, high cluster, use IP multicast to communicate, LGPL
Introduce:.a cache strategy by replication
Features: cluster, replication, support jboss application service, contain TreeCache and TreeCacheAOP
Introduce: a simple java cache implementation from sun company
Features: support LRU,LFU and FIFO, support hibernate control, implementation by configuration files,Cache for fast, configurable, and existing objects in memory
Introduce: Voldemort is a distributed Key-Value storage system using Java language development
Features: distributed, key-value pairs, Data is automatically replicated over multiple servers,supports cache synchronization between multiple servers
Introduce: distributed cluster cache system based on Java
Features: flexibility ,replication, support genericity cache API, can used with ORM, data partition, persistence
Fast & Lightweight
Ehcache is one of the faster java cache in past few years, it is designed for large, high concurrent system. We don’t need to make a complex configuration for cache manager, and it also have a friendly API for us.
It is lightweight, we only need import two jar file like ehcache-x.x.x.jar and ehcache-core-x.x.x.jar, it has a friendly integration with spring, if we use the springMVC annotation, we need import the ehcache-spring-annotations-x.x.x.jar.
The ehcache also have a very simple dependence, it is only the SLF4J.
We can cache about several gigabyte data in memory and disk, it has a fine optimization for big data, even deal with several hundred gigabyte in big memory, it can support multiple cache manager in a single virtual machine, it can be extended to hundreds of nodes in Terracotta server matrix.
Ehcache has good API interface, support serialization( if the cache object not support serialization,but also used the other function of ehcache ), it also has a good expire strategy for cache element, we can set and control the cache lifecycle.
Ehcache also support LRU,LFU,FIFO algorithm。
Support for JSR 107 JCACHE API implementation, it’s convenient to transplant in the future.
When the VM restart, It can recover data from disk, we can use the method cache.flush() to save the data to disk.
We can register cache listeners to deal with the event. We have two listeners interface, such as
CacheManagerEventListener & CacheEventListener
By default, the JMX support is opened, we can listen and manager the Beans like :
Cluster & Distributed Processing
From version1.7,The ehcache support 5 kinds of cluster, include Terracotta, RMI( 1.2 ), JMS, JGroups( 1.5 ) and EhCache Server.
In cluster cache, we need make sure all the cache objects( usually include the key-value ) must can be serialization, it means implements java.io.Serializable.
Repertory List & Functions
Ehcache-core： API, Standard cache engine,support RMI & Hibernate
Ehcache： Distributed Ehcache, including Ehcache core and Terracotta Library
Ehcache-monitor： Enterprise level monitoring and management
Ehcache-web： Provide caching, gzip filters for Java Servlet Container
Ehcache-jcache： JSR107 JCACHE implementation.
Ehcache-jgroupsreplication： Use JGroups
Ehcache-jmsreplication： Use JMS
Ehcache-openjpa： OpenJPA Plug-in component
Ehcache-server： RESTful cache server for war deploy or Single deploy
Ehcache-unlockedreadsview： Terracotta cache
Ehcache-debugger： Record RMI distribute call back event
Ehcache for Ruby： Support Jruby and Rails
CacheManager：cache manager, in previous only support singleton, but now can support multiton.
Cache：A CacheManager can set few cache to save data，all cache implement Ehcache interface
element：A piece of data (cache items)
system of record（SOR）：A component to read or writer real data( cache ), logic tiers or interface tiers or DB.
Simple Developer Guide
First create an instance of CacheManager, L1,L2,disk
Init this CacheManager instance
Create an Cache instance from CacheManager,define the L1,L2, even the disk
Put the data into the cache
Load the cache data from the cache
Remove the cache