  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Struts - A MVC web framework | | Tomcat - JSP/Servlet container | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | | JSP - A mailing list about Java Server Pages specification and reference | |
Struts & Hibernate
|
|
|
  | | | Shared cache best practices? | Shared cache best practices? 2004-01-07 - By Damon Hart-Davis
Back Hi Erik,
One technique that I'm using at the moment is to have the back-end data in EJBs as usual, but to have a wrapper layer round it which holds a cache in a static variable (ie at most one per Web server usually). This cache is write-through (ie updates go through the cache immediately to the EJBs) and reads are from the cache as long for up to a configurable cache lifetime. I am prepared to have different cache users get slightly out of sync (by the number of seconds that I configure for the cache lifetime) for performance/scalability in a distributed system. Each client gets to cache just the data that it needs to read.
Because the data in question is pretty uniform (essentially a glorified properties map for configuration data) the wrapper layer takes only about a page of code.
(Note that the cache lifetime is itself a property in this cache in this case. B^>)
Rgds
Damon
-- -- Original Message -- -- From: "Erik Beijnoff" <erik@(protected)> To: <J2EE-INTEREST@(protected)> Sent: Wednesday, January 07, 2004 3:34 PM Subject: Shared cache best practices?
Im facing a situation where my web server holds a rather extensive cache that is retrieved from a database. I'm seeking a way to be able to connect as many web servers as I'd like to that database and let each server be notified of the updates to the database so that they can keep their caches up to date. I'm looking for best practices in this area.
I'm aware of that one of the possibilities would be to put the cache on a common machine that all web servers access. However, this is not quite the solution I am looking for. The cache does not need to be same for all servers. On the contrary actually. The system is structured in such a fashion that each web server only holds in it's cache the information that is requested on that particular server for the moment. This could mean that each web server has completely different things in their caches. What I'm looking for is a signaling system that tells all web servers that are using that particular database that the data has changed in the database so that they can invalidate that particular portion of their caches so that it can be reread at the next request.
I suppose that keeping a separate cache server going also would create a somewhat rather large amount of overhead, granted, it would though be easier to gurantee consistency.
One of the options that I'm pondering would be a registration and deregistration process in a table in the database whenever a new web server connects to the it, and then let the servers signal updates to all the others through http or RMI or some other suitable method.
Or is this one of those magic moments where EJB actually would make sense?
Regards Erik Beijnoff
=========================================================================== To unsubscribe, send email to listserv@(protected) and include in the body of the message "signoff J2EE-INTEREST". For general help, send email to listserv@(protected) and include in the body of the message "help".
=========================================================================== To unsubscribe, send email to listserv@(protected) and include in the body of the message "signoff J2EE-INTEREST". For general help, send email to listserv@(protected) and include in the body of the message "help".
|
|
 |