cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Cassandra Wiki] Update of "HintedHandoff" by TylerHobbs
Date Tue, 23 Nov 2010 19:57:30 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for change notification.

The "HintedHandoff" page has been changed by TylerHobbs.
http://wiki.apache.org/cassandra/HintedHandoff?action=diff&rev1=4&rev2=5

--------------------------------------------------

- If a node which should receive a write is down, Cassandra will write a hint to a live replica
node indicating that the write needs to be replayed to the unavailable node. If no live replica
nodes exist for this key, and !ConsistencyLevel.ANY was specified, the coordinating node will
write the hint locally. Cassandra uses hinted handoff as a way to (1) reduce the time required
for a temporarily failed node to become consistent again with live ones and (2) provide extreme
write availability when consistency is not required.
+ If a write is made and a replica node for the key is down, Cassandra will write a hint to
a live replica node indicating that the write needs to be replayed to the unavailable node.
If no replica nodes are alive for this key and !ConsistencyLevel.ANY was specified, the coordinating
node will write the hint locally. Cassandra uses hinted handoff as a way to (1) reduce the
time required for a temporarily failed node to become consistent again with live ones and
(2) provide extreme write availability when consistency is not required.
  
- A hinted write is NOT sufficient to count towards !ConsistencyLevel requirements of ONE,
QUORUM, or ALL.  Take the simple example of a cluster of two nodes, A and B, and a replication
factor of 1 (each key is stored on one node).  Suppose node A is down while we write key K
to it with !ConsistencyLevel.ONE.  Then we must fail the write: recall from the [[API]] page
that "if `W` + `R` > `ReplicationFactor`, where W is the number of nodes to block for on
write, and R the number to block for on reads, you will have strongly consistent behavior;
that is, readers will always see the most recent write."
+ A hinted write does NOT count towards !ConsistencyLevel requirements of ONE, QUORUM, or
ALL.  Take the simple example of a cluster of two nodes, A and B, and a replication factor
of 1 (each key is stored on one node).  Suppose node A is down while we write key K to it
with !ConsistencyLevel.ONE.  Then we must fail the write: recall from the [[API]] page that
"if `W` + `R` > `ReplicationFactor`, where W is the number of nodes to block for on write,
and R the number to block for on reads, you will have strongly consistent behavior; that is,
readers will always see the most recent write."
  
  Thus if we write a hint to B and call the write good because it is written "somewhere,"
there is no way to read the data at any !ConsistencyLevel until A comes back up and B forwards
the data to him.  Historically, only the lowest !ConsistencyLevel of ZERO would accept writes
in this situation; for 0.6, we added !ConsistencyLevel.ANY, meaning, "wait for a write to
succeed anywhere, even a hinted write that isn't immediately readable."
  

Mime
View raw message