  | 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-08 - By Pradeep Kumar
Back If you have the option to periodically update the cache, the best thing to do is to have a low priority thread that will wake up at regular interval and then invalidates and update the cache. -- --Original Message-- -- From: Erik Beijnoff [mailto:erik@(protected)] Sent: Wednesday, January 07, 2004 9:04 PM To: J2EE-INTEREST@(protected) 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".
DISCLAIMER: This message (including attachment if any) is confidential and may be privileged. Before opening attachments please check them for viruses and defects. MindTree Consulting Private Limited (MindTree) will not be responsible for any viruses or defects or any forwarded attachments emanating either from within MindTree or outside. If you have received this message by mistake please notify the sender by return e-mail and delete this message from your system. Any unauthorized use or dissemination of this message in whole or in part is strictly prohibited. Please note that e-mails are susceptible to change and MindTree shall not be liable for any improper, untimely or incomplete transmission.
=========================================================================== 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".
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft -com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http: //www.w3.org/TR/REC-html40">
<head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859 (See http://iso-8859.ora-code.com)-1">
<meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 9"> <meta name=Originator content="Microsoft Word 9"> <link rel=File-List href="cid:filelist.xml@(protected)"> <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:DoNotRelyOnCSS/> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>0</w:Zoom> <w:DocumentKind>DocumentEmail</w:DocumentKind> <w:EnvelopeVis/> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @(protected) {font-family:Tahoma; panose-1 (See http://ose-1.ora-code.com):2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:553679495 -2147483648 8 0 66047 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} p.MsoAutoSig, li.MsoAutoSig, div.MsoAutoSig {margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} span.EmailStyle15 {mso-style-type:personal-reply; mso-ansi-font-size:10.0pt; mso-ascii-font-family:Arial; mso-hansi-font-family:Arial; mso-bidi-font-family:Arial; color:navy;} @(protected) Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1027"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head>
<body bgcolor=white lang=EN-US style='tab-interval:.5in'>
<div class=Section1>
<p class=MsoNormal><span class=EmailStyle15><font size=2 color=navy face=Arial> <span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial'>If you have the option to periodically update the cache, the best thing to do is to have a low priority thread that will wake up at regular interval and then invalidates and update the cache.<o:p></o:p></span></font></span></p>
<p class=MsoNormal><span class=EmailStyle15><font size=2 color=navy face=Arial> <span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></font></span></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 color=black face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;color:black'>---- -Original Message-- --<br> <b><span style='font-weight:bold'>From:</span></b> Erik Beijnoff [mailto:erik @(protected)]<br> <b><span style='font-weight:bold'>Sent:</span></b> Wednesday, January 07, 2004 9:04 PM<br> <b><span style='font-weight:bold'>To:</span></b> J2EE-INTEREST@(protected)<br> <b><span style='font-weight:bold'>Subject:</span></b> Shared cache best practices?</span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 face="Times New Roman" ><span style='font-size:12.0pt'><![if !supportEmptyParas]> <![endif]><o:p></o:p>< /span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 color=black face=Arial><span style='font-size:10.0pt;font-family:Arial;color:black'>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.</span></font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 color=black face="Times New Roman"><span style='font-size:12.0pt;color:black'> </span> </font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p>< /span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 color=black face=Arial><span style='font-size:10.0pt;font-family:Arial;color:black'>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. </span></font><font color=black><span style='color:black; mso-color-alt:windowtext'><o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 color=black face="Times New Roman"><span style='font-size:12.0pt;color:black'> </span> </font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p>< /span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 color=black face=Arial><span style='font-size:10.0pt;font-family:Arial;color:black'>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.</span></font><font color=black><span style='color:black; mso-color-alt:windowtext'><o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 color=black face="Times New Roman"><span style='font-size:12.0pt;color:black'> </span> </font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p>< /span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 color=black face=Arial><span style='font-size:10.0pt;font-family:Arial;color:black'>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.</span></font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 color=black face="Times New Roman"><span style='font-size:12.0pt;color:black'> </span> </font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p>< /span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 color=black face=Arial><span style='font-size:10.0pt;font-family:Arial;color:black'>Or is this one of those magic moments where EJB actually would make sense?</span>< /font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p>< /span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 color=black face="Times New Roman"><span style='font-size:12.0pt;color:black'> </span> </font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p>< /span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 color=black face=Arial><span style='font-size:10.0pt;font-family:Arial;color:black'>Regards Erik Beijnoff</span></font><font color=black><span style='color:black; mso-color-alt:windowtext'><o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=3 color=black face="Times New Roman"><span style='font-size:12.0pt;color:black'> </span> </font><font color=black><span style='color:black;mso-color-alt:windowtext'><o:p></o:p>< /span></font></p>
</div>
<p></p><p>DISCLAIMER:<br>This message (including attachment if any) is confidential and may be privileged. Before opening attachments please check them for viruses and defects. MindTree Consulting Private Limited (MindTree) will not be responsible for any viruses or defects or any forwarded attachments emanating either from within MindTree or outside. If you have received this message by mistake please notify the sender by return e-mail and delete this message from your system. Any unauthorized use or dissemination of this message in whole or in part is strictly prohibited. Please note that e-mails are susceptible to change and MindTree shall not be liable for any improper, untimely or incomplete transmission.</body>
</html> =========================================================================== 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". <p> =========================================================================== 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". <p>
|
|
 |