# README
ringpop-go

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
Developing
First make certain that thrift
is in your path. (OSX: brew install thrift
). Then,
make setup
to install remaining golang dependencies.
Finally, run the tests by doing:
make test
Documentation
Interested in where to go from here? Read the docs at ringpop.readthedocs.org
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
Package forward provides a mechanism to forward TChannel requests.
Package hashring provides a hashring implementation that uses a red-black Tree.
No description provided by the author
Package replica extends Ringpop functionality by providing a mechanism to replicate a request to multiple nodes in the ring.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Functions
Channel is used to provide a TChannel instance that Ringpop should use for all communication.
Clock is used to set the Clock mechanism.
DeserializeThrift takes a byte slice and attempts to write it into the given thrift struct using the thrift binary protocol.
HashRingConfig takes a `HashRingConfiguration` struct that can be used to configure the hash ring.
Identity is used to specify a static hostport string as this Ringpop instance's identity.
IdentityResolverFunc is used to specify a function that will called when the Ringpop instance needs to resolve its identity (typically, on bootstrap).
Logger is used to specify a bark-compatible logger that will be used for all Ringpop logging.
LogLevels is used to set the severity log level for all Ringpop named loggers.
MembershipChecksumStatPeriod configures the period between emissions of the stat 'membership.checksum-periodic'.
New returns a new Ringpop instance.
RingChecksumStatPeriod configures the period between emissions of the stat 'ring.checksum-periodic'.
SerializeThrift takes a thrift struct and returns the serialized bytes of that struct using the thrift binary protocol.
Statter is used to specify a bark-compatible (bark.StatsReporter) stats reporter that will be used to record ringpop stats.
# Constants
StatPeriodDefault defines the default emission period for a periodic stat.
StatPeriodNever defines a "period" which disables a periodic stat emission.
# Variables
ErrEphemeralIdentity is returned by the identity resolver if TChannel is using port 0 and is not listening (and thus has not been assigned a port by the OS).
ErrNotBootstrapped is returned by public methods which require the ring to be bootstrapped before they can operate correctly.
# Interfaces
Interface specifies the public facing methods a user of ringpop is able to use.
# Type aliases
IdentityResolver is a function that returns the listen interface/port that Ringpop should identify as.
An Option is a modifier functions that configure/modify a real Ringpop object.