ringpop

Scalable, fault-tolerant application-layer sharding

Fork me on Github

Ringpop

Build Scalable, Fault-Tolerant Distributed Systems

Ringpop is a library that brings cooperation and coordination to any application that would otherwise run as a set of independent worker processes, through three main capabilities:

  1. Membership protocol
  2. Consistent hashing
  3. Forwarding

Resilient

Ringpop delivers resiliency to your services for complex and scaling architectures while keeping operational overhead low. Traditional environments have a number of stateless servers connected to a database that stores state information. With Ringpop, state is not stored in the database; servers hold the state in memory.

Client-Agnostic

Typically, sharding is client aware. With Ringpop, sharding is client agnostic and done under the covers by providing a simple hash ring abstraction. Ringpop introduces sharding into the application layer rather than the data store, allowing for a highly available, high-performing, and scalable infrastructure with systems that are self-healing. Ringpop allows applications to distribute state, maintaining a hash ring of each service instance in an application cluster.

Fault-Tolerant

Ringpop automatically detects failures and other changes to the state of the ring through the SWIM gossip protocol. Any added capacity is easily integrated into an existing Ringpop cluster, and traffic gets evenly distributed over the new capacity, helping to avoid downtime.