Skip to content

Calculates hash ranges to help coordinate a hashring (using consistent hashing) for storing and finding keys, and replicating keys between nodes if the cluster changes (add, remove nodes) or between two clusters (for example during deployments)

License

Notifications You must be signed in to change notification settings

Thomblin/hashring_coordinator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hashring_coordinator

github crates.io docs.rs build status audit status

A minimal implementation of consistent hashing.

Clients can use the HashRing struct to add consistent hashing to their applications.

  • You can add and remove nodes to a HashRing.
  • Find all nodes that (should) store a given key.
  • Return all hash ranges within the HashRing to easily detect nodes and their responsibilities (containing replica nodes as well)
  • Compare two HashRing clusters to receive replication instructions between both clusters (for each node, list hash ranges and target nodes to find keys that need to be replicated)

This implemementation is based on the original source: https://github.com/jeromefroe/hashring-rs

Features

  • derive: to allow serde (de)serialization of struct Replicas

Example

Take a look at the examples directory for further details like replication during deployments or after adding/removing nodes from the cluster

  • simple.rs - gives a brief overview of the main functions
  • cluster.rs - implements a cluster and shows how to rebalance the cluster if a node as added or removed and how to synchronize all values to a completely new cluster

About

Calculates hash ranges to help coordinate a hashring (using consistent hashing) for storing and finding keys, and replicating keys between nodes if the cluster changes (add, remove nodes) or between two clusters (for example during deployments)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages