Author: zznate
Date: Mon Dec  3 18:17:21 2018
New Revision: 1848087

URL: http://svn.apache.org/viewvc?rev=1848087&view=rev
Log:
CASSANDRA-14851 - Blog post for transient replication by Ariel Weisberg - 
published parts

Added:
    cassandra/site/publish/blog/2018/12/
    cassandra/site/publish/blog/2018/12/03/
    
cassandra/site/publish/blog/2018/12/03/introducing-transient-replication.html
    cassandra/site/publish/img/blog-post-introducing-transient-replication/
    
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring-with-transient-replica.gif
    
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring.gif
    
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-rapid-write-protection.gif
    
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-regular-write.gif
    
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-transient-write-down-node.gif
    
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-transient-write.gif
Modified:
    cassandra/site/publish/blog/index.html
    cassandra/site/publish/feed.xml

Added: 
cassandra/site/publish/blog/2018/12/03/introducing-transient-replication.html
URL: 
http://svn.apache.org/viewvc/cassandra/site/publish/blog/2018/12/03/introducing-transient-replication.html?rev=1848087&view=auto
==============================================================================
--- 
cassandra/site/publish/blog/2018/12/03/introducing-transient-replication.html 
(added)
+++ 
cassandra/site/publish/blog/2018/12/03/introducing-transient-replication.html 
Mon Dec  3 18:17:21 2018
@@ -0,0 +1,287 @@
+<!DOCTYPE html>
+<html>
+  
+
+
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <meta name="description" content="Transient Replication is a new 
experimental feature soon to be available in 4.0. When enabled, it allows for 
the creation of keyspaces where replication fact...">
+  <meta name="keywords" content="cassandra, apache, apache cassandra, 
distributed storage, key value store, scalability, bigtable, dynamo" />
+  <meta name="robots" content="index,follow" />
+  <meta name="language" content="en" />  
+
+  <title>Introducing Transient Replication</title>
+
+  <link rel="canonical" 
href="http://cassandra.apache.org/blog/2018/12/03/introducing-transient-replication.html";>
+
+  <link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"; 
integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
 crossorigin="anonymous">
+  <link rel="stylesheet" href="./../../../../css/style.css">
+  
+
+  
+  <link rel="stylesheet" 
href="https://use.fontawesome.com/releases/v5.2.0/css/all.css"; 
integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ"
 crossorigin="anonymous">
+  
+  <link type="application/atom+xml" rel="alternate" 
href="http://cassandra.apache.org/feed.xml"; title="Apache Cassandra Website" />
+</head>
+
+  <body>
+    <!-- breadcrumbs -->
+<div class="topnav">
+  <div class="container breadcrumb-container">
+    <ul class="breadcrumb">
+      <li>
+        <div class="dropdown">
+          <img class="asf-logo" src="./../../../../img/asf_feather.png" />
+          <a data-toggle="dropdown" href="#">Apache Software Foundation <span 
class="caret"></span></a>
+          <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+            <li><a href="http://www.apache.org";>Apache Homepage</a></li>
+            <li><a href="http://www.apache.org/licenses/";>License</a></li>
+            <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>
+            <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li>
+            <li><a href="http://www.apache.org/security/";>Security</a></li>
+          </ul>
+        </div>
+      </li>
+
+      
+      <li><a href="./../../../../">Apache Cassandra</a></li>
+      
+
+      
+        
+        <li>Introducing Transient Replication</li>
+        
+      
+
+      
+
+      
+    </ul>
+  </div>
+
+  <!-- navbar -->
+  <nav class="navbar navbar-default navbar-static-top" role="navigation">
+    <div class="container">
+      <div class="navbar-header">
+        <button type="button" class="navbar-toggle collapsed" 
data-toggle="collapse" data-target="#cassandra-menu" aria-expanded="false">
+          <span class="sr-only">Toggle navigation</span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </button>
+        <a class="navbar-brand" href="./../../../../"><img 
src="./../../../../img/cassandra_logo.png" alt="Apache Cassandra logo" /></a>
+      </div><!-- /.navbar-header -->
+
+      <div id="cassandra-menu" class="collapse navbar-collapse">
+        <ul class="nav navbar-nav navbar-right">
+          <li><a href="./../../../../">Home</a></li>
+          <li><a href="./../../../../download/">Download</a></li>
+          <li><a href="./../../../../doc/">Documentation</a></li>
+          <li><a href="./../../../../community/">Community</a></li>
+          <li>
+            <a href="./../../../../blog">Blog</a>                    
+        </li>
+        </ul>
+      </div><!-- /#cassandra-menu -->
+
+      
+    </div>
+  </nav><!-- /.navbar -->
+</div><!-- /.topnav -->
+
+    <div class="content">
+  <div class="container">
+  <h2>Introducing Transient Replication</h2>
+    <p>Posted on December 03, 2018 by The Apache Cassandra Community</p>
+    <h5><a href="/blog">&laquo; Back to the Apache Cassandra Blog</a></h5>
+    <hr />
+  <p>Transient Replication is a new experimental feature soon to be available 
in 4.0. When enabled, it allows for the creation of keyspaces where replication 
factor can be specified as a number of copies (full replicas) and temporary 
copies (transient replicas). Transient replicas retain the data they replicate 
only long enough for it to be propagated to full replicas, via incremental 
repair, at which point the data is deleted. Writing to transient replicas can 
be avoided almost entirely if monotonic reads are not required because it is 
possible to achieve a quorum of acknowledged writes without them.</p>
+
+<p>This results in a savings in disk space, CPU, and IO. By deleting data as 
soon as it is no longer needed, transient replicas require only a fraction of 
the disk space of a full replica. By not having to store the data indefinitely, 
the CPU and IO required for compaction is reduced, and read queries are faster 
as they have less data to process.</p>
+
+<p>So what are the benefits of not actually keeping a full copy of the data? 
Well, for some installations and use cases, transient replicas can be almost 
free if <a 
href="https://en.wikipedia.org/wiki/Consistency_model#Monotonic_Read_Consistency";>monotonic
 reads</a> are disabled. In future releases where monotonic reads are supported 
with Transient Replication, enabling monotonic reads would reduce the savings 
in CPU and IO, but even then they should still be significant.</p>
+
+<p>Transient Replication is designed to be transparent to applications:</p>
+
+<ul>
+  <li>Consistency levels continue to produce the same results for queries.</li>
+  <li>The number of replicas that can be lost before data loss occurs is 
unchanged.</li>
+  <li>The number of replicas that can be unavailable before some queries start 
to timeout or return unavailable is unchanged (with the exception of ONE).</li>
+</ul>
+
+<p>With Transient Replication, you can go from 3 replicas to 5 replicas, two 
of which are transient, without adding any hardware.</p>
+
+<p>If you are running an active-passive 2 DC setup with 3 replicas in each DC, 
you can make one replica in each DC transient and still have four full copies 
of the data in total.</p>
+
+<h2 id="feature-support">Feature support</h2>
+
+<p>Transient Replication is not intended to fully replace Cassandra’s 
existing approach to replication. There are features that currently don’t 
work with transiently replicated keyspaces and features that are unlikely ever 
to work with them.</p>
+
+<p>You can have keyspaces with and without Transient Replication enabled in 
the same cluster, so it is possible to use Transient Replication for just the 
use cases that are a good fit for the currently available functionality.</p>
+
+<h3 id="currently-unsupported-but-coming">Currently unsupported but 
coming:</h3>
+
+<ul>
+  <li>Monotonic reads</li>
+  <li>Batch log</li>
+  <li>LWT</li>
+  <li>Counters</li>
+</ul>
+
+<h3 id="will-never-be-supported">Will never be supported:</h3>
+
+<ul>
+  <li>Secondary indexes</li>
+  <li>Materialized views</li>
+</ul>
+
+<h2 id="how-transient-replication-works">How Transient Replication works</h2>
+
+<h3 id="overview">Overview</h3>
+
+<p>Transient replication extends Cassandra’s existing consistent hashing 
algorithm to designate some replicas of a point or range on the consistent hash 
ring as transient and some as full. The following image depicts a consistent 
hash ring with three replicas <strong>A</strong>, <strong>B</strong>, and 
<strong>C</strong>. The replicas are located at tokens 5, 10, 15 respectively. 
A key <strong><em>k</em></strong> hashes to token 3 on the ring.</p>
+
+<p><img 
src="/img/blog-post-introducing-transient-replication/diagram-hash-ring.gif" 
alt="A consistent hash ring without Transient Replication" title="A consistent 
hash ring without Rransient Replication" /></p>
+
+<p>Replicas are selected by walking the ring clockwise starting at the point 
on the ring the key hashes to. At RF=3, the replicas of key <strong><em>k 
**</em>are **A</strong>, <strong>B</strong>, <strong>C</strong>.
+With Transient Replication, the last N replicas (where N is the configured 
number of transient replicas) found while walking the ring are designated as 
transient.</p>
+
+<p>There are no nodes designated as transient replicas or full replicas. All 
nodes will fully replicate some ranges on the ring and transiently replicate 
others.</p>
+
+<p>The following image depicts a consistent hash ring at RF=3/1 (three 
replicas, one of which is transient). The replicas of 
<strong><em>k</em></strong> are still <strong>A</strong>, <strong>B</strong>, 
and <strong>C</strong>, but <strong>C</strong> is now transiently replicating 
<strong><em>k</em></strong>.</p>
+
+<p><img 
src="/img/blog-post-introducing-transient-replication/diagram-hash-ring-with-transient-replica.gif"
 alt="A consistent hash ring with Transient Replication" title="A consistent 
hash ring with Transient Replication" /></p>
+
+<p>Normally all replicas of a range receive all writes for that range, as 
depicted in the following image.</p>
+
+<p><img 
src="/img/blog-post-introducing-transient-replication/diagram-regular-write.gif"
 alt="Normal write behavior" title="Normal write behavior" /></p>
+
+<p>Transient replicas do not receive writes in the normal write path.</p>
+
+<p><img 
src="/img/blog-post-introducing-transient-replication/diagram-transient-write.gif"
 alt="Transient write behavior" title="Transient write behavior" /></p>
+
+<p>If sufficient full replicas are unavailable, transient replicas will 
receive writes.</p>
+
+<p><img 
src="/img/blog-post-introducing-transient-replication/diagram-transient-write-down-node.gif"
 alt="Transient write with unavailable node" title="Transient write with 
unavailable node" /></p>
+
+<p>This optimization, which is possible with Transient Replication, is called 
Cheap Quorums. This minimizes the amount of work that transient replicas have 
to do at write time, and reduces the amount of background compaction they will 
have to do.</p>
+
+<p><strong>Cheap Quorums and monotonic reads:</strong> Cheap Quorums may end 
up being incompatible with an initial implementation of monotonic reads, and 
operators will be able to make a conscious trade off between performance and 
monotonic reads.</p>
+
+<h3 id="rapid-write-protection">Rapid write protection</h3>
+
+<p>In keyspaces utilizing Transient Replication, writes are sent to every full 
replica and enough transient replicas to meet the requested consistency level 
(to make up for unavailable full replicas). In addition, enough transient 
replicas are selected to reach a quorum in every datacenter, though unless the 
consistency level requires it, the write will be acknowledged without ensuring 
all have been delivered.</p>
+
+<p>Because not all replicas are sent the write, it’s possible that 
insufficient replicas will respond, causing timeouts.  To prevent this, we 
implement rapid write protection, similar to rapid read protection, that sends 
writes to additional replicas if sufficient acknowledgements to meet the 
consistency level are not received promptly.</p>
+
+<p>The following animation shows rapid write protection in action.</p>
+
+<p><img 
src="/img/blog-post-introducing-transient-replication/diagram-rapid-write-protection.gif"
 alt="Animation of rapid write protection preventing a write timeout" 
