Please sign in to comment.
MEDIUM: server: Implement bounded-load hash algorithm
The consistent hash lookup is done as normal, then if balancing is enabled, we progress through the hash ring until we find a server that doesn't have "too much" load. In the case of equal weights for all servers, the allowed number of requests for a server is either the floor or the ceil of (num_requests * hash-balance-factor / num_servers); with unequal weights things are somewhat more complicated, but the spirit is the same -- a server should not be able to go too far above (its relative weight times) the average load. Using the hash ring to make the second/third/etc. choice maintains as much locality as possible given the load limit. Signed-off-by: Andrew Rodland <firstname.lastname@example.org>
- Loading branch information...