goxos

package module
v0.0.0-...-7c6133f Latest Latest
Warning

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

Go to latest
Published: May 30, 2016 License: MIT Imports: 11 Imported by: 0

README

Goxos: A Go-based Paxos Implementation

Goxos was initially implemented to evaluate different failure handling techniques for Paxos State Machines, including Replacement [1] and ARec [2]. The system has later been extended with other Paxos-variations.

Old documentation
References

[1] L. Jehl, T. E. Lea, and H. Meling. Replacement: The smart way to handle failures in a replicated state machine. In 34rd IEEE International Symposium on Reliable Distributed Systems, SRDS ’15, pages 156–165. IEEE Computer Society, 2015.

[2] L. Jehl and H. Meling. Asynchronous Reconfiguration for Paxos State Machines. In M. Chatterjee, J.-n. Cao, K. Kothapalli, and S. Rajsbaum, editors, Distributed Computing and Networking, volume 8314 of Lecture Notes in Computer Science, pages 119–133. Springer Berlin Heidelberg, 2014.

Documentation

Overview

Package goxos is the main interface for creating replicated services using the Goxos framework.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNodeNotInitialized            = errors.New("goxos node must be initialized before started")
	ErrCanNotStartAlreadyRunningNode = errors.New("can't start already running Goxos node")
	ErrCanNotStopNonRunningNode      = errors.New("can't stop non-runnning Goxos node")
	ErrMethodUnavailable             = errors.New("method unavailable for a Goxos replacer/reconfig node")
)

Functions

This section is empty.

Types

type InitializationAbort

type InitializationAbort struct {
	// contains filtered or unexported fields
}

func (InitializationAbort) Error

func (ia InitializationAbort) Error() string

type Replica

type Replica struct {
	// contains filtered or unexported fields
}

Replica holds the state of a replicated service.

func NewReplica

func NewReplica(id uint, appID string, config config.Config, ah app.Handler) *Replica

Create a new Goxos replica. Arguments required are an integer id, a string application id, a path to a configuration file, and an application that fulfills the app.Handler interface.

func (*Replica) Init

func (r *Replica) Init()

Initialize the state.

func (*Replica) Start

func (r *Replica) Start() error

Launch the server and all modules that make up Goxos.

func (*Replica) Stop

func (r *Replica) Stop() error

Halt the server and all Goxos modules.

type StandbyReplica

type StandbyReplica struct {
	Replica
	// contains filtered or unexported fields
}

func NewStandbyReplica

func NewStandbyReplica(ah app.Handler,
	appID, standbyIP string) (s *StandbyReplica)

func (*StandbyReplica) Init

func (s *StandbyReplica) Init() error

func (*StandbyReplica) Standby

func (s *StandbyReplica) Standby() error

func (*StandbyReplica) Start

func (s *StandbyReplica) Start() error

Directories

Path Synopsis
Godeps
_workspace/src/bitbucket.org/zombiezen/gopdf/pdf
Package pdf implements a Portable Document Format writer, as defined in ISO 32000-1.
Package pdf implements a Portable Document Format writer, as defined in ISO 32000-1.
_workspace/src/code.google.com/p/draw2d/draw2d
The package draw2d provide a Graphic Context that can draw vectorial figure on surface.
The package draw2d provide a Graphic Context that can draw vectorial figure on surface.
_workspace/src/code.google.com/p/freetype-go/freetype
The freetype package provides a convenient API to draw text onto an image.
The freetype package provides a convenient API to draw text onto an image.
_workspace/src/code.google.com/p/freetype-go/freetype/raster
The raster package provides an anti-aliasing 2-D rasterizer.
The raster package provides an anti-aliasing 2-D rasterizer.
_workspace/src/code.google.com/p/freetype-go/freetype/truetype
Package truetype provides a parser for the TTF and TTC file formats.
Package truetype provides a parser for the TTF and TTC file formats.
_workspace/src/code.google.com/p/go.crypto/ssh
Package ssh implements an SSH client and server.
Package ssh implements an SSH client and server.
_workspace/src/code.google.com/p/go.crypto/ssh/agent
Package agent implements a client to an ssh-agent daemon.
Package agent implements a client to an ssh-agent daemon.
_workspace/src/code.google.com/p/go.crypto/ssh/terminal
Package terminal provides support functions for dealing with terminals, as commonly found on UNIX systems.
Package terminal provides support functions for dealing with terminals, as commonly found on UNIX systems.
_workspace/src/code.google.com/p/go.crypto/ssh/test
This package contains integration tests for the code.google.com/p/go.crypto/ssh package.
This package contains integration tests for the code.google.com/p/go.crypto/ssh package.
_workspace/src/code.google.com/p/go.image/tiff
Package tiff implements a TIFF image decoder and encoder.
Package tiff implements a TIFF image decoder and encoder.
_workspace/src/code.google.com/p/go.image/tiff/lzw
Package lzw implements the Lempel-Ziv-Welch compressed data format, described in T. A. Welch, “A Technique for High-Performance Data Compression”, Computer, 17(6) (June 1984), pp 8-19.
Package lzw implements the Lempel-Ziv-Welch compressed data format, described in T. A. Welch, “A Technique for High-Performance Data Compression”, Computer, 17(6) (June 1984), pp 8-19.
_workspace/src/code.google.com/p/goprotobuf/proto
Package proto converts data structures to and from the wire format of protocol buffers.
Package proto converts data structures to and from the wire format of protocol buffers.
_workspace/src/code.google.com/p/plotinum/plot
plot provides an API for setting up plots, and primitives for drawing on plots.
plot provides an API for setting up plots, and primitives for drawing on plots.
_workspace/src/code.google.com/p/plotinum/plotter
The plotter package defines a variety of standard Plotters for the Plotinum plot package.
The plotter package defines a variety of standard Plotters for the Plotinum plot package.
_workspace/src/code.google.com/p/plotinum/plotutil
The plotutil package contains a small number of utilites for creating plots.
The plotutil package contains a small number of utilites for creating plots.
_workspace/src/code.google.com/p/plotinum/vg
vg defines an interface for drawing 2D vector graphics.
vg defines an interface for drawing 2D vector graphics.
_workspace/src/code.google.com/p/plotinum/vg/vgeps
The vgeps implemens the vg.Canvas interface using encapsulated postscript.
The vgeps implemens the vg.Canvas interface using encapsulated postscript.
_workspace/src/code.google.com/p/plotinum/vg/vgimg
vgimg implements the vg.Canvas interface using draw2d (code.google.com/p/draw2d/draw2d) as a backend to output raster images.
vgimg implements the vg.Canvas interface using draw2d (code.google.com/p/draw2d/draw2d) as a backend to output raster images.
_workspace/src/code.google.com/p/plotinum/vg/vgpdf
The vgpdf implemens the vg.Canvas interface using gopdf (bitbucket.org/zombiezen/gopdf/pdf).
The vgpdf implemens the vg.Canvas interface using gopdf (bitbucket.org/zombiezen/gopdf/pdf).
_workspace/src/code.google.com/p/plotinum/vg/vgsvg
The vgsvg package uses svgo (github.com/ajstarks/svgo) as a backend for vg.
The vgsvg package uses svgo (github.com/ajstarks/svgo) as a backend for vg.
_workspace/src/github.com/ajstarks/svgo
Package svg generates SVG as defined by the Scalable Vector Graphics 1.1 Specification (<http://www.w3.org/TR/SVG11/>).
Package svg generates SVG as defined by the Scalable Vector Graphics 1.1 Specification (<http://www.w3.org/TR/SVG11/>).
barchart - bar chart
_workspace/src/github.com/ajstarks/svgo/benchviz
benchviz: visualize benchmark data from benchcmp
benchviz: visualize benchmark data from benchcmp
_workspace/src/github.com/ajstarks/svgo/pattern
pattern: test the pattern function
pattern: test the pattern function
_workspace/src/github.com/ajstarks/svgo/rr
radar roadmap (via Ernst and Young)
radar roadmap (via Ernst and Young)
_workspace/src/github.com/ajstarks/svgo/svgplay
svgplay: sketch with SVGo, (derived from the old misc/goplay), except: (1) only listen on localhost, (default port 1999) (2) always render html, (3) SVGo default code, (4) invoke the compiler and linker directly
svgplay: sketch with SVGo, (derived from the old misc/goplay), except: (1) only listen on localhost, (default port 1999) (2) always render html, (3) SVGo default code, (4) invoke the compiler and linker directly
_workspace/src/github.com/codegangsta/cli
Package cli provides a minimal framework for creating and organizing command line Go applications.
Package cli provides a minimal framework for creating and organizing command line Go applications.
_workspace/src/github.com/davecheney/profile
Package profile provides a simple way to manage runtime/pprof profiling of your Go application.
Package profile provides a simple way to manage runtime/pprof profiling of your Go application.
_workspace/src/github.com/golang/glog
Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
_workspace/src/github.com/pkg/math
Package math provides helper functions for mathematical operations over all integer Go types.
Package math provides helper functions for mathematical operations over all integer Go types.
_workspace/src/gopkg.in/check.v1
Package check is a rich testing extension for Go's testing package.
Package check is a rich testing extension for Go's testing package.
Package app provides the App interface which is required to be implemented by implementors of new replicated services.
Package app provides the App interface which is required to be implemented by implementors of new replicated services.
Package batchpaxos implements the Acropolis protocol, as discussed in the 2013 Master's thesis at UiS.
Package batchpaxos implements the Acropolis protocol, as discussed in the 2013 Master's thesis at UiS.
Package client is responsible for client-replica communication.
Package client is responsible for client-replica communication.
Package config has three parts: config.go: A really simple key-value store for configs.
Package config has three parts: config.go: A really simple key-value store for configs.
exp
Package grp implements a group manager (GrpMgr), as well as a node map (NodeMap).
Package grp implements a group manager (GrpMgr), as well as a node map (NodeMap).
kvs
The launch command is used to start services.
The launch command is used to start services.
Package liveness provides a failure detecter (Fd), leader detector (Ld) and heartbeat emitter (HbEm).
Package liveness provides a failure detecter (Fd), leader detector (Ld) and heartbeat emitter (HbEm).
Package lr provides the Live Replacement features needed to implement MultiPaxosLr.
Package lr provides the Live Replacement features needed to implement MultiPaxosLr.
Package multipaxos implements all of the functionality of the MultiPaxos protocol.
Package multipaxos implements all of the functionality of the MultiPaxos protocol.
Package net is responsible for abstracting away all of the inter-replica communication in the system.
Package net is responsible for abstracting away all of the inter-replica communication in the system.
Package nodeinit provides the ability to launch nodes that are to be used by the lr and reconfig module.
Package nodeinit provides the ability to launch nodes that are to be used by the lr and reconfig module.
Package paxos provides some Paxos-related structures that are shared by some of the different Paxos modules.
Package paxos provides some Paxos-related structures that are shared by some of the different Paxos modules.
Package reconfig implements the Paxos reconfiguration mechanism, an alternative to Live Replacement.
Package reconfig implements the Paxos reconfiguration mechanism, an alternative to Live Replacement.
Package server is responsible for setup, initialization, and teardown of all of the submodules of Goxos.
Package server is responsible for setup, initialization, and teardown of all of the submodules of Goxos.

Jump to

Keyboard shortcuts

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