I'm trying to figure out some minor understanding problems. As I see it for each Keyspace each node takes care about a certain tokenRange (describe_ring gives me the assignment), these TokenRanges have a list of nodes that hold replicas, a start token and an end token. The tokens are of type byte and can be interpreted as BigInteger. Tokens are usually taken care of at the node with the next higher token, and the previous (replicas-1)-nodes. Should a token be larger than the largest token of a node it'll wrap around to the smallest. So if I have a single node it'll tell me that it has TokenRange X to X (X being the same token in both cases), that means that it basically takes care of the entire possible token range, right?
So far it's all DHT as usual, the point I'm having problems is the mapping of the byte keys of the Column Family system to the token system used to identify the responsible nodes for a given key. You guessed it I want to be able to, given a key, find the node that is storing the value that goes with it.
Also how reliable are the informations I'm getting from describe_ring are. What actions trigger a token assignment change and what affects which nodes change the nodes holding the replicas (new node join aside)?