You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by as...@apache.org on 2002/02/15 06:03:39 UTC

cvs commit: jakarta-turbine-stratum/docs/jcs RemoteAuxiliaryCache.html

asmuts      02/02/14 21:03:39

  Added:       docs/jcs RemoteAuxiliaryCache.html
  Log:
  added rough bloated word html doc on the remote cache
  
  Revision  Changes    Path
  1.1                  jakarta-turbine-stratum/docs/jcs/RemoteAuxiliaryCache.html
  
  Index: RemoteAuxiliaryCache.html
  ===================================================================
  <html 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=windows-1252">
  <meta name=ProgId content=Word.Document>
  <meta name=Generator content="Microsoft Word 10">
  <meta name=Originator content="Microsoft Word 10">
  <link rel=File-List href="RemoteAuxiliaryCache_files/filelist.xml">
  <title>Remote Auxiliary Cache Client / Server</title>
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:Author>Aaron Smuts</o:Author>
    <o:LastAuthor>Aaron Smuts</o:LastAuthor>
    <o:Revision>2</o:Revision>
    <o:TotalTime>59</o:TotalTime>
    <o:Created>2002-02-15T04:06:00Z</o:Created>
    <o:LastSaved>2002-02-15T05:06:00Z</o:LastSaved>
    <o:Pages>1</o:Pages>
    <o:Words>1237</o:Words>
    <o:Characters>6298</o:Characters>
    <o:Company>therealm</o:Company>
    <o:Lines>89</o:Lines>
    <o:Paragraphs>10</o:Paragraphs>
    <o:CharactersWithSpaces>7525</o:CharactersWithSpaces>
    <o:Version>10.2625</o:Version>
   </o:DocumentProperties>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <w:WordDocument>
    <w:SpellingState>Clean</w:SpellingState>
    <w:GrammarState>Clean</w:GrammarState>
    <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
   </w:WordDocument>
  </xml><![endif]-->
  <style>
  <!--
   /* 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";}
  span.SpellE
  	{mso-style-name:"";
  	mso-spl-e:yes;}
  span.GramE
  	{mso-style-name:"";
  	mso-gram-e:yes;}
  @page 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 10]>
  <style>
   /* Style Definitions */
   table.MsoNormalTable
  	{mso-style-name:"Table Normal";
  	mso-tstyle-rowband-size:0;
  	mso-tstyle-colband-size:0;
  	mso-style-noshow:yes;
  	mso-style-parent:"";
  	mso-padding-alt:0in 5.4pt 0in 5.4pt;
  	mso-para-margin:0in;
  	mso-para-margin-bottom:.0001pt;
  	mso-pagination:widow-orphan;
  	font-size:10.0pt;
  	font-family:"Times New Roman";}
  </style>
  <![endif]-->
  </head>
  
  <body lang=EN-US style='tab-interval:.5in'>
  
  <div class=Section1>
  
  <p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
  normal'>Remote Auxiliary Cache Client / Server<o:p></o:p></b></p>
  
  <p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
  normal'><o:p>&nbsp;</o:p></b></p>
  
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Description<o:p></o:p></b></p>
  
  <p class=MsoNormal>The Remote Auxiliary Cache is an optional plug in for JCS. <span
  style='mso-spacerun:yes'>�</span>It is intended for use in multi-tiered systems
  to maintain cache consistency.<span style='mso-spacerun:yes'>� </span>It uses a
  highly reliable RMI client server framework that currently allows for up to 256
  clients.<span style='mso-spacerun:yes'>� </span>Using a listener id allows
  multiple clients running on the same machine to connect to the remote cache
  server.<span style='mso-spacerun:yes'>� </span>All cache regions on one client
  share a listener per auxiliary, but register separately. <span
  style='mso-spacerun:yes'>�</span>This minimizes the number of connections
  necessary and still avoids unnecessary updates for regions that are not
  configured to use the remote cache.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>Local remote cache clients connect to the remote cache on a
  configurable port and register a listener to receive cache update callbacks at
  a configurable port.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>If there is an error connecting to the remote server or if
  an error occurs in transmission, the client will retry for a configurable
  number of tires before moving into a failover-recovery mode.<span
  style='mso-spacerun:yes'>� </span>If failover servers are configured the remote
  cache clients will try to register with other failover servers in a sequential
  order.<span style='mso-spacerun:yes'>� </span>If a connection is made, the
  client will broadcast all relevant cache updates to the failover server while
  trying periodically to reconnect with the primary server.<span
  style='mso-spacerun:yes'>� </span>If there are no failovers configured the
  client will move into a zombie mode while it tries to re-establish the
  connection.<span style='mso-spacerun:yes'>� </span>By default, the cache
  clients run in an optimistic mode and the failure of the communication channel
  is detected by an attempted update to the server.<span
  style='mso-spacerun:yes'>� </span>A pessimistic mode is configurable so that
  the clients will engage in active status checks.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>The remote cache server broadcasts updates to listeners
  other than the originating source.<span style='mso-spacerun:yes'>� </span><span
  style='mso-spacerun:yes'>�</span>If the remote cache fails to propagate an
  update to a client, it will retry for a configurable number of tries before
  de-registering the client. </p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>The cache hub communicates with a fa�ade that implements a
  zombie pattern (balking fa�ade) to prevent blocking.<span
  style='mso-spacerun:yes'>� </span>Puts and removals are queued and occur asynchronously
  in the background.<span style='mso-spacerun:yes'>� </span>Get requests are
  synchronous and can potentially block if there is a communication problem.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>By default client updates are light weight.<span
  style='mso-spacerun:yes'>� </span>The client listeners are configured to remove
  elements form the local cache when there is a put order from the remote.<span
  style='mso-spacerun:yes'>� </span>This allows the client memory store to control
  the memory size algorithm from local usage, rather than having the usage
  patterns dictated by the usage patterns in the system at large.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>When using a remote cache the local cache hub will propagate
  elements in regions configured for the remote cache if the element attributes
  specify that the item to be cached can be sent remotely.<span
  style='mso-spacerun:yes'>� </span>By default there are no remote restrictions
  on elements and the region will dictate the behavior.<span
  style='mso-spacerun:yes'>� </span>The order of auxiliary requests is dictated
  by the order in the configuration file.<span style='mso-spacerun:yes'>�
  </span>The examples are configured to look in memory, then disk, then remote
  caches.<span style='mso-spacerun:yes'>� </span>Most elements will only be retrieved
  from the remote cache once, when they are not in memory or disk and are first
  requested, or after they have been invalidated. </p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Configuration
  (Client)<o:p></o:p></b></p>
  
  <p class=MsoNormal>The configuration is fairly straightforward and is done in
  the auxiliary cache section of the <span class=SpellE>cache.ccf</span>
  configuration file.<span style='mso-spacerun:yes'>� </span>In the example
  below, I created a Remote Auxiliary Cache Client referenced by &quot;<span
  class=SpellE>RFailover</span>&quot;.<span style='mso-spacerun:yes'>� </span></p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>This auxiliary cache will use localhost<span class=GramE>:1102</span>
  as its primary remote cache server and will attempt to failover to localhost:1103
  if the primary is down.<span style='mso-spacerun:yes'>� </span></p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>Setting <span class=GramE>&quot; <span class=SpellE>RemoveUponRemotePut</span></span>&quot;
  to &quot;false&quot; would cause remote puts to be translated into put requests
  to the client region.<span style='mso-spacerun:yes'>� </span>By default it is
  true, causing remote put requests to be issued as removes at the client level.<span
  style='mso-spacerun:yes'>� </span>For groups the put request functions slightly
  differently: the item will be removed, since it is no longer valid in its
  current form, but the list of group elements will be updated.<span
  style='mso-spacerun:yes'>� </span>This way the client can maintain the complete
  list of group elements without the burden of storing all of the referenced
  elements.<span style='mso-spacerun:yes'>� </span>Session distribution works in this
  half-lazy replication mode.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>Setting &quot;<span class=SpellE>GetOnly</span>&quot; to
  &quot;true&quot; would cause the remote cache client to stop propagating
  updates to the remote server, while continuing to get items from the remote
  store. </p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'># Remote RMI Cache set up to
  failover<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RFailover=org.apache.stratum.jcs.auxiliary.remote.RemoteCacheFactory<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RFailover.attributes=org.apache.stratum.jcs.auxiliary.remote.RemoteCacheAttributes<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RFailover.attributes.FailoverServers=localhost<span
  class=GramE>:1102,localhost:1103</span></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>jcs.auxiliary.RC.attributes.RemoveUponRemotePut</span>=true<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>jcs.auxiliary.RFailover.attributes.GetOnly</span>=false</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>This cache region is setup to use a disk cache and the
  remote cache configured above:</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>#Regions <span class=SpellE>preconfirgured</span>
  for caching<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.region.testCache1=<span
  class=SpellE>DC<span class=GramE>,RFailover</span></span><o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.region.testCache1.cacheattributes=org.apache.stratum.jcs.engine.CompositeCacheAttributes<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.region.testCache1.cacheattributes.MaxObjects=1000<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Configuration (Server)<o:p></o:p></b></p>
  
  <p class=MsoNormal>The remote cache configuration is growing.<span
  style='mso-spacerun:yes'>� </span>For now, the configuration is done at the top
  of the <span class=SpellE>remote.cache.ccf</span> file. <span
  style='mso-spacerun:yes'>�</span>The <span class=SpellE>startRemoteCache</span>
  script passes the configuration file name to the server when it starts up.<span
  style='mso-spacerun:yes'>� </span>The configuration parameters below will
  create a remote cache server that listens to port 1102 and performs call backs
  on the &quot;<span class=SpellE>remote.cache.service.port</span>,&quot; also
  specified as port 1102.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>The tomcat configuration section is evolving.<span
  style='mso-spacerun:yes'>� </span>If &quot;<span class=SpellE>remote.tomcat.on</span>&quot;
  is set to &quot;true&quot; an embedded tomcat server will run within the remote
  cache, allowing the use of management <span class=SpellE>servlets</span>.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'># Registry used to register and
  provide the <span class=SpellE>IRemoteCacheService</span> service.<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>registry.host</span>=<span
  class=SpellE>localhost</span><o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>registry.port</span>=1102<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'># <span class=GramE>call</span>
  back port to local caches.<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>remote.cache.service.port</span>=1102<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'># <span class=GramE>tomcat</span> <span
  class=SpellE>config</span><o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>remote.tomcat.on</span>=false<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>remote.tomcat.xml=g:/dev/jakarta-turbine-stratum/bin/conf/remote.tomcat.xml<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'># <span class=GramE>cluster</span>
  setting<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>remote.cluster.LocalClusterConsistency</span>=true</p>
  
  <p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>The cluster configuration section is currently considered experimental.<span
  style='mso-spacerun:yes'>� </span>The &quot;<span class=SpellE>LocalClusterConsistency</span>&quot;
  setting tells the remote cache server if it should broadcast updates received
  from other cluster servers to registered local caches.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>To use experimental clustering, the remote cache will have to
  be told what regions to cluster.<span style='mso-spacerun:yes'>� </span>The
  configuration below will cluster all non-preconfigured regions with &quot;RCluster1&quot;.</p>
  
  <p class=MsoNormal style='margin-left:.5in'><br>
  # sets the default aux value for any non configured caches<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>jcs.default</span>=DC<span
  class=GramE>,RCluster1</span><o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.default.cacheattributes=org.apache.stratum.jcs.engine.CompositeCacheAttributes<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE>jcs.default.cacheattributes.MaxObjects</span>=1000</p>
  
  <p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RCluster1=org.apache.stratum.jcs.auxiliary.remote.RemoteCacheFactory<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RCluster1.attributes=org.apache.stratum.jcs.auxiliary.remote.RemoteCacheAttributes<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RCluster1.attributes.RemoteTypeName=CLUSTER<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RCluster1.attributes.RemoveUponRemotePut=false<o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RCluster1.attributes.ClusterServers=localhost<span
  class=GramE>:1103</span><o:p></o:p></p>
  
  <p class=MsoNormal style='margin-left:.5in'>jcs.auxiliary.RCluster1.attributes.GetOnly=false</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'>TODO<o:p></o:p></b></p>
  
  <p class=MsoNormal>The clustering behavior needs to be better defined.<span
  style='mso-spacerun:yes'>� </span>We may want to implement clustering with
  lateral caches between remotes rather than remote caches talking to each other.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>Though small, the remote server configuration could be a bit
  cleaner.</p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>The embedded Tomcat is not workable right now.<span
  style='mso-spacerun:yes'>� </span></p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>Parameters need to be added for running the XML-RPC server
  as well.<b style='mso-bidi-font-weight:normal'><o:p></o:p></b></p>
  
  <p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  </div>
  
  </body>
  
  </html>
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>