A fantastic article explaining the rationale behind and usage of virtual buckets for scaling memcached:
- Never service a request on the wrong server.
- Allow scaling up and down at will.
- Servers refuse commands that they should not service, but
- Servers still do not know about each other.
- We can hand data sets from one server another atomically, but
- There are no temporal constraints.
- Consistency is guaranteed.
- Absolutely no network overhead is introduced in the normal case.
As described in what is membase, virtual buckets/vbuckets is exactly the approach used by membase, Riak, and probably every solution involving consistent hashing.