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] Trivial Update of "ArchitectureInternals" by JonathanEllis
Date Mon, 08 Feb 2010 18:16:04 GMT
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

Mime
View raw message