Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


Scalable, fault-tolerant application-layer sharding for Go applications

Subscribe to updates I use ringpop-go

Statistics on ringpop-go

Number of watchers on Github 397
Number of open issues 23
Average time to close an issue 3 months
Main language Go
Average time to merge a PR 5 days
Open pull requests 18+
Closed pull requests 24+
Last commit over 2 years ago
Repo Created almost 5 years ago
Repo Last Updated about 2 years ago
Size 4.77 MB
Homepage http://www.uber.com
Organization / Authoruber
Latest Releasev0.8.5
Page Updated
Do you use ringpop-go? Leave a review!
View open issues (23)
View ringpop-go activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating ringpop-go for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

ringpop-go Build Status Coverage Status

Ringpop is a library that brings cooperation and coordination to distributed applications. It maintains a consistent hash ring on top of a membership protocol and provides request forwarding as a routing convenience. It can be used to shard your application in a way that's scalable and fault tolerant.

Getting started

To install ringpop-go:

go get github.com/uber/ringpop-go


First make certain that thrift (OSX: brew install thrift) and glide are in your path (above). Then,

make setup

to install remaining golang dependencies and install the pre-commit hook.

Finally, run the tests by doing:

make test


Interested in where to go from here? Read the docs at ringpop.readthedocs.org

ringpop-go open issues Ask a question     (View All Issues)
  • over 3 years Log joined nodes
  • over 3 years Leader election
  • almost 4 years Rolling update problem
  • almost 4 years Flappy Test: TestFilterChangesFromSender
  • almost 4 years Make sure incarnation number is increased when bumped
  • almost 4 years `go tool vet` is not running on all examples
  • about 4 years Improve stats during partition healing
  • over 4 years unable to count members of the ring for statting
  • over 4 years handleChanges refactor
  • over 4 years Rework locking in ringpop-go
  • over 4 years Flappy integration test - 1912 Testing chosen dest ?
  • over 4 years Flapper TestRequestTimesOut
  • over 4 years Flappy integration test - 83 check number of alive nodes
  • over 4 years Flappy test TestSuspectBecomesFaulty
  • over 4 years Flappy test TestIndirectPing6
  • over 4 years Flappy test TestJoinHandlerNotMakingAlive
  • over 4 years mock generation broken: GOPATH overrides do not work with mockery
  • over 4 years too much "no pingable members" when running single-node cluster
  • over 4 years "ping request inconclusive due to errors" in healthy ring
  • over 4 years Support all (3) protocols of TChannel in HandleOrForward
ringpop-go open pull requests (View All Pulls)
  • Make leave respect incarnation numbers
  • Split TestFlushesAfterInterval, remove Timer.sleep
  • add ring.checksum* stats for partition detection
  • Tap on another ring and gets its status
  • Add headers to forwarder and add test
  • Heal partitions trough the discover provider
  • Release v0.5.0
  • Update testpop to emit stats to network or file
  • Change stat name emitted when healing
  • Make hashring consistent on hash colissions
  • Move ringpop-go to glide
  • Improve cache by not storing ORIG_HEAD
  • Test examples/ping-*/README.md
  • Release v0.7.0
  • Feature: Self-Eviction
  • Fix leaking timer goroutines
  • [Travis] Remove go1.5 support
  • glide up and fix noLogger
ringpop-go list of languages used
ringpop-go latest release notes
v0.8.5 Ordered hashring.LookupN; router.GetNClients; sirupsen/logrus import fix
  • Fix: LookupN returns ring node destinations in ring order #211
  • Fix: Use lower case sirupsen/logrus import #208
  • Feature: Added GetNClients to router #212
v0.8.4 Allow requiresAppInPing to be configured
v0.8.3 Add option to enforce identical app name in pings
Other projects in Go