title="Rapid write protection preventing a write timeout" /></p>
+
+<p>Rapid write protection is configured similarly to rapid read protection 
using the table option <code 
class="highlighter-rouge">additional_write_policy</code>. The policy determines 
how long to wait for acknowledgements before sending additional mutations. The 
default is to wait for P99 of the observed latency.</p>
+
+<h3 id="incremental-repair">Incremental repair</h3>
+
+<p>Incremental repair is used to clean up transient data at transient replicas 
and propagate it to full replicas.</p>
+
+<p>When incremental repair occurs transient replicas stream out transient 
data, but don’t receive any. Anti-compaction is used to separate transient 
and fully replicated data so that only fully replicated data is retained once 
incremental repair completes.</p>
+
+<p>The result of running an incremental repair is that all full replicas for a 
range are synchronized and can be used interchangeably to retrieve the repaired 
data set for a query.</p>
+
+<h3 id="read-path">Read path</h3>
+
+<p>Reads must always include at least one full replica and can include as many 
replicas (transient or full) as necessary to achieve the desired consistency 
level. At least one full replica is required in order to provide the data not 
available at transient replicas, but it doesn’t matter which full replica is 
picked because incremental repair synchronizes the repaired data set across 
full replicas.</p>
+
+<p>Reads at transient replicas are faster than reads at full replicas because 
reads at transient replicas are unlikely to return any results if monotonic 
reads are disabled, and they haven’t been receiving writes.</p>
+
+<h2 id="creating-keyspaces-with-transient-replication">Creating keyspaces with 
Transient Replication</h2>
+
+<p>Transient Replication is supported by SimpleStrategy and 
NetworkTopologyStrategy. When specifying the replication factor, you can 
specify the number of transient replicas in addition to the total number of 
replicas (including transient replicas). The syntax for a replication factor of 
3 replicas total with one of them being transient would be “3/1”.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ALTER KEYSPACE foo 
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : '3/1'};
+ALTER KEYSPACE foo WITH REPLICATION = {'class' : 'SimpleStrategy', 
'replication_factor' : '3/1'};
+</code></pre>
+</div>
+
+<p>Monotonic reads are not supported with Transient Replication in 4.0, so any 
existing tables in the keyspace must have monotonic reads disabled by setting 
<code class="highlighter-rouge">read_repair = 'NONE'</code></p>
+
+<p>Once the keyspace has been altered, you will need to run incremental repair 
and then nodetool cleanup to ensure  transient data is cleaned up.</p>
+
+<h2 id="operational-matters">Operational matters</h2>
+
+<p>Transient replication requires rolling incremental repair to be run 
regularly in order to move data from transient replicas to full replicas. By 
default transient replicas will receive 1% of writes for transiently replicated 
ranges due to rapid write protection. If a node is down for an extended period 
of time, its transient replicas will receive additional write load and that 
data should be cleaned up using incremental repair. Running incremental repair 
regularly will ensure that the size of each repair is small.</p>
+
+<p>It’s also a good idea to run a small number of vnodes with transient 
replication so that when a node goes down the load is spread out over several 
other nodes that transiently replicate that range. Larges numbers of vnodes are 
known to be problematic, so it’s best to start with a cluster that is already 
close to or at its maximum size so that a small number of vnodes will be 
sufficient. If you intend to grow the cluster in the future, you will need to 
be cognizant of how this will interact with the number of vnodes you select.</p>
+
+<p>While the odds of any data loss should multiple nodes be permanently lost 
remain the same with transient replication, the magnitude of potential data 
loss does not. With 3/1 transient replication the permanent loss of two nodes 
could result in the loss of the entirety of the repaired data set. If you are 
running a multi-DC setup with a high level of replication such as 2 DCs, with 
3/1 replicas in each, then you will have 4 full copies total and the added risk 
of transient replication is minimal.</p>
+
+<h2 id="experimental-features">Experimental features</h2>
+
+<p>Experimental features are a relatively new idea for Apache Cassandra. 
Although we recently voted to make materialized views an experimental feature 
retroactively, Transient Replication is the first experimental feature to be 
introduced as such.</p>
+
+<p>The goal of introducing experimental features is to allow for incremental 
development across multiple releases. In the case of Transient Replication, we 
can avoid a giant code drop that heavily modifies the code base, and the 
associated risks with incorporating a new feature that way.</p>
+
+<p>What it means for a feature to be experimental doesn’t have a set 
definition, but for Transient Replication it’s intended to set expectations. 
As of 4.0, Transient Replication’s intended audience is expert operators of 
Cassandra with the ability to write the book on how to safely deploy Transient 
Replication, debug any issues that result, and if necessary contribute code 
back to address problems as they are discovered.</p>
+
+<p>It’s expected that the feature set for Transient Replication will not 
change in minor updates to 4.0, but eventually it should be ready for use by a 
wider audience.</p>
+
+<h2 id="next-steps-for-transient-replication">Next steps for Transient 
Replication</h2>
+
+<p>If increasing availability or saving on capacity sounds good to you, then 
you can help make transient replication production-ready by testing it out or 
even deploying it. Experience and feedback from the community is one the of the 
things that will drive transient replication bug fixing and development.</p>
+
+  </div>
+</div>
+
+    <hr />
+
+<footer>
+  <div class="container">
+    <div class="col-md-4 social-blk">
+      <span class="social">
+        <a href="https://twitter.com/cassandra";
+           class="twitter-follow-button"
+           data-show-count="false" data-size="large">Follow @cassandra</a>
+        <script>!function(d,s,id){var 
js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,
 'script', 'twitter-wjs');</script>
+        <a href="https://twitter.com/intent/tweet?button_hashtag=cassandra";
+           class="twitter-hashtag-button"
+           data-size="large"
+           data-related="ApacheCassandra">Tweet #cassandra</a>
+        <script>!function(d,s,id){var 
js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,
 'script', 'twitter-wjs');</script>
+
+      </span>
+      <a class="subscribe-rss icon-link" href="/feed.xml" title="Subscribe to 
Blog via RSS">
+          <span><i class="fa fa-rss"></i></span>
+      </a>
+    </div>
+
+    <div class="col-md-8 trademark">
+      <p>&copy; 2016 <a href="http://apache.org";>The Apache Software 
Foundation</a>.
+      Apache, the Apache feather logo, and Apache Cassandra are trademarks of 
The Apache Software Foundation.
+      <p>
+    </div>
+  </div><!-- /.container -->
+</footer>
+
+<!-- Javascript. Placed here so pages load faster -->
+<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js";></script>
+<script src="./../../../../js/underscore-min.js"></script>
+<script 
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"; 
integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
 crossorigin="anonymous"></script>
+
+
+
+<script type="text/javascript">
+  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl."; : 
"http://www.";);
+  document.write(unescape("%3Cscript src='" + gaJsHost + 
"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+
+  try {
+    var pageTracker = _gat._getTracker("UA-11583863-1");
+    pageTracker._trackPageview();
+  } catch(err) {}
+</script>
+
+
+  </body>
+</html>

Modified: cassandra/site/publish/blog/index.html
URL: 
http://svn.apache.org/viewvc/cassandra/site/publish/blog/index.html?rev=1848087&r1=1848086&r2=1848087&view=diff
==============================================================================
--- cassandra/site/publish/blog/index.html (original)
+++ cassandra/site/publish/blog/index.html Mon Dec  3 18:17:21 2018
@@ -102,6 +102,15 @@
     <ul class="blog-post-listing">
       
         <li class="blog-post">
+          <h4><a 
href="/blog/2018/12/03/introducing-transient-replication.html">Introducing 
Transient Replication</a></h4>
+          <p>Posted on December 03, 2018 by The Apache Cassandra Community</p>
+          <p>Transient Replication is a new experimental feature soon to be 
available in 4.0. When enabled, it allows for the creation of keyspaces where 
replication factor can be specified as a number of copies (full replicas) and 
temporary copies (transient replicas). Transient replicas retain the data they 
replicate only long enough for it to be propagated to full replicas, via 
incremental repair, at which point the data is deleted. Writing to transient 
replicas can be avoided almost entirely if monotonic reads are not required 
because it is possible to achieve a quorum of acknowledged writes without 
them.</p>
+
+
+          <h5><a 
href="/blog/2018/12/03/introducing-transient-replication.html">Read more 
&raquo;</a></h5>
+        </li>
+      
+        <li class="blog-post">
           <h4><a href="/blog/2018/10/29/audit_logging_cassandra.html">Audit 
Logging in Apache Cassandra 4.0</a></h4>
           <p>Posted on October 29, 2018 by the Apache Cassandra Community</p>
           <p>Database audit logging is an industry standard tool for 
enterprises to

Modified: cassandra/site/publish/feed.xml
URL: 
http://svn.apache.org/viewvc/cassandra/site/publish/feed.xml?rev=1848087&r1=1848086&r2=1848087&view=diff
==============================================================================
--- cassandra/site/publish/feed.xml (original)
+++ cassandra/site/publish/feed.xml Mon Dec  3 18:17:21 2018
@@ -1,5 +1,137 @@
-<?xml version="1.0" encoding="utf-8"?><feed 
xmlns="http://www.w3.org/2005/Atom"; ><generator uri="https://jekyllrb.com/"; 
version="3.4.3">Jekyll</generator><link 
href="http://cassandra.apache.org/feed.xml"; rel="self" 
type="application/atom+xml" /><link href="http://cassandra.apache.org/"; 
rel="alternate" type="text/html" 
/><updated>2018-10-30T11:50:41+13:00</updated><id>http://cassandra.apache.org/</id><title
 type="html">Apache Cassandra Website</title><subtitle>The Apache Cassandra 
database is the right choice when you need scalability and high availability 
without compromising performance. Linear scalability and proven fault-tolerance 
on commodity hardware or cloud infrastructure make it the perfect platform for 
mission-critical data. Cassandra's support for replicating across multiple 
datacenters is best-in-class, providing lower latency for your users and the 
peace of mind of knowing that you can survive regional outages.
-</subtitle><entry><title type="html">Audit Logging in Apache Cassandra 
4.0</title><link 
href="http://cassandra.apache.org/blog/2018/10/29/audit_logging_cassandra.html"; 
rel="alternate" type="text/html" title="Audit Logging in Apache Cassandra 4.0" 
/><published>2018-10-29T20:00:00+13:00</published><updated>2018-10-29T20:00:00+13:00</updated><id>http://cassandra.apache.org/blog/2018/10/29/audit_logging_cassandra</id><content
 type="html" 
xml:base="http://cassandra.apache.org/blog/2018/10/29/audit_logging_cassandra.html";>&lt;p&gt;Database
 audit logging is an industry standard tool for enterprises to
+<?xml version="1.0" encoding="utf-8"?><feed 
xmlns="http://www.w3.org/2005/Atom"; ><generator uri="https://jekyllrb.com/"; 
version="3.4.3">Jekyll</generator><link 
href="http://cassandra.apache.org/feed.xml"; rel="self" 
type="application/atom+xml" /><link href="http://cassandra.apache.org/"; 
rel="alternate" type="text/html" 
/><updated>2018-12-04T07:14:05+13:00</updated><id>http://cassandra.apache.org/</id><title
 type="html">Apache Cassandra Website</title><subtitle>The Apache Cassandra 
database is the right choice when you need scalability and high availability 
without compromising performance. Linear scalability and proven fault-tolerance 
on commodity hardware or cloud infrastructure make it the perfect platform for 
mission-critical data. Cassandra's support for replicating across multiple 
datacenters is best-in-class, providing lower latency for your users and the 
peace of mind of knowing that you can survive regional outages.
+</subtitle><entry><title type="html">Introducing Transient 
Replication</title><link 
href="http://cassandra.apache.org/blog/2018/12/03/introducing-transient-replication.html";
 rel="alternate" type="text/html" title="Introducing Transient Replication" 
/><published>2018-12-03T21:00:00+13:00</published><updated>2018-12-03T21:00:00+13:00</updated><id>http://cassandra.apache.org/blog/2018/12/03/introducing-transient-replication</id><content
 type="html" 
xml:base="http://cassandra.apache.org/blog/2018/12/03/introducing-transient-replication.html";>&lt;p&gt;Transient
 Replication is a new experimental feature soon to be available in 4.0. When 
enabled, it allows for the creation of keyspaces where replication factor can 
be specified as a number of copies (full replicas) and temporary copies 
(transient replicas). Transient replicas retain the data they replicate only 
long enough for it to be propagated to full replicas, via incremental repair, 
at which point the data is deleted. Writing to transi
 ent replicas can be avoided almost entirely if monotonic reads are not 
required because it is possible to achieve a quorum of acknowledged writes 
without them.&lt;/p&gt;
+
+&lt;p&gt;This results in a savings in disk space, CPU, and IO. By deleting 
data as soon as it is no longer needed, transient replicas require only a 
fraction of the disk space of a full replica. By not having to store the data 
indefinitely, the CPU and IO required for compaction is reduced, and read 
queries are faster as they have less data to process.&lt;/p&gt;
+
+&lt;p&gt;So what are the benefits of not actually keeping a full copy of the 
data? Well, for some installations and use cases, transient replicas can be 
almost free if &lt;a 
href=&quot;https://en.wikipedia.org/wiki/Consistency_model#Monotonic_Read_Consistency&quot;&gt;monotonic
 reads&lt;/a&gt; are disabled. In future releases where monotonic reads are 
supported with Transient Replication, enabling monotonic reads would reduce the 
savings in CPU and IO, but even then they should still be significant.&lt;/p&gt;
+
+&lt;p&gt;Transient Replication is designed to be transparent to 
applications:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;Consistency levels continue to produce the same results for 
queries.&lt;/li&gt;
+  &lt;li&gt;The number of replicas that can be lost before data loss occurs is 
unchanged.&lt;/li&gt;
+  &lt;li&gt;The number of replicas that can be unavailable before some queries 
start to timeout or return unavailable is unchanged (with the exception of 
ONE).&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;With Transient Replication, you can go from 3 replicas to 5 replicas, 
two of which are transient, without adding any hardware.&lt;/p&gt;
+
+&lt;p&gt;If you are running an active-passive 2 DC setup with 3 replicas in 
each DC, you can make one replica in each DC transient and still have four full 
copies of the data in total.&lt;/p&gt;
+
+&lt;h2 id=&quot;feature-support&quot;&gt;Feature support&lt;/h2&gt;
+
+&lt;p&gt;Transient Replication is not intended to fully replace Cassandra’s 
existing approach to replication. There are features that currently don’t 
work with transiently replicated keyspaces and features that are unlikely ever 
to work with them.&lt;/p&gt;
+
+&lt;p&gt;You can have keyspaces with and without Transient Replication enabled 
in the same cluster, so it is possible to use Transient Replication for just 
the use cases that are a good fit for the currently available 
functionality.&lt;/p&gt;
+
+&lt;h3 id=&quot;currently-unsupported-but-coming&quot;&gt;Currently 
unsupported but coming:&lt;/h3&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;Monotonic reads&lt;/li&gt;
+  &lt;li&gt;Batch log&lt;/li&gt;
+  &lt;li&gt;LWT&lt;/li&gt;
+  &lt;li&gt;Counters&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3 id=&quot;will-never-be-supported&quot;&gt;Will never be 
supported:&lt;/h3&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;Secondary indexes&lt;/li&gt;
+  &lt;li&gt;Materialized views&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2 id=&quot;how-transient-replication-works&quot;&gt;How Transient 
Replication works&lt;/h2&gt;
+
+&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;/h3&gt;
+
+&lt;p&gt;Transient replication extends Cassandra’s existing consistent 
hashing algorithm to designate some replicas of a point or range on the 
consistent hash ring as transient and some as full. The following image depicts 
a consistent hash ring with three replicas &lt;strong&gt;A&lt;/strong&gt;, 
&lt;strong&gt;B&lt;/strong&gt;, and &lt;strong&gt;C&lt;/strong&gt;. The 
replicas are located at tokens 5, 10, 15 respectively. A key 
&lt;strong&gt;&lt;em&gt;k&lt;/em&gt;&lt;/strong&gt; hashes to token 3 on the 
ring.&lt;/p&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/img/blog-post-introducing-transient-replication/diagram-hash-ring.gif&quot;
 alt=&quot;A consistent hash ring without Transient Replication&quot; 
title=&quot;A consistent hash ring without Rransient Replication&quot; 
/&gt;&lt;/p&gt;
+
+&lt;p&gt;Replicas are selected by walking the ring clockwise starting at the 
point on the ring the key hashes to. At RF=3, the replicas of key 
&lt;strong&gt;&lt;em&gt;k **&lt;/em&gt;are **A&lt;/strong&gt;, 
&lt;strong&gt;B&lt;/strong&gt;, &lt;strong&gt;C&lt;/strong&gt;.
+With Transient Replication, the last N replicas (where N is the configured 
number of transient replicas) found while walking the ring are designated as 
transient.&lt;/p&gt;
+
+&lt;p&gt;There are no nodes designated as transient replicas or full replicas. 
All nodes will fully replicate some ranges on the ring and transiently 
replicate others.&lt;/p&gt;
+
+&lt;p&gt;The following image depicts a consistent hash ring at RF=3/1 (three 
replicas, one of which is transient). The replicas of 
&lt;strong&gt;&lt;em&gt;k&lt;/em&gt;&lt;/strong&gt; are still 
&lt;strong&gt;A&lt;/strong&gt;, &lt;strong&gt;B&lt;/strong&gt;, and 
&lt;strong&gt;C&lt;/strong&gt;, but &lt;strong&gt;C&lt;/strong&gt; is now 
transiently replicating 
&lt;strong&gt;&lt;em&gt;k&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/img/blog-post-introducing-transient-replication/diagram-hash-ring-with-transient-replica.gif&quot;
 alt=&quot;A consistent hash ring with Transient Replication&quot; 
title=&quot;A consistent hash ring with Transient Replication&quot; 
/&gt;&lt;/p&gt;
+
+&lt;p&gt;Normally all replicas of a range receive all writes for that range, 
as depicted in the following image.&lt;/p&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/img/blog-post-introducing-transient-replication/diagram-regular-write.gif&quot;
 alt=&quot;Normal write behavior&quot; title=&quot;Normal write behavior&quot; 
/&gt;&lt;/p&gt;
+
+&lt;p&gt;Transient replicas do not receive writes in the normal write 
path.&lt;/p&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/img/blog-post-introducing-transient-replication/diagram-transient-write.gif&quot;
 alt=&quot;Transient write behavior&quot; title=&quot;Transient write 
behavior&quot; /&gt;&lt;/p&gt;
+
+&lt;p&gt;If sufficient full replicas are unavailable, transient replicas will 
receive writes.&lt;/p&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/img/blog-post-introducing-transient-replication/diagram-transient-write-down-node.gif&quot;
 alt=&quot;Transient write with unavailable node&quot; title=&quot;Transient 
write with unavailable node&quot; /&gt;&lt;/p&gt;
+
+&lt;p&gt;This optimization, which is possible with Transient Replication, is 
called Cheap Quorums. This minimizes the amount of work that transient replicas 
have to do at write time, and reduces the amount of background compaction they 
will have to do.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Cheap Quorums and monotonic reads:&lt;/strong&gt; Cheap 
Quorums may end up being incompatible with an initial implementation of 
monotonic reads, and operators will be able to make a conscious trade off 
between performance and monotonic reads.&lt;/p&gt;
+
+&lt;h3 id=&quot;rapid-write-protection&quot;&gt;Rapid write 
protection&lt;/h3&gt;
+
+&lt;p&gt;In keyspaces utilizing Transient Replication, writes are sent to 
every full replica and enough transient replicas to meet the requested 
consistency level (to make up for unavailable full replicas). In addition, 
enough transient replicas are selected to reach a quorum in every datacenter, 
though unless the consistency level requires it, the write will be acknowledged 
without ensuring all have been delivered.&lt;/p&gt;
+
+&lt;p&gt;Because not all replicas are sent the write, it’s possible that 
insufficient replicas will respond, causing timeouts.  To prevent this, we 
implement rapid write protection, similar to rapid read protection, that sends 
writes to additional replicas if sufficient acknowledgements to meet the 
consistency level are not received promptly.&lt;/p&gt;
+
+&lt;p&gt;The following animation shows rapid write protection in 
action.&lt;/p&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/img/blog-post-introducing-transient-replication/diagram-rapid-write-protection.gif&quot;
 alt=&quot;Animation of rapid write protection preventing a write timeout&quot; 
title=&quot;Rapid write protection preventing a write timeout&quot; 
/&gt;&lt;/p&gt;
+
+&lt;p&gt;Rapid write protection is configured similarly to rapid read 
protection using the table option &lt;code 
class=&quot;highlighter-rouge&quot;&gt;additional_write_policy&lt;/code&gt;. 
The policy determines how long to wait for acknowledgements before sending 
additional mutations. The default is to wait for P99 of the observed 
latency.&lt;/p&gt;
+
+&lt;h3 id=&quot;incremental-repair&quot;&gt;Incremental repair&lt;/h3&gt;
+
+&lt;p&gt;Incremental repair is used to clean up transient data at transient 
replicas and propagate it to full replicas.&lt;/p&gt;
+
+&lt;p&gt;When incremental repair occurs transient replicas stream out 
transient data, but don’t receive any. Anti-compaction is used to separate 
transient and fully replicated data so that only fully replicated data is 
retained once incremental repair completes.&lt;/p&gt;
+
+&lt;p&gt;The result of running an incremental repair is that all full replicas 
for a range are synchronized and can be used interchangeably to retrieve the 
repaired data set for a query.&lt;/p&gt;
+
+&lt;h3 id=&quot;read-path&quot;&gt;Read path&lt;/h3&gt;
+
+&lt;p&gt;Reads must always include at least one full replica and can include 
as many replicas (transient or full) as necessary to achieve the desired 
consistency level. At least one full replica is required in order to provide 
the data not available at transient replicas, but it doesn’t matter which 
full replica is picked because incremental repair synchronizes the repaired 
data set across full replicas.&lt;/p&gt;
+
+&lt;p&gt;Reads at transient replicas are faster than reads at full replicas 
because reads at transient replicas are unlikely to return any results if 
monotonic reads are disabled, and they haven’t been receiving 
writes.&lt;/p&gt;
+
+&lt;h2 
id=&quot;creating-keyspaces-with-transient-replication&quot;&gt;Creating 
keyspaces with Transient Replication&lt;/h2&gt;
+
+&lt;p&gt;Transient Replication is supported by SimpleStrategy and 
NetworkTopologyStrategy. When specifying the replication factor, you can 
specify the number of transient replicas in addition to the total number of 
replicas (including transient replicas). The syntax for a replication factor of 
3 replicas total with one of them being transient would be “3/1”.&lt;/p&gt;
+
+&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre 
class=&quot;highlight&quot;&gt;&lt;code&gt;ALTER KEYSPACE foo WITH REPLICATION 
= {'class' : 'NetworkTopologyStrategy', 'DC1' : '3/1'};
+ALTER KEYSPACE foo WITH REPLICATION = {'class' : 'SimpleStrategy', 
'replication_factor' : '3/1'};
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+
+&lt;p&gt;Monotonic reads are not supported with Transient Replication in 4.0, 
so any existing tables in the keyspace must have monotonic reads disabled by 
setting &lt;code class=&quot;highlighter-rouge&quot;&gt;read_repair = 
'NONE'&lt;/code&gt;&lt;/p&gt;
+
+&lt;p&gt;Once the keyspace has been altered, you will need to run incremental 
repair and then nodetool cleanup to ensure  transient data is cleaned 
up.&lt;/p&gt;
+
+&lt;h2 id=&quot;operational-matters&quot;&gt;Operational matters&lt;/h2&gt;
+
+&lt;p&gt;Transient replication requires rolling incremental repair to be run 
regularly in order to move data from transient replicas to full replicas. By 
default transient replicas will receive 1% of writes for transiently replicated 
ranges due to rapid write protection. If a node is down for an extended period 
of time, its transient replicas will receive additional write load and that 
data should be cleaned up using incremental repair. Running incremental repair 
regularly will ensure that the size of each repair is small.&lt;/p&gt;
+
+&lt;p&gt;It’s also a good idea to run a small number of vnodes with 
transient replication so that when a node goes down the load is spread out over 
several other nodes that transiently replicate that range. Larges numbers of 
vnodes are known to be problematic, so it’s best to start with a cluster that 
is already close to or at its maximum size so that a small number of vnodes 
will be sufficient. If you intend to grow the cluster in the future, you will 
need to be cognizant of how this will interact with the number of vnodes you 
select.&lt;/p&gt;
+
+&lt;p&gt;While the odds of any data loss should multiple nodes be permanently 
lost remain the same with transient replication, the magnitude of potential 
data loss does not. With 3/1 transient replication the permanent loss of two 
nodes could result in the loss of the entirety of the repaired data set. If you 
are running a multi-DC setup with a high level of replication such as 2 DCs, 
with 3/1 replicas in each, then you will have 4 full copies total and the added 
risk of transient replication is minimal.&lt;/p&gt;
+
+&lt;h2 id=&quot;experimental-features&quot;&gt;Experimental features&lt;/h2&gt;
+
+&lt;p&gt;Experimental features are a relatively new idea for Apache Cassandra. 
Although we recently voted to make materialized views an experimental feature 
retroactively, Transient Replication is the first experimental feature to be 
introduced as such.&lt;/p&gt;
+
+&lt;p&gt;The goal of introducing experimental features is to allow for 
incremental development across multiple releases. In the case of Transient 
Replication, we can avoid a giant code drop that heavily modifies the code 
base, and the associated risks with incorporating a new feature that 
way.&lt;/p&gt;
+
+&lt;p&gt;What it means for a feature to be experimental doesn’t have a set 
definition, but for Transient Replication it’s intended to set expectations. 
As of 4.0, Transient Replication’s intended audience is expert operators of 
Cassandra with the ability to write the book on how to safely deploy Transient 
Replication, debug any issues that result, and if necessary contribute code 
back to address problems as they are discovered.&lt;/p&gt;
+
+&lt;p&gt;It’s expected that the feature set for Transient Replication will 
not change in minor updates to 4.0, but eventually it should be ready for use 
by a wider audience.&lt;/p&gt;
+
+&lt;h2 id=&quot;next-steps-for-transient-replication&quot;&gt;Next steps for 
Transient Replication&lt;/h2&gt;
+
+&lt;p&gt;If increasing availability or saving on capacity sounds good to you, 
then you can help make transient replication production-ready by testing it out 
or even deploying it. Experience and feedback from the community is one the of 
the things that will drive transient replication bug fixing and 
development.&lt;/p&gt;</content><author><name>The Apache Cassandra 
Community</name></author><summary type="html">Transient Replication is a new 
experimental feature soon to be available in 4.0. When enabled, it allows for 
the creation of keyspaces where replication factor can be specified as a number 
of copies (full replicas) and temporary copies (transient replicas). Transient 
replicas retain the data they replicate only long enough for it to be 
propagated to full replicas, via incremental repair, at which point the data is 
deleted. Writing to transient replicas can be avoided almost entirely if 
monotonic reads are not required because it is possible to achieve a quorum of 
acknowledged 
 writes without them.</summary></entry><entry><title type="html">Audit Logging 
in Apache Cassandra 4.0</title><link 
href="http://cassandra.apache.org/blog/2018/10/29/audit_logging_cassandra.html"; 
rel="alternate" type="text/html" title="Audit Logging in Apache Cassandra 4.0" 
/><published>2018-10-29T20:00:00+13:00</published><updated>2018-10-29T20:00:00+13:00</updated><id>http://cassandra.apache.org/blog/2018/10/29/audit_logging_cassandra</id><content
 type="html" 
xml:base="http://cassandra.apache.org/blog/2018/10/29/audit_logging_cassandra.html";>&lt;p&gt;Database
 audit logging is an industry standard tool for enterprises to
 capture critical data change events including what data changed and who
 triggered the event. These captured records can then be reviewed later
 to ensure compliance with regulatory, security and operational 
policies.&lt;/p&gt;

Added: 
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring-with-transient-replica.gif
URL: 
http://svn.apache.org/viewvc/cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring-with-transient-replica.gif?rev=1848087&view=auto
==============================================================================
--- 
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring-with-transient-replica.gif
 (added)
+++ 
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring-with-transient-replica.gif
 Mon Dec  3 18:17:21 2018
@@ -0,0 +1,103 @@
+GIF89a  æ

+       
+H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç 
CŠI²¤É“(Sª\ɲ¥Ë—0cʜI³¦Í›8sêÜɳç'+‚õI´(§!’*]ÊtéŠŐ*]`HjRªÏ|„pá§«×®(4„ðÊj¬ÈÌ¢5Êš†¯pÿãÆuj°·^5ÂÛUo³%ä
+ÖÐÄ_?~‘Nܶ1³Ã‚#ƒ]ÛkñÞ¯Œ“5A!Y0eP–“…vLZtçÓ]7
!6@þºbÔpZ·scæM}äB³g_8.†àÓ=¶Àûç0ÄÍL;¼®è‡ÆWŸ_rsFMŠ3÷%Ÿ™þ®.ØuH;ÄUX(ýÁ}
cŸ#>pön•¹7p¡ `"ÿùA!hâ²`ƒ$
+ó #Ýyµ!FÓ\ªá{œ$øÊˆ%æXá~Ž”×¢!´‚Dp“´ \ÿ‘,°a|?FÒD%©A        
c9d;X‰Ü™„
+’èW´ ž`<IˆpQ
+²@‡3މ£ai%b~Åæ"Àµh£‘AÚf§0êh\²6ò©dˆúGª’E:Þ
+ËaFæ!cúPlW¬Z(o‡2òb§-ÜY€‡LêUŠ‘a@è¦-×Á²~;ˆ¨ak       °]•àÈ
+L%Rmºš
+òܼ§©‹È¸¨¡
+#"覛­o_¡àkÿkáþب±^\)Å~¸pIÄ]9k        ɝ‰e^S¬ò€f± 
àÔqÉ=÷Ö]Gói7gmHÍ~„¥AÂö,ן4iC#¢³š·¨ÄÆu±Ý~d:HË}Æ)ÝÏH¦ŽIÉ(ûG~ŠZ²,
+‚º®%ܝc¾œÇµY£îš¾Þé©ïTPp• ”¯µ5ëZ
$ì±`.—íy!-€ª÷¯Φ3ÿÏP+lˆÎŽïØe¤ÿa-ù„ŒOHñ]­
¶«–p>ã-xŒÀ(_òØ'8B
+
+Ñ6nß]=µµzÝÏ+ékÚA0¯`e’Á@        
P(ˆr¨b\_!Œˆ‚d°á­Ò÷þÁ5hóÊÌ!¸\Ì;õš–Š<Ørù¦„‚p­ÄؕcµÍ4ì 
֔8ÇÌÐÏ(ìaWø,+À]gre5¶lôƒë\cÈ"‘Ǻcñ7+º`§*&3ƎÿŒF1c¿à0 
âV‘ŠZՀôI:òŠ!ʐ"¢F&íÔK:ÛÄî˜/•r¨Oˆ~©ˆ`V‰‰ %½’IWÒљ”SDZYEd6‘V 
ĉ(c3ú­p‡qá¢ÖÌ9®R†Ïl¤v˜‰À+.p琇«'y“á&éî ί¸Pìl„%c‰MXRj™¯¬c6Cé³Gñî+¦j
+SX5S"—
+Õçə‰&I91Ûc(æ$HÒ&¢UŠkV
+є.e4¥Ä@é–Å®”Ó€pِI£…æd{PÓcÜÑPkŽSuŠøcF—
+>ý    V¾1 s¬¢jQ£Ïÿ¬¦U¿ÙT¯`Ï3Ý(\,z.¤
+b§M¨OµiVEÀf‚DµªHµ[B©êck
+C"jâ”Tn!Zúº­LFµðMӚU
ׄÃÐtPÉJdےø‰¤Œ~q]*B¨PQ'1ê\jÓ¨Kî§ICæö°ÊŠÀ2aËéš;¸V„í…
'«V#ÇÉDöðê¼LˆëÂïö¢‰{lB¿¢çu*¬e‰¸yÏ"YOáçAKzQOfâ¡q(g6‡ˆdýƒÎ(£Û‚Úyó5s
qC¯X2«j!"©W       :`Q<ÀxSübW¼„ñ묩V—,ÐãeêŒÿý3d»z¿8ð“…
Lç¬WÑÆÕâ“JíÞS»Ïê½h†lG ­±Pƒ…
´–èlÕë®óI(»O•5åŽåO.;€£VêYµHw´rmüMî€ÂÝ%€÷õäü½&Ÿoܒ²–Þ¸]go·Üybö:‘¤•„9‹sX
+†P„ã=µˆuG˜ý49.ë×M~ vf‡¤˜¹b8¬'5@£xÛ³Žjÿl§¸bk³;õ4öȘìe÷
eòž/¿Q¢Ü

µâ©V¯ál~.·¤üièhe˝›ˆü¤        
¯<«³p[»Óµ’.ýê'W+¿9›&Ø>n»7uReï&ÿ!zÃ}"š†Wp›âú>i|IU=ëe²¤"Í<7"$ÚÏ#³ƒ¾Ò2‚DA
  ÞÜýã¢ýίÔìÖO´˜?Jm‚
+RX…X˜…£p…Z؅^H[÷…b8†l†dx†hH{f˜†l˜† 
c%D؆r8‡tX‡vx‡x˜‡z¸‡|؇~ø‡€ˆ‚8ˆ„Xˆ†xˆˆ˜ˆŠ¸ˆŒØˆŽøˆ‰’8‰”X‰–x‰˜˜‰š¸‰œØ‰žø‰ 
Š¢8ФXЦxЍ˜Šª¸Š¬ØŠ®øŠ°‹²8‹´X‹¶x‹¸˜‹º¸‹¼Ø‹¾ø‹ÀŒÂ8ŒÄXŒÆxŒÈ˜ŒÊ¸ŒÌØŒÎøŒÐÒ8ÔXÖxØ˜Ú¸ÜØÞøàŽâ8ÿŽäXŽñÀꨎ,pæøŽœðàŽðx”ð§?€þøúˆüø™
+`G @ð3PYóè/`GА^Á‘Ùy?à        ‘à™
+ð$0’ÿx_!Š’^¡
+°Ž 
+ê P˜¡Ê0 ¡2#£¡@&*¢2 ”»Àÿ€**#J¢.£(ª¢,Z  j £2𣠤`¢Š
@;:¥2@¤*:¤Z¤”pz…À¤Ž@£€Ÿ³0
+       &j¥µp¤;z1
+1 ¢À¡Ñy;j¦…:oЉJ  qj†ð© ¥2
+Éz   Û©™Å1Zžëšªˆ­+±ê±0°ÈJ¤‘º®*
+¬0Z­‚@±kke­°
+µj°³M[­{©ˆ§»qZ¦ßja2V³}j¦¯ªÿ¡$ë²ÞjfKE&J¸…À§D+·;J²ž¢¢:&À¯{û¯'k©>[ÚÚ
QЭ;³Á%®–z¬:»û¬Ÿª·
+›½0
+œÀ&„»ë´Ûªª{½áÛ¼4¼ÿ¼• ¾¶:´Z{¥ú[½&ËÁþ
àµëZ¹Hë¾¶†€ÂƒP»?,D¼£2Ì­A,¸iJ¹Ó[”±Á»º‚Àñ:¥ijj€²TŠÎËÄP\­¼¾gŒ¿‚ÿ
+›
+½S]Ï8Ñø¼ºC}®dÛ»10¢(K)à«É,­äKÏ)l¨Ê²è|»ñ[1kÑ©€Ðpº
̈¬³ëzÿݪÐÀ˱Im:+Á¼Éµò<f²þ\É[M̈½£@ª›Ì؍½Ù;
+]à½pàñ
+      |Z´. Þ
káÌ'îÿ)Î+®¢-¾
p«í¬+¸:ãõmÏqã;šã@Ž5žD¾£màGÞI~K®¢m
+
Ú¾í¡9°¿îîŽ;¼íçŽî¡ðíî¾ï¾1îZP
õnïÑ*P
+À%@@1
+š¿ùø, §Ñø"0ïÇ "@ù§!,
°H/@
&¨/3!0úÒéS*éÔÿWÐò’!È?Ë/û’W
+:@ÅM†êê  å7aí|öN©Õ«X³jµÆ#[oáp3§«©Ÿz†]˶­Û·ƒ¼}Cñ.­(Щc…֝ݿ€
Žxãܱ%*’~ÕAŒon¨ê«v±å˘3ëBòøXš]™(ðm        T”«†^ͺµkE%J_PýÚTÿ‚}•°2!íÚÀƒ
‡;@Ã\ÃSñÈ{LCÔF©“KŸN]h×c
ƒ¨8ãŽ<×?¾ Ð_„ÀÀœ%3t #‘L6‰Ù
0¦%'0z¡ŸpÀ'£˜f:ÏZ²Ä™n`¢@`1‡¦¨¦*•,ªœù2ƒª´Öz͋­²«‰“àhë¯ÀâÆ1 ÒºÁ1`«ì²
+³›­±ù²³ÔV«‰~•P¬¡¾hí·àþ¡ž/,ÛK|á¦K­ØÕ      ìÞù¢„ºôþ:€œ“`p*³s`i‰
+3à”hë÷ᚑàK—œ
+mïÜÜK4úìVM‰ŒS¿@.í¼[¥¸%œM–%:ôn<P¸N·×vSâëñПt…
/‚ŸÍm%WD¯}FœZÂúÜjÀmêöä;ƒ/1ô}¾%é—ï>>o[ÂDÍ^?À%(ýþþñ@áF~k/^Å¿Ž#
+6©Äóü–<?
+Œ`6ÆU ÉÑ;H7HDÿ  ž“Ù$ØÆÁCm•å´à¹™ð…´°œ\p:œù¡s0Ìa,ràîw•ð˜‡Ø
+²M‚    ³»ß$
+µèJ
+ŽjОðÀZš0‹~Þö†G‰Ñù²„•œÈÇM³„0ø×È7|Éî™ÿûË$*Ý·ÊKbӀ6™ö´F       
~³€sàÂÈgOíëœ>©ÂÈ
¨@†   ¤g¨Â5x€¤ýÉ9ØðBlð…ôá¢ͨF7Êюzô£ 
iFƒàÁ”CÊҖºô¥0õ'Ð`Sn„c%6Šà‘úô§@
êO=P„Ã=`
+1MªR—ÊT|N‹º€ä$zY¾[R‘Õx
{¤¦°ˆ]:Œ¬mƒ¤×rñás4Ä#ޱ@‡¡»™mІ¸†‹wŒQËøÇýFè0[ÀœÅ<Þ±ÿÌd|ÏŒ zý 
^'ÙÅKn2“‡Ñ@RF0°Ôŕ±ìµ³à
+#þå 0Ï(æ¹ZÀT
‡ xbî8Ö.Ýõ FPÐaxP*^ˆ’ç3ƒðô^…±ð"ŒÃ +q‡A¸Z±lØ@ö²›
R 7ÐYŠñAÀAڃ ƒ át|Àã|FºcÉAsSÇ_}ƒ×   0x¶Ø‚¸­Åû9mAH½è„hyKQ÷{z[øÕ…
!ºA†‚0ë_íº Ї­â
Še€ j øµ´Ò‚K%r[¿tå€=Éÿ)ô·ÿç]2,$Y        
6¼«(üEq.ˆ;(Ío}×`zô€ÛWè»÷§¸ÿ‡Ìç–?(a¬ø®"þï&ü Ҏ؂ҧ¹O`ìW>
Ú¶6ªÿ:àÁKg– gDgø³nBo`ezP‰5¨g[‹·Ow7¶7^ö÷Oq—r I%
ø2\üc€“€T<÷‡QÌ÷¬gWÉ'lð¢'Tà>§vÓçRˆyõ÷m2åN°q0ÕH˜„IH‚ûc
+ؕ…’à‡b¹’ÔG÷§{‡yO´Çr0µ–÷“¶ø˜‘G™šg  
œ'Až—3yÙÿQȈ~!ՙЎ?5œ€Ù—h’©i”1•Ûæ–ødl¸ùt÷Ç{Ž©O×X‹·H‘É‘¹°w.d@~œŽÆR~9¨yQf‡œu~¡¹Q¢¨Š„¨š0
…‹n
+è UŒƒ¢ðRù©ŠPvo0œ08W**S®yt@š–…9£ùdŠ
+¹¦§éS¦‰w@š)J˜ÐÕ§æOÂàI
+lÄó¨•lÊÆ—eΆQÊ&@
+R$ɂn0¤Nꩽ%öªùj'ÆA¥æ§fÆª!el§ƒ9§ãÅgL        ¬ð˜„Ö*ÿ=ˆf    ŠÆsÎ
+`OÊWÛg‘ÔêdX   X‚Þcg&Ð'©d­Ðt`®çzO\9l¨
+Z¦§¬6®{%¨çúd–e4eUF¦ñ¥ŠÎÉc›¯¨%ÿd–@dücdî
+`ÛhôJ±Fc–`N„cûjò5± +Y%6¬T¬ÇЬ(`gS++bæ%Ö*V@f Ù
+3K³^¡7;^Ó5AvDÿ5´)ë5»u´\à_Ô_X÷¯P‹XgSZTK`ª5»^í%
ðÕµËÕX¶äEYÔE~üƒ]Úµœª¶Šõž^£Wn;^\­Â„ÑS\@+
Ʌ··Õ\hÓ·ã5
¬åZû[6
jЏ •©˸,+
𕱻Ye¹Ÿ%Z}£RšYð·Óà¯ûCXÔpX¢ëYŒÕ7Uðô4§ÛTc
jGÝJ;ne        p5
r»v…WðRåTE>V•/Öð
|<«tÂ:Ì;¤J      q=¢tªA=ص_¼³À œÄÐÓ½~€UÆó¼âŽӴ“ 
|¼#Á“`XÌ;zÄG¼ãG€ÆÇcÿnÐ:ŸCG–pžh<;FPFú9*ëdzL[4;^¦z
=ÕZSTEìÃò“D<|ÈÐÃCüú9ƒ,DŒl<2„À“cCì;ɳcn~ B“£¼ǚ<GÅzƈcCù3ʘ„H“£Å~ð½ª|:d     
   aF7
$1˞ã?0|8CL   ò¡ËÆ?±¥½$c?Þ#¸ÂL9ëS    í37Jc   
X³ÌÆÓ=ÓÂ]3p#ØLͳsÔP=^s=”PÃÞÜ;
$
т¼8Û.cÈ}<9åâL2!
ˍ:Ís9…%0z³5'=œLBC̕ Ê/=;úÜ0³J}Óѓғ0Í3e+œË>}:Ñ
Gý-OÓBG½=>óÁÊÌ,€]ýÔä£G3dÌ´/¾`ÊX
='£ôs~Ð2aM>D½’ü- ãî•ÖÇcÖb°Ô¿R1d-×åS0ø³Î¿¢0¾ 
6zM>@=Å,sÀZE=Øî“Ô¨ÄÕâÕòÂØïCAÿ¬,úìÁLÙî³Ð",䜜Í?R<  ‘b+Q]   W<Úå3,¾PÇ¡‚,¬m@
tÖq½(±B˳A2dÿÛ»"+½Û§£°tÖ°í'¢²Ý,Üîã(Çpڊ’Ú”€ËÌ-A8ŠÚÊcÓÕ]>qr*Ür'Ç 
+@z^
        @
+€µn   @ ²òPl
À%@ï
+ÌÅo Áƒ*\Xp¡Ã‡#JôÖp¢Å‹ÿ3jŒUq£Ç CŠÜ‡n¤É“(S"쨲¥Ë—0ñŒI³¦Í›ç\áÜɳ§ÏU3
+J´(IF“*]Ê3(Ó§P£ft*µªÕ«©bÝʵk;­^Ê‹
,Ù³hÓ3«¶­Û·°ØÂK·.'¹vóêÝ»/ß¿€çú
L¸ðØÁ†+®Šx±ãÇECžLù¦äʘ3§¼¬¹³çœ?‹ý04éÓ¨šNͺ5-/El|iЧ¶íÛ¸sëÞÍ»·ïßÀ{ñ`£ˆ×ȓ;*â!¸óçУKïí¡ˆòëÊà˜Î½»÷ï¶q<ÀN>õvðèӫߍ£¼{ÑEÖ˟ŸÞúûû•½è¡ÿÏ¿t=Çá'
 cøgà¾E0à‚‰Ù€àƒÖfƒöE„øE…îE[† 
Î×@‡$Öâ‰ò•¨â[(¶ˆÞŠ0¦åâŒÝÅhãX4æݍ<v¥ãÁõ(äU@ÙېHFe䒹%éäRLFYۓT%e”UfùӕLjéåNÜM‚ÀRôg
¼áœl É
ƒ€À@™R¼éT„$«Äzäªoÿž:êl‰ØªÛ¹¦jÛ©‚0 j±ÜbtloÔ
+BÅwŽH›´‚Èš[¸ÀnÛí»}Ë„Ûˆ¹·Y+oèþA©sðü¼»@ª½ŒàkÛ¨‚¸Á›‚‚°À#D°n€þáðzô*«[²þÎ{ðÄ—Пé;ˆµéuü‡Âµý:¨nRÔK²É8ëƒrm@ñ|.Ã܇ͼý*¬o9'¢’H,_лy0ȸ½¬è°Jg=ӐÔÀ²zPë6oV߬õÙëp‰Ó`œÛØ»•5Út›“é¦nº+!w<í6np<ÈÕÀÕmx9;ÛæÈ¨Ù¶Ç€ÿ-¸
 ÿ„ÿvøåá$~ÈT·,ùµS#;¸Ù˜—næ 23xßFôn2“núìΠn!•׺mF9Ès´?í1î9ä¸É-ö 5
+w˜
+6‚
+ëÛ\ù€#Ã>ˆo9Ô!—H
+¢ˆ@“7Äß±ÿl`ÜÔrA&zÑ.ÚSås&7 À
øš»¾ÈÆO¸ÈSÚânÚHG0¢Hj!“£ëêÈÇL ˆ„hž÷ØÇBREžåhÈFJEˆÀ      
õèÈJ:b@²¤&Émò“‚褎@ùIQ戔›4%P©IUΈ•–t¥‹`YIY¶ˆ–Ž´%ŠpÙÈ 
èD#âe!W÷ËmH˜}tP1#4!dò1{Ë4ÏœÙFýDA
©HGJҒšô¤(M©JWÊҖºô¥0©LgJӚÚô¦8Í©NwÊӞúô§@
ªP‡JÔ¢õ¨HMªR—ÊÔ¦:õ©PªT§JÕªZõªXͪV·ÊÕ®zõ«`
«XÇJÖ²šõ¬hM«Z×ÊÖ¶ºõ­p«\çJ׺Úõ®xkˆ…2Lீ
¬`KØÂ
+!DèA^¹U…!¬d'KÙÊZ–²B»*>Lá² 
­h%;…ÍrÖP#­jWKÙœ¶P=(kg»Ú2(öµ_"mw;Z"àöKYà­p/›…ßzI¶ÃM®ÿdË`\-M@¹Ð
Ú›¥çF7¹Ó¥.•¬{]áfW»Nânwwû]ð"I¼ãmyÍ+$ô¦wµëmD8@ßúÚ÷¾÷}A3^Pß^ð—¾ãø/!àÀ¾ú•¨{ß;Úø2‚Јp„YÐ
¼b†82ApØjÆ&º`‡ÖÁ‹€°„Wl
+3ãóPñ€        ãpÔø7^…
Œ‰A‚`¨Ä&V¯$^À‚"¹È‡˜Á‘<â_8;¦ñ“¿qã«"Ê¿à°(@ÑÙ²(žÄ!fl,ÂÊÛ@sŒ
Af_¨Ø
+èò—ỉ1cÄÌ8ž²7Ô,<ó"  VðœUÿfIØj r ¡†ˆÀÈø±$>
ïnS<ä‰È÷ºÛ=     ì›j·+(PoF[ڐ¥6$¬Mÿl›Ü×ø¹W”Û›?‡Fœ‘thP 
ÝV8эža¤¯xé¹ÃÝÝa5Ýà‹Ðº¾sChÜ÷Ô¯mˆ
+l\‹¶w‡¹®ˆ¦ë‚:‹@‚Aˆ=mV»„‹^÷½=IÀ ÔðöC€å½9ÎuþžBōº¾ý 
€0›ûÅï^äÌ/Zê~˜A^ðèÍ·9Ç=NrXPÍêÐ@é]‘àÐwè@ 
/ÙküóÃÿáç5WD’E,ˆØBõ´·ý³UüõÙ×Þ}ýÜåÎtWèž2o1!\ïyG¿ƒð=€/|¿»ú×7ží| 
Tÿ@n<—+±y?¸øýÇy%yÒFyŽ`y‚ðf©÷¼†zqw|‡`qZFsæxãgŠ×}†r7æu‡ 
‰àrp&e‡@ƒ€zmö¤vaÈ6‚Š0tûWvc–}Œ6t~
+ ‹ÎxaGÀŒŠ bXÇaֈz„¨…Oö.8C׈h(~ð‘PŽ*æ‰=‡ã˜’:ȅõxqȎÊè‹ê˜2Ž6¨
+ètֈP´øe¶Ø©†Q؅º¦
+€cö‡–™¨É™ý6—Ÿù‚.苆yp¿8•¶ùnª‰ïf‰s÷𑀄Á@Ç  ’lYß9—?М–…’ 
ÿp÷P¿É`ÁY‡Cégðxo" •‚€œG'žLI¶ævw— Íö JîgÚheN¨„¨ç’‹É:è ú¡ÝȊN¹™))Žæ     
         ›GÚn Ø•{‰‡£ïH
+ê
+޹vw—7ڏþxYû)Ã¨·üٝ£§œsÉG eq)vdù[陪g-èú%s;*”FZ~𤎠
bá‘£HžƒPŒ€i#æ|ù-ژ\ª›• ,`ƒ“€
:Pùù^?: ýjV¥’i nI_"š’5¦‘c'_íW¢\ꢎ*o÷x")ƒ
©ŒÊ†I}ïØ¦â(ÿŽ:¨›ç(wÖ¨¨³Ùf¾¸¦°‹ÃרèF  
¨bHÁp¨µ§éÕ§lú§Œ©‚~ƒÚïfr¤ùY¢ow{ôHŒQJ¡½ŠfJ¢”
+§Ú™oɚjj
+±oG¯‰ð”n†]ÚP¸:^øÊ«“X¥@ lY'Èw©æ¯Â:wÿÉ‹ÍÆÿ›W‰Rú|
Él`ƒ‹Ö¬+pÁæ«ryüø‘[J“‡`͵¹“
+@@?GxœycG`ƒHûO™}Š
+"ðiŽ´­&cwµ´*O·6¨Ž®ç¡@KŒ €Ûù”~¦³h¯`½j®8ÊbHi²Éù¯
+xnöIfj°“ªK±»nbÆ{¼‹§¾é¸÷
+¹A¹‚ ¸Ï×w®èbDëÅ¨»ò7“h6§6O
+º¨+ºãz³:±¦9k¬›zO*c‚÷~‡G¦ð&½|W²Ð€½˞¹Ëÿ½6¾í{­Ò›„¶vÁ
+ÌŒ æ³¼Ëz(±2ŒtA«LÄOìj
+oºµ6'À“¥«<1tDZÄÉ^–p³ÝÅÅ8‘¡ºÆbL      d|]f|ú¦ª}6”kÌÆZ<mVQVùfyÊ
+j\Ç‘ÐÆÑõÆ0±“_lȏðXwYÌU
+È0et¬ÈYi`?`ÿdX<lɗðY™<¢l#p ÈØ§l#ºuǾÕÊ1²d 
Åd°²l#[0ªÌZ0¸œË7’S€Éƒ–SÂ,$°IðÌÐÍÒ<ÍÔ\ÍϼU°ÌÚ¼ÍÜÜÍÞüÍàÎâ<Îä\Îæ|ÎÐó
+½Ð®a-b5`ÐÀTBm3RN‹”!*Ò¨áK.&"Á´Ò¤ÑÒÀÓ§!ÓòҒ€_:}_›ÀªNI_pŠ
>]¨šêê×ÿ_reÓ‚ÓÜùž›`fáP]Éó -ÌVJ!LM˜ßùÔÊÕà0ÕÈ{
+bÇÁ¹P™ŒëVY
![]–©×—WéՌ     Öß Ö¥+
+eMýÀiµÖ]    i(
+bÍ×֐ȫ×¿ «§«Ö3ÒÖ¥9Ö¡0Øã`ت€Ø¾àŠÊØ.âØ\{ל 
Ùªpk‡z˜•“pj¬Ö“”½lÆ"€Åldž×–]k¢mڐ k®ýɎð”)¸ÁÍ6É[å×ÂÙ¦ëÙíÙksýÕ 
~\è|‡ìºö›—rÎÙqGtºËnbºÜ‘+§¬K9ù©«¿í–¿²xvåÆÖÞï»­9­ÿ¼K³rìUÄ} Æ­¥È-¹ÊÝf 
=¤ŒP|Pu˜M¸¹†GÑ»_ktv]ŒÎ   ¼î¹b‹ÞÎbËhå͈—4H4Ô_uß’ß‹¹ßDé˜
¢‰’Ø9þ|4[¦ÞWd`ƒŒûµ[d
+`ƒè¦É]ƒ²}_;lbgfK£›‡uó¥ôrIÇ:î¶P¸eÌ;ֿ™»ofV"î$~â£zÞtœâynžr†»šµJI†r1G
 \sáŠhþáÇݤ¸‘,ltÛ›µ¿@`qsþ½Ù杳‹ `§¸3ÀÛöÝØ€ýžÆyÕUúÿÅfúâZ«
+
±ú¦ž‡èãüti–ƒ°Š‹p¬zºÉj|î¸å™í|},šÞ—µ)»V_Þa^¤¶yégÎÜÞŠ§jC—Ö*¢Uª›¨ÇkIv¦‡@ƒhއÆç|ÊV_Ù>eµ]¥¶ŠÆrWoö”°×wYßcõëüìò8쨩
 -:hq¡     §èº~Ø©á‹åê©hþ²$lî0¿sYÛ:ؓ¾˜}Eþڜ Ø4KØëNéÓJÕý]ÃÞíß嚪_)­žžÙ`   
×vnÕεX‡æ^    ±
~ëW±nq?'òž´àð—€Ù«Ù-âî~
+ÙâÆ®ñx©ëIøÿ‰m7       h–¿Fòá[â?~âò(ñíšáñÚ°ÄþžçößV        Ê
Ñ}VìÞϕîóö©N”¬8–¶žëÝK”ßÉô‹½â‹ûôXæïŽ`Ÿò§©á‡²]«ô[G`5¾ô”@õïëÿ»fßÝ@Ÿñy)¢«çK   
     
Iÿ|d¡ÃF±=n(ô‘ðw·”~õ¿xù̧&ŸØ§ø_k§:"<¿«‹©„0tB/ô"z¡\©Ž€f}_ñ5[kÌØùc-§Eöik®ï£_á
{  ?~Ìο苳ï剿ˆÕÿôéÇsó>ŠJ"h­’
}ª«¬­®¯°±­
šˆš‡3¶¹~·ŒÀ,‡
+Ç~
+š,ˆGˆ‘Î‡Š‹ˆ@׍j3‡¿‡Â‹Àã"ˆ"À»¾ÝύˆÑâԉ‹@‡‘å—zIc¤
+<úˆêÿAK.ÙüCÂ`ˉhÓª]˶­Û·p+fœKWc-|™X¦üðáS¼ä
+¶     ’tà"2¾Ç"49ȁ9£-C2"BBb!gnW#†\véå—`²¥!‡dªâ¡%|}%&G° 
ùCÜùÁ–°-à     |Ur„orPkÚèG=?°
+ˆÀçzډ'$$8
+©œ’|À†JÚH¦,¼Æˆj,ø¶ãƒV
A\Q5xmöÙh§bcĀÚpÇ-÷ܝ€ðFÛ²¼Ý|÷í7Ý 0 4Þ¬HÁÀÞ'®øâZ×`†A4 
ùä”Wnùå˜ae3îùç 
‡.ú褗nú騧®úꬷîúë°Ç.ûì´×nûí¸ç®ûî¼÷îûïÀ/üðÄoüñÈ'¯üòÌ7ïüóÐG/aýôÔWoýõØg¯ýöÜwïý÷à‡/þøä—oþù觯þúì·ïþûðÇ/ÿüô×oÿýøç¯ÿþü÷ïÿÿ
+Zð‚Ì õ
\ No newline at end of file

Added: 
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring.gif
URL: 
http://svn.apache.org/viewvc/cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring.gif?rev=1848087&view=auto
==============================================================================
--- 
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring.gif
 (added)
+++ 
cassandra/site/publish/img/blog-post-introducing-transient-replication/diagram-hash-ring.gif
 Mon Dec  3 18:17:21 2018
@@ -0,0 +1,74 @@
+GIF89a ëæ

+       
+H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cʜI³¦Í›8sêÜɳç§‚õI´('
+>Ä_?~‘Nܶ1³Ã‚#ƒ]ÛkñÞ¯Œ“¡ Y0eP–“…vLZtçÓ]
¿jë.ÆUî@þzaÔpZ·scæM}äB³g8®‚àÓ=Àûç
+ó #Ýyå!F³\ªá{œ$øÊˆ%æXá~Ž”×¢!lðÀDù
+@‡3މ£)i%b~Åæ"     Àµh£‘AÚf§0êh\²6ò©dˆúGª’E:ÞËaFæ!c¾PlW
+¬Z(o‡2òb§ÜY€‡LêUŠ‘)@è¦-·À²~;ˆ¨ak  °]EàÈL%Rmºš
+òܼ§©‹È¸¨Q
+#"覛­o_Qàkÿkáþ¸
àÔqÉ=÷Ö]Gói7gmHÍ~„u@Âö,ן4iC#¢³š·¨ÄÆu±Ý~d:HË}Æ)ÝÏHæ
ŽIÉûG~ŠZ²,‚º®%ܝc¾œÇµY£îš¾Þé©ïTPpE ”¯µëZ
¶«–p>cxŒÀ_òØ'8B
+Ñ6nß]=µµzÝÏ+ékÚA0¯`e’Q@P(ˆr¨b\_!Œˆ‚d
+°á­Ò÷þÁ5hóÊÌ!¸\Ì;õš–Š<Ørù¦„‚p­ÄؕcµÍ4ì 
֔8ÇÌÐÏ(ìaWø,À]gre5¶lôƒë\cÈ"‘Ǻcñ7+º`§*&3ƎÿŒF1c¿à0 
âV‘ŠZՀôI:òŠ!ʐ"¢F&íÔK:Û
+SX5S"—
+Õçə‰ I91Ûc(æ$HÒ&¢UŠkV
+є.e4¥Ä@é–Å®”Ó€pِI£…æd{PÓcÜÑPkŽSuŠøcF—
+>ý    V¾1 s¬¢jQ£Ïÿ¬¦U¿ÙT¯`Ï3Ý(\,z.¤
+b§M¨OµiVEÀf‚DµªHµ[B©êck
+C"jâ”Tn!Zúº­LFµðMӚU
ׄÃÐtPÉJdےø‰¤Œ~q]*B¨PQ'1ê\jÓ¨Kî§ICæö°ÊŠÀ2aËéš;¸V„í…
'«V#ÇÉDöðê¼LˆëÂïö¢‰{lB¿¢çu*¬e‰¸yÏ"YOáçAKzQOfâ¡q(g6‡ˆdýƒÎ(£Û‚Úyó5s
qC¯X2«j!"©W       :`Q<ÀxSübW¼„ñ묩V—,ÐãeêŒÿý3d»z¿8ð“…
Lç¬WÑÆÕâ“JíÞS»Ïê½h†lG ­±Pƒ…
´–èlÕë®óI(»O•5õŽåO..€£VêYµHw´rmüMî€ÂÝ€÷õäü½&Ÿoܒ²–Þ¸]go·Üybö:‘¤•„9‹s
+
+Âä4¤tö:»Èïmª=;âlƒúëÌÚ¦üې
+†P„ã=µˆuG˜ý49.ë×M~ vf‡¤˜¹b8¬'5@£xÛ³Žjÿl§¸bk³;õ4öȘìe÷
eòž/¿Q¢Ü

µâ©V¯ál~.·¤üièhe˝›ˆü¤        ¯<«³p[»Óµ’.ýê'W+¿9› 
Ø>n»7uReï&ÿ!zÃ}"š†Wp›âú>i|I†U=ëe²¤"Í<7"$ÚÏ#ゾÒò‚¤@ÞÜýã¢ýίÔìÖO´˜?Jm‚
+RX…X˜…£p…Z؅^H[÷…b8†l†dx†hH{f˜†l˜† 
c%D؆r8‡tX‡vx‡x˜‡z¸‡|؇~ø‡€ˆ‚8ˆ„Xˆ†xˆˆ˜ˆŠ¸ˆŒØˆŽøˆ‰’8‰”X‰–x‰˜˜‰š¸‰œØ‰žø‰ 
Š¢8ФXЦxЍ˜Šª¸Š¬ØŠ®øŠ°‹²8‹´X‹¶x‹¸˜‹º¸‹¼Ø‹¾ø‹ÀŒÂ8ŒÄXŒÆxŒÈ˜ŒÊ¸ŒÌØŒÎøŒÐÒ8ÔXÖxØ˜Ú¸ÜØÞøàŽâ8ÿŽäXŽñꨎ0PæøŽœð
àŽðx”§Á8€þøúˆüø™
P“ø(&™E0‘6æ“ãX’]
+zd ÿ
0£
+P£\z^º+
+¦•p§ §‡ O¦ˆ`ºœµp¥
+¨ §¦Šð¤[j˜Ú“´€©“zÀ¢ezª#‘ªdÀ
+|Zd
+`¬›¤~j²(»:,ʬó¤k±²@¢òÚ²® §  ‹ÛìÊ¥«FZ²ûòš¥
+±8ûDë³M§„ §M‹¥èY%Ë»:£ÌJ³,šÀÉ
+³…@³½Ú®Á•WÚ
 À©%KE=Û¢ø©›¶Ç×µ¯Z¯¼µX
+ƺ¯3*ª‚@»›ÿ¢ž‚¥ZJ]ûnʦ§´l;£°£Òù².‹§†Ð³T„¢:jnš>k¶{£…
+®‚ ¥
+¼†pµ„µ”›Ò«¡
+Ü
l¢é{FÚÀÕúg©„0°Á… §
kó[Á‹Ð¶«
+<»•Û»¬ÿÁ‡pÁ‰€ Ã
+@
+
+Ï:¬‹ðÆGú¨³L»Lʗ\®ƒZ¼žÜ¡lË]|ÿÈÑ<%k»XšFP½¥<ìd
Åî,ÅÂܤ¸I̼;Éz\ÉLÄþûª¹Æï»Ì=®Á,¿mL       
ü¤^[Dß*¢é|Ð-ì±wü¸ÊÏùÜÄjkÏ´¼ÍÖÜÅmɕ,½HÌÆ@¨=ó+¯}.Ê­XʽM¾
Ѻò·‰€«K\ Ó<ՌÃFêÈбkŒÍW|=ë¨%-óK³,²Ë¬è,Ã-ό@¡ZÕVý¡!] 
ÒМÒ8ÅÏ|¬Î]»£xû¤([·ŸQǼÑKýóÛ³!ÜÏ3ŠŸ‹›£[Z¿²0´KË
­É:ÿ·Ï5²
`ÊJÀUëÖżnjÇ?Ð… Ê#Ko|Ó«
Ç-{Ôp½Çòʽ«·¢=ÒOTª´ÉëӜڱӥÜÚ9Z¢“û¿¼À¯¶½Å=›½d=£Ÿq×{Ú¿dlݧýÕMÚ ˆ@Å 
ú¹ª
Ïåͽ(
+½;®º¥ÿ}¿ƒðºØ‹*ࣰkÚãÍz®ê 4ϾÚ9Íz(ºÌ•`¯ án܄§§.      &.âŰᬗµ!.     
(jÝ*ÿ,.€F°¦'þwª¿35nP
Øü⏀¢^ýã¼äþ0äZäÝ`¯;Îw:×LþNÎP΢R¾
0¬®Â:ßY>[®]>£_~æ;‘æø°æ3Šzàæ¤çö ç,Šg`çwNâû çÊç~þçÎåð¦„^莁çò 
è°èŒÞސ.é“Þ•î—Þç™Þè€^þ醞š1ê¤ê‡.ꉎ¥˜žêl±éé€ê°Né¡né­þ¤¯^ëF!ëæ@ë¼^40"
àî'a
+@`Æqà
OðA+à¿·ð¯
?Õðñ _PB€X7Ð$p
Å
@
Àž±.ÐÍõRßPõ ó9@䐭JR
+ @Kï>Ð>O‚?ø!.`örñ
+à
+À÷Yø¹>礯ù±',pPåº`p,'°¿ù²0ß·OÞÎ4@ðû§¡
3
Ô"jš(²¥Ë—0cÊ)aƒ)3iMiÀP‚4•ÐèåJ´¨Ñ£HG‰!ÐaRX
vÖ¾*,t²çÏ Cc³Ë.ƒ
Ѥld<¸gÔ°c˞mª¦ÿ8
+1h‹Š±KœÏU¯uN´       žÇ~T\|҂
+?Ä50‘*xóëØ³kÕqùX`Ú)1t솎SÖë_Ï>#q?,kéèÇ ”JO¿¿ÿÿÚLpÀm*
+½ñr€f ðgàƒFè
+iǜ0ƒ„ŽÌp‚8‚5x‰<†a(âˆ$F‡ç•Ȉwñƒ'ª(ãŒ
+S-À–„à˜!\€8ª©´Öj…‡8`ª‡Ä”­À{™¢­ïÁŠI³
+ëì³ÚÄÁ£!?$
J@œºF8ñï€-y/j‡8‰âŒàE¤…Œð™@ë–7xðÿœóà!@ÈÁæc|‡PÀÚúf€™‚J2¡
½^ÅtàE¹fÈCm0†0àéü硇H´ƈ;ðÂIŒ"3ЁC¼Mwh#D,(Å.²Âs†À‰î¦À
ÃyñŒ®Hž8p¼’ü       pdÅ
+xQ¼ØÑÏT‹£Ka²H-…ðÁ)Š;¢   Òk    ÉHJ`n+„òæë5ò’xÓü°/éõV‹Â$&hpñt
hEÙÈ,úAcç£!®ÈJB:ñ@ßxÁ¼ZÆÑ)”Ÿ    ‘0_PŒŸ!c걇¸AÏ7úAÿÎD#0
qþa®Å̦)iFô‘nâôbKIþ‘¡e7Lgéû…°¤<{HI* 
+ÌÜ'5@3àí-3Ÿ@7¸LnJð›„HæBMèÆB`Ž+'ZÂ8 «g´Á!~
ðÕ¶ºU§¨Áé®p„·Úõ®x}éôpaú!ž\g!
¤ ¯ˆÍk
+"7;$ö±…ÿª¬Aƒhg°æe§qØÈz¶«)Ø\>KÚÒÂT¬Ô0$½JHÄ:J£¦­N劸.HA¶¸…
¬€:Û™U‚¾µÆäÛâÊTW=ŒËÜ»‚€$"K¨HC
êý¶„·ÓÞ-¶ŒW-“Ù¸ÒPŸ!v8Ãû¡ÁÓ8³]Í,gÜJƒˆØœ¡j…ÈŒ:»•Î]-C €7”­~¶©4€RŠtg;NtW
Õ5ÀACh¢%­aaœ!šëE 4gNs•Ò:-@!€Çª­®é       MëZ׺[e†
Ad$¹H¶E[`†b›A
XF5NÓ0
+ì
+þh§é±ø¢Oâð.­÷ËWµ‡B5-IÞU¹¯¡0—¹]±ŽÎÿóªOÿCïu 
ë}«x>ê[ŠuÀ§<jÌ%/0Ô·CÕì˜oiðápW|ÿûKî¼S»¾üÒb}ç÷føóÊJâ 
‰AhÓ·ªzŠ_žÇok¼ËßVeÏÔ¡'[çW~ûWjÐuC`yŒ'Œ–DöBÖ÷T].sZ÷V 
{¬'~9•xø×\XSÐu€¸w·Ð2§AHÄ7‚/|Ã7lg—r7xj€Qå1偫‚°|£
+ PÅJ¸„ì°‚´
+ùX÷·‰ ‰ŒQu…ìøRçW’n¥’QU“B©SÌЀHԂ~ð‚ó§SÅ(
+ژW¨“’ùw8%èǐ­”XSšÈ’Áà~I„ò7yNsìX„1çY9yŒpÃUŸè‡rgŠwE”.Uyé7dy
їDÔ÷FO¹lXSrPÕuSéR#ٕɓ[E‚åWŒ<W|C·UzÙRù‹{Iz‘Y®—D±W³—dNŒ   ©ˆ 
¹UÁȋ/ŕy•’Y”€°¹$¨˜}Œ~8S›ÙÿRÁ‹0õyÝèTwgB‘7“2ՙ[ç<tY¨z¼éR琄X›Qõygl:'|Ú蛚ِ1U“ê—‚–Áøxš´°vHÔv•䜮9%wG)6õj
 €ø›ähOUá9    f0•äَ_YœFè™H)JGL×CêJ{9ÕuISW8ˆü9mŽ€
+UÁéRºI ^Xx·@Ÿú4Cò©–7„(‰{>÷R!jS\ˆiAú*z}o
+H“' 15
++°q£U«ÿ['v*&A,æGçZ±Ú7ß屉5^ÒÀa3ôan×±"kŽÊµ²ˆõ\Ґ­aÕà.+SNP[òu³nµ¼Å
øeú%Cüåþ5
o*²nÙ7_0a<ÛUN°_@
        [?p^”^[
íõ´._‘slàµ.gրbÓÅAÕÕbØE¶-Õ]‘ãGà´n›S(`dS
Áf‡ðeÂ0\d‹\œó[·7µS{
ÊÊAÈj
°åµ´Å9]
u³¡eRtáW€…@‚å2…7‹ºHAV¸ÃAhµ
kå±qE»|QÿšéÂAFÅ
W Ke³¦æXPZ\¾;e«Ĕ$õ¼$¯&?n&eÖ»?(ëÝAåÖ½ñ³K¥¤ªçƒP‡ 
PæË=ýôOiù¾òCO’·?Ž·£ô{>­ë,°°ñóN‡°ºû{>”´JñCJíPÀüCOá+?ã«¿
¼=wZÒ$?Õ¤§,?È$?ßÛL,?¶ë„?~•V!Ì=K K¼”ÂòãJ°Ä=²ä§    
ÃÛÃo¦Ä=©¤œ8?6°I#w<ôÉ·úÃÒCOB0»,DIŒÄÇ£Z~¶Æ³¶…
àZP=}ä.v<(&HYŒ>stXl:RœGaÌÿ=jĽ±#¯D•ÆÜÃo~ 
F±3è2¦p¼;TdE»#¯à“Çèó½)ÖD¼à·€l<?t|Æ9DÄtÈçSC|:\/ÉÔ4*Ä9-„X‹ÉÇ#B†@B’ó7‡À8 
|>´3
+L;’ã@…€À³¼=DtGl66`M‹¼ËÒSɄp¿qãxEÌñS­…@¯fó®…
+38­Ñû37~P7ƒ7á,ÒüãJ~ 6Ó6|¬ÒüÃ5¼¡
+s¡~062}@ýh0VÃÙ»ÓçƒÓHóћ„¡DA:óB¿¼.?Ö³Ô4Ñ.SRí"3½ÑT½=6L\*0}2]-AK¤*s
—\ÖäÍõÌ.¸¬7lÍA#LN-$í(<×”/¼0ÄÁBŸ„0Õ|½ADä?0Ô¦r.¼0̅
Aj„ØŠm)Œ=TaýØÇC”„Ø€M*Ør#²ŒÙD,ùQ+yíÈ¢=C¸bö\)q“xœÚ„*ÇP—-#®r
,€2²ÍÿC˜‚$¡]&d°Å„À±ÝÛ£M©ƒJtR~¥EŒÜ=t'Ç 'tÒ'Ç
+à
+pè Rs.ï<M@Üq$*îÓ°ÿ
+*ÒÑ£H“îü©´©Ó§™BJµ*@©V³jݺ+ׯ`ÃVó*¶¬Ù³…®Ô(…HŸ·pãʝK·®Ý»xóê½Ëf@‰WÐ
+\²Æ€½ˆ+^Ìøî€„#K®h Eã˘3k†›ÂÀäÏ 
ZÞLº´éº)B«^¯Æé×°KCfM»¶º+rbëÞ½XN`ÛÀƒ{Ó»¸q¼Z„+_>­ÄñçÐߖ`N½ú1,ѳÇb½»÷]nµ‹‡Mä»ù󲯫¾½ûRëã“~O¿>'ùø1ÛßÿÏRþÿ‹õ'à€Š
+2„fŠh:¦‚è9WªˆŽZê­_jW„°šˆ«q…¨]°þÁ%bÿ¸&»•®u­Á¦¯ˆ
0Ȫw¡+墇¼Ō`@¯i      וrǃ|¬—È0çDr#“‹±\+Ûåñ¿1÷ìR˜cÚ¨ „ÀñZÎ8ß|nË<ûìôIÃ5
—ò-߈÷-¶ázÚµf‚¿µ³Êÿƒ`pxâ˜?ä7\„<žYä}üGÍsñYí噧ŽÐæ}ÐÊàÕgËålÙu®ÞªçþÏæTb4ì÷Þu¨ÕI
‚&êº'ߏ߆vW6¯è}PûÇñqíP츸+ï==Pš!þøäBzè*Œõ½«êr¶cßý÷ô·33#ÜÕ~cÔ÷1ûÆf(– 
¤Ç¶úÐ~‹ûѱä²?Æô¯u‹ `HAtܯ0C8—.æ}(Õ6æ¹       Vð„áÏÔ÷š©ÁjÀÉl…
‚C>f‰äbÃ~#>»Ý9çÃ"^c=ðûƒå†ø7#:Që1f¸Ã'ZÿëiCÆÄ+z1L<ÐÇXŒ0ˆŒh
†”Æ6êbÿq£mÇüÌñŽé©£|ðÈGWèq}$|þ¸AR„,ä!Ù  $R<åa¤$31·G>‡;“Ìd%œcÉèLG“ 
Œq: ä„ò”À
)ãTºr®YeqfóÊZb4²ŒMjlÉËB ¹„M<ÓËbÂ0Á$ÍcŒÉÌA\AlqB2ã,”@¿i¦6·ÉÍnzó›à
§8ÇIÎršóœèL§:×ÉÎvºóðŒ§<çIÏzÚóžøÌ§>÷ÉÏ~úóŸ
¨@JЂô M¨BÊІ:ô¡ÿ¨D'JъZô¢ͨF7Êюzô£ 
©HGJҒšô¤(M©JWÊҖºô¥0©LgJӚÚô¦8Í©NwÊӞúô§@
ªP‡JÔ¢õ¨HMªR—ÊÔ¦:õ©PªT§JÕªZõªXͪV·ÊÕ®zõ«1
+úªÂ¾À/\Õåf§¿‹XwG±`ìj—Áµp° ¼‹"4ƒÄ&o$4\ŠS¸ò•…ˆQœ
DתކÁbR¸ø"ð!ŠÓX8A€E@DĘP2F€ƒEáŽÁ‘1cE!ÈÞ²!¢`*[B¾Ø° 
®ü6·¹ÉKÍ1`WâG<9¾uþÏÿ€_UTù6Vqÿ@ÂÎ „Þ‚ÈՆàlÝ<?™0à6°å4à¹<€¥õ
]‹àÓÍõ¨iM7C# ÄuM¸zhªœŸ³ãDôØÎy®´Ô¼ç¬bЅpÀ*þLhêú‚Pöy°êeß:ÕÌÆó°…
­æ?à€ÑÏ
.!Œ^j³÷¹(–6tÍM2 º¹–D3D0\ÛâfꮏÓkDüÚw&õ¶ÏMìöÂÕ2@„«ЈBûA÷„ºý€
+zk»àÿƒäOèeÇÿçõO4Ë\k¢³é‚@vË'dàf¤§àï†wS5}vEg×ǵ§}–V6‡bKç~c·
+ødw€@õ5þ7d'(pð·aŒ‡øfŒ@³ö{%ˆ« ‚$¨
+î'b<`f—€x×E§k—÷ÿÖœgðGa9èy—{~
ms÷wF`)Ø~¾Æ€ï—}3     WfqqWƒÑFtW(`)nQ
+ùVŽÐÈj¶r^wì(À÷|Y   8°vâ§G÷p8°t¢hyþˆy)éd¸g~É}†
+ÙX‹](§xÂÖxGH€Œæ‹(„IٖàjžX—ŒÐ|®7q~P˜*Îè–\©ꆏJ—fÙ'–†@n·6Í†–éx™Š\h‹~}g(‘—
     _$÷w_§nîu]7IE°€…`~”éš™ùk€XyæÇ˜²èЇQ(Ȕi‹I™(      
m°©„¦XWY𒐓ƒP=§eàœ·|©&Íùn>ƒ€’Ðf"0k 
€SÇd8t¾pžÏ`0ÿt«I]ڙžÝَNør0§n*×@8‰÷¦¹Ǚˆ‘9ŠÓ&ya‰`ˆ0qºéu¶†^Ã÷Œ÷æ
¦I—*Êlq    ]=xclHbz^*q×7¡¹i¾ÕɉTÅIÿ(  j÷\€iä)“ù…
"ؙ:d®˜fØ~͇k¤7`džÔõuEP¤Ô…‘0j{×ö—Rú¤‡0Nª¥ŽÀ‰Ýf~XI‡Z     emƙŒP0à
+h‚J¨0€¦XÖ§Ëf4V€A÷¤W#0\jt'Gÿ[Щ€¨‹xV¤NW¦Ò |· ޝ…5ú    J
®úª«§1«ÂБ´p«¸Jºj¼º;—ir™À¬
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to