With N nodes, the ring is divided into N*num_tokens. Correct? 
There is always num_tokens tokens in the ring.
Each node has (num_tokens / N) * RF ranges on it. 

so the ranges of keys are not uniform, although with enough nodes in the cluster there probably won't be any really large ranges. Correct?
Even without vnodes there is no guarantee that nodes had contiguous key ranges. 

Cheers

-----------------
Aaron Morton
Freelance Cassandra Developer
New Zealand

@aaronmorton

On 6/02/2013, at 5:43 AM, Baron Schwartz <baron@xaprb.com> wrote:

As I understand the num_tokens setting, it makes Cassandra do the following pseudocode when a new node is added:

for 1...num_tokens do
   my_token = rand(0, 2^128-1)
   next_token = min(tokens in cluster where token > my_token)
   my_range = (my_token, next_token - 1)
done

Now the new node owns num_tokens chunks of keys that previously belonged to other nodes.

My point is, with 1 node in the cluster, the ring is divided into num_tokens ranges. With N nodes, the ring is divided into N*num_tokens. Correct? The docs do not make this clear for me.

And another point: the tokens are randomly chosen, so the ranges of keys are not uniform, although with enough nodes in the cluster there probably won't be any really large ranges. Correct?