Categorygithub.com/corgiman/ringpop-go
modulepackage
0.4.1
Repository: https://github.com/corgiman/ringpop-go.git
Documentation: pkg.go.dev

# README

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

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.

# Structs

Arg is a blank arg.
Ringpop is a consistent hashring that uses a gossip protocol to disseminate changes around the ring.

# 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.