clusterfunk

package module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2020 License: Apache-2.0 Imports: 0 Imported by: 0

README

Clusterfunk

GoDoc documentation @ pkg.go.dev

What it is

This is a cluster library for Go. At its core it uses Raft and Serf to manage and automate clusters of nodes.

What it isn't

A silver bullet.

Requirements

clusterfunk requires Go version 1.12 or later. You'll need a few linters to run the lint target but you can build a version with make nolint which will just run the tests and build the binaries.

Building

This library requires a fairly recent version of Go, at least 1.12. If you are modifying the protobuffer files you'll need the protoc compiler. The generated files are included in the source tree so you won't need it unless you use make generate (or go generate ./...).

Run make to build the demo service. The build uses a host of checkers (golint, go vet, staticcheck, revive and golangci-lint) so you might get some errors if you miss one or more of those.

Get them the usual way:

go get -u golang.org/x/lint/golint
go get honnef.co/go/tools/cmd/staticcheck
go get -u github.com/mgechev/revive
# This only works for macOS, check out https://github.com/golangci/golangci-lint#install for other platforms
# go get works as well but the author doesn't recommend it.
brew install golangci/tap/golangci-lint

Documentation

Overview

Package clusterfunk is the root package for the clusterfunk library.

Directories

Path Synopsis
cmd
Package cmd contains command line utilities and demos of the library
Package cmd contains command line utilities and demos of the library
ctrlc
Package main contains a sample command-line management utility.
Package main contains a sample command-line management utility.
demo
Package demo contains a demo implementation of a server and client that uses the clusterfunk library.
Package demo contains a demo implementation of a server and client that uses the clusterfunk library.
demo/client
Package main contains the demo client code.
Package main contains the demo client code.
demo/server
Package main contains a very simple demo project
Package main contains a very simple demo project
demo/server/grpcserver
Package grpcserver contains the gRPC service implementation.
Package grpcserver contains the gRPC service implementation.
demo/server/http
Package http contains the HTTP server implementation for the demo project
Package http contains the HTTP server implementation for the demo project
pkg
clientfunk
Package clientfunk contains client-side types and utilities
Package clientfunk contains client-side types and utilities
ctrlc
Package ctrlc contains commands for the Clusterfunk CLI.
Package ctrlc contains commands for the Clusterfunk CLI.
funk
Package funk contains the types needed to create a cluster using Raft and serf.
Package funk contains the types needed to create a cluster using Raft and serf.
funk/clusterpb
Package clusterpb contains the generate gRPC code
Package clusterpb contains the generate gRPC code
funk/managepb
Package managepb contains the protobuf-generate code for the cluster management interface
Package managepb contains the protobuf-generate code for the cluster management interface
funk/metrics
Package metrics handles metrics for the cluster.
Package metrics handles metrics for the cluster.
funk/sharding/shardpb
Package shardpb contains the protobuf-generated code for the internal cluster communication
Package shardpb contains the protobuf-generated code for the internal cluster communication
serverfunk
Package serverfunk contains types that comes in handy when writing servers.
Package serverfunk contains types that comes in handy when writing servers.
toolbox
Package toolbox contains various helper and utility functions that the library uses.
Package toolbox contains various helper and utility functions that the library uses.
toolbox/fsmtool
Package fsmtool contains tools for creating FSMs, particularly transitioning between states.
Package fsmtool contains tools for creating FSMs, particularly transitioning between states.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL