# buraksezer/consistent

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/buraksezer-consistent).**

774 stars · 77 forks · Go · MIT

## Links

- GitHub: https://github.com/buraksezer/consistent
- Homepage: https://research.googleblog.com/2017/04/consistent-hashing-with-bounded-loads.html
- awesome-repositories: https://awesome-repositories.com/repository/buraksezer-consistent.md

## Topics

`awesome` `awesome-go` `consistent-hashing` `consistent-hashing-library` `consistenthash` `golang` `load-balancing`

## Description

Consistent is a Go library that implements consistent hashing with bounded loads to distribute data keys across nodes in a distributed system. It provides a mechanism for mapping keys to cluster members that minimizes data movement during membership changes while preventing performance hotspots.

The library distinguishes itself by enforcing strict capacity limits on individual nodes, ensuring that no single member becomes overwhelmed by excessive key assignments. It supports virtual node mapping to distribute physical capacity across the hash ring, allowing for granular control over load balancing and resource utilization.

The project covers a broad range of distributed system requirements, including the ability to inject custom hashing algorithms to optimize data locality. It also facilitates high availability by identifying multiple candidate nodes for each key, enabling reliable data replication and redundancy across the cluster.

## Tags

### Software Engineering & Architecture

- [Consistent Hashing](https://awesome-repositories.com/f/software-engineering-architecture/distributed-systems/distributed-data-management/consistent-hashing.md) — Provides a Go implementation of consistent hashing with bounded loads for distributed systems.
- [Consistent Hashing Implementations](https://awesome-repositories.com/f/software-engineering-architecture/consistent-hashing-implementations.md) — Distributes physical node capacity across multiple points on the hash ring to improve load balancing and granular control.
- [Bounded Load Policies](https://awesome-repositories.com/f/software-engineering-architecture/load-balancing-architectures/bounded-load-policies.md) — Provides mechanisms to enforce strict capacity limits on individual nodes to prevent performance hotspots.
- [Distributed Key-Value Stores](https://awesome-repositories.com/f/software-engineering-architecture/distributed-systems/distributed-data-management/distributed-key-value-stores.md) — Assign data keys to specific nodes using consistent hashing to ensure balanced storage distribution and minimize data movement when the total number of cluster nodes changes. ([source](https://github.com/buraksezer/consistent#readme))

### DevOps & Infrastructure

- [Load Balancing Algorithms](https://awesome-repositories.com/f/devops-infrastructure/load-balancing-algorithms.md) — Restrict the number of partitions assigned to each node to prevent individual members from becoming overloaded during high traffic periods or intensive cluster maintenance operations. ([source](https://github.com/buraksezer/consistent#readme))
- [Load Balancing Strategies](https://awesome-repositories.com/f/devops-infrastructure/load-balancing-strategies.md) — Implements load balancing strategies that cap key assignments to prevent node overloading.

### Data & Databases

- [Data Partitioning Strategies](https://awesome-repositories.com/f/data-databases/data-partitioning-strategies.md) — Maps keys to cluster members to minimize data movement and prevent performance hotspots.
- [Replica Candidate Locators](https://awesome-repositories.com/f/data-databases/primary-replica-replication/replica-candidate-locators.md) — Locate multiple candidate nodes for every data key to facilitate reliable data replication and ensure high availability if a primary node becomes unavailable or goes offline. ([source](https://github.com/buraksezer/consistent#readme))
- [High Availability Configurations](https://awesome-repositories.com/f/data-databases/high-availability-configurations.md) — Facilitates high availability by identifying multiple candidate nodes for data storage.
- [Custom Hashing Implementations](https://awesome-repositories.com/f/data-databases/hash-tables/custom-hashing-implementations.md) — Allows injection of custom hashing algorithms to optimize data locality and key distribution.
- [Relocation Metrics](https://awesome-repositories.com/f/data-databases/storage-engines/key-value/relocation-metrics.md) — Measure the percentage of data keys that move between nodes during cluster membership changes to maintain balance and reduce unnecessary data transfer across the network infrastructure. ([source](https://github.com/buraksezer/consistent/tree/master/_examples))

### System Administration & Monitoring

- [Algorithmic Load Limiters](https://awesome-repositories.com/f/system-administration-monitoring/resource-usage-limiters/algorithmic-load-limiters.md) — Restricts the total number of keys assigned to any single node to prevent performance bottlenecks. ([source](https://github.com/buraksezer/consistent/blob/master/README.md))

### Part of an Awesome List

- [Distributed Systems](https://awesome-repositories.com/f/awesome-lists/devops/distributed-systems.md) — Consistent hashing with bounded loads.

### Education & Learning Resources

- [Distributed Systems & Scalability](https://awesome-repositories.com/f/education-learning-resources/educational-resources/systems-applied-computing/infrastructure-architecture/distributed-systems-scalability.md) — Manages cluster membership and resource allocation to maintain performance during scaling.
