Dear Wiki user,

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

The "ArchitectureInternals" page has been changed by JonathanEllis.
The comment on this change is: switch AE page to ArchitectureAntiEntropy .
http://wiki.apache.org/cassandra/ArchitectureInternals?action=diff&rev1=9&rev2=10

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

  = Write path =
   * !StorageProxy gets the nodes responsible for replicas of the keys from the 
!ReplicationStrategy, then sends !RowMutation messages to them.
     * If nodes are changing position on the ring, "pending ranges" are 
associated with their destinations in !TokenMetadata and these are also written 
to.
-    * If nodes that should accept the write are down, but the remaining nodes 
can fulfill the requested !ConsistencyLevel, the writes for the down nodes will 
be sent to another node instead, with a header (a "hint") saying that data 
associated with that key should be sent to the replica node when it comes back 
up.  This is called HintedHandoff and reduces the "eventual" in "eventual 
consistency."  Note that HintedHandoff is only an '''optimization'''; 
AntiEntropy is responsible for restoring consistency more completely.
+    * If nodes that should accept the write are down, but the remaining nodes 
can fulfill the requested !ConsistencyLevel, the writes for the down nodes will 
be sent to another node instead, with a header (a "hint") saying that data 
associated with that key should be sent to the replica node when it comes back 
up.  This is called HintedHandoff and reduces the "eventual" in "eventual 
consistency."  Note that HintedHandoff is only an '''optimization'''; 
ArchitectureAntiEntropy is responsible for restoring consistency more 
completely.
   * on the destination node, !RowMutationVerbHandler hands the write first to 
!CommitLog.java, then to the Memtable for the appropriate !ColumnFamily 
(through Table.apply).
   * When a Memtable is full, it gets sorted and written out as an !SSTable 
asynchronously by !ColumnFamilyStore.switchMemtable
     * When enough SSTables exist, they are merged by 
!ColumnFamilyStore.doFileCompaction

Reply via email to