consist: An implementation of consistent hashing in Rust. The goal of consistent hashing is to partition entries in such a way that the addition or removal of buckets minimizes the number of items that must be shifted between buckets, i.e. it optimizes the rehashing stage that is usually needed for hash tables. The algorithm was originally put forth by David Karger et al. in their 1997 paper "Consistent Hashing and Random Trees". As of version 0.3.0, we use CRC64 with ECMA polynomial, so that updating the rust version does not change behavior.
HashRing is a type that tracks a set of buckets corresponding to a collection of resources, usually servers. Items are hashed to these buckets in such a way that few items change their bucket mapping when one is eliminated.