Implementation of jump consistent hashing for selecting servers #110
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change adds new logic for selecting which server owns a particular key based on the jump consistent hash. This logic is much faster than the existing rendezvous hashing but is more operationally fragile.
Using jump consistent hashing requires that servers are always in the same order and that servers are added and removed from the end of this list, think how statefulsets in Kubernetes work.
It's not currently possible to make use of this in mtop since we have no way to look up the names of servers until we add support for SRV DNS records. Until then, servers are ordered by their SocketAddr which means they would end up being removed from the middle of the list which completely breaks jump consistent hashing.
Depends on #107