> That's true, but it is not a good thing: numVirtNodes should
be proportional
> with the node's capacity, i.e. more powerful machines in the cluster should
> have assigned more virtual nodes.
> This way we can better control the load. A node would need to send its
> configured numVirtualNodes when joining in order to support this, but that's
> a thing we already do for TACH.
>
We should use a different mechanism than the TopologyAwareUUID we use
for TACH, because the address is sent with every command.
so every command sends
cluster, rack and machine info? That's sounds a bit redundant. Can't we just send
them once with the JOIN request?
The capacity
instead should be fairly static. We may want to make it changeable at
runtime, but it will take a state transfer to propagate that info to
all the members of the cluster (because the nodes' CHs need to stay in
sync).
In fact, I can imagine users wanting to balance key ownership between
machines/racks/sites with TACH, but without actually using RELAY - the
TopologyAwareUUID is just an overhead for them.