# Packages

Package clusterpb contains the generate gRPC code.
Package managepb contains the protobuf-generate code for the cluster management interface.
Package metrics handles metrics for the cluster.
No description provided by the author

# Functions

NewCluster returns a new cluster (client).
NewLivenessChecker is a type that checks hosts for liveness.
NewLivenessClient creates a new liveness endpoint with the specified port/address.
NewLogMessage creates a new LogMessage instance.
NewRaftNode creates a new RaftNode instance.
NewSerfNode creates a new SerfNode instance.

# Constants

The following are internal tags and values for nodes.
A follower in a cluster.
Invalid or unknown state.
Joining the cluster.
The current leader node.
The following is a list of well-known endpoints on nodes.
gRPC endpoint for management.
NonMember nodes are part of the Serf cluster but not the Raft cluste.
Non voting role in cluster.
Operational, normal operation.
ProposedShardMap is the new shard map the leader proposes (dictatorship-style) to the followers.
RaftBecameFollower is emitted when the node becomes a follower.
RaftBecameLeader is emitted when the leader becomes the leader.
RaftClusterSizeChanged is emitted when a new node is added.
The following is a list of well-known endpoints on nodes.
RaftLeaderLost is emitted when the leader is lost, ie the node enters the candidate state.
RaftReceivedLog is emitted when a log entry is receievd.
RaftUndefinedEvent is the undefined event type.
Leader is elected, resharding in progress.
These areMetricsEndpoint = "ep.metrics" // MetricsEndpoint is the metrics endpointHTTPEndpoint = "ep.http" // HTTPEndpoint is the HTTP endpoint.
A node joins the cluster.
A node has left the cluster.
A node's tags are updated.
SerfStatusKey is the key for the serf status.
ShardMapCommitted is a message that will synchronize the shard map distributed in the previous message.
Starting the node.
Stopping the node.
Uknown state.
Leader election in progress.
ZeroconfManagementKind is the type used to register management endpoints in zeroconf.
ZeroconfSerfKind is the type used to register serf endpoints in zeroconf.

# Variables

SerfAlive is the status of the serf node when it is alive and well.
SerfFailed is the status of the serf node when it has failed.
SerfLeft is the status of the serf node when it has left the cluster.

# Structs

Event is the interface for cluster events that are triggered.
GRPCServerParameters is a parameter struct for gRPC services The struct uses annotations from Kong (https://github.com/alecthomas/kong).
LeaderChangedEvent is emitted when the leader of the cluster has changed.
LeaderLostEvent is emitted when the leader is about to change.
LocalNodeStoppedEvent is emitted when the local node is stopping.
LogMessage is log messages sent by the leader.
NodeAddedEvent is emitted when a new node is added to the cluster.
NodeEvent is used for channel notifications.
NodeRemovedEvent is emitted when a node is removed from the cluster.
NodeRetiredEvent is emitted when a node is about to be retired.
Parameters is the parameters required for the cluster.
RaftNode is a wrapper for the Raft library.
RaftParameters is the configuration for the Raft cluster.
SerfMember holds information on members in the Serf cluster.
SerfNode is a wrapper around the Serf library.
SerfParameters holds parameters for the Serf client.

# Interfaces

Cluster is a wrapper for the Serf and Raft libraries.
LivenessChecker is a liveness checker.
LocalLivenessEndpoint launches a local liveness client.

# Type aliases

LogMessageType is the log message type we're writing at the start of every log message.
NodeRole is the roles the node can have in the cluster.
NodeState is the enumeration of different states a node can be in.
RaftEventType is the event type for events emitted by the RaftNode type.
SerfEventType is the type of events the SerfNode emits.