3 ms·
Having multiple logical buckets per physical node doesn't fix this problem. It does help ensure that the bucket sizes are closer to uniform, but not that items
by mjb 2y ago
Having multiple logical buckets per physical node doesn't fix this problem. It does help ensure that the bucket sizes are closer to uniform, but not that items hash uniformly into the available buckets. Even if all the buckets are exactly uniform (as in some of the simulations on this page, if I understand correctly), to inconsistent hashing of items to buckets leads to inconsistent load.
Multiplicity does help with a major operational concern, though: when a node fails and recovery is needed, the recovery traffic can be spread uniformly across all cluster members rather than hot-spotting a small number of neighbors. Incidentally, this is a classic congestive collapse scenario in consistent hashed systems: a node looks failed because its overloaded, which starts recovery, which adds load to the neighbors which makes them look overloaded, and the whole thing collapses.
- nielsole 2y agoI always thought what systems did in practice is that each node can have a variable number of logical buckets assigned to it, so if there is an uneven distribution, the physical node subscribes to more or less buckets. This makes it so that the maximum logical bucket size is the maximum number of items a physical node can hold.