gorums

package module
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2020 License: MIT Imports: 10 Imported by: 35

README

gorums

license GoDoc Travis Build Status golangci-lint

Gorums [1] is a novel framework for building fault tolerant distributed systems. Gorums offers a flexible and simple quorum call abstraction, used to communicate with a set of processes, and to collect and process their responses. Gorums provides separate abstractions for (a) selecting processes for a quorum call and (b) processing replies. These abstractions simplify the main control flow of protocol implementations, especially for quorum-based systems, where only a subset of the replies to a quorum call need to be processed.

Gorums uses code generation to produce an RPC library that clients can use to invoke quorum calls. Gorums is a wrapper around the gRPC library. Services are defined using the protocol buffers interface definition language.

System Requirements

To build and deploy Gorums, you need the following software installed:

  • Protobuf compiler (protoc)
  • Make
  • Ansible (used by benchmark script)

Examples

The original EPaxos implementation modified to use Gorums can be found here.

A collection of different algorithms for reconfigurable atomic storage implemented using Gorums can be found here.

Documentation

References

[1] Tormod Erevik Lea, Leander Jehl, and Hein Meling. Towards New Abstractions for Implementing Quorum-based Systems. In 37th International Conference on Distributed Computing Systems (ICDCS), Jun 2017.

Documentation

Overview

Package gorums provide protobuf options for gRPC-based quorum calls.

Index

Constants

This section is empty.

Variables

View Source
var (
	// optional bool quorumcall = 50000;
	E_Quorumcall = &file_gorums_proto_extTypes[0]
	// optional bool async = 50001;
	E_Async = &file_gorums_proto_extTypes[1]
	// optional bool ordered = 50002;
	E_Ordered = &file_gorums_proto_extTypes[2]
	// optional bool multicast = 50003;
	E_Multicast = &file_gorums_proto_extTypes[3]
	// optional bool correctable = 50004;
	E_Correctable = &file_gorums_proto_extTypes[4]
	// optional bool unicast = 50005;
	E_Unicast = &file_gorums_proto_extTypes[5]
	// optional bool concurrent = 50006;
	E_Concurrent = &file_gorums_proto_extTypes[6]
	// optional bool per_node_arg = 50010;
	E_PerNodeArg = &file_gorums_proto_extTypes[7]
	// optional string custom_return_type = 51000;
	E_CustomReturnType = &file_gorums_proto_extTypes[8]
)

Extension fields to descriptor.MethodOptions.

View Source
var File_gorums_proto protoreflect.FileDescriptor

Functions

func TestSetup

func TestSetup(t testing.TB, numServers int, regSrvFn func(*grpc.Server)) ([]string, func())

TestSetup starts numServers gRPC servers using the given registration function, and returns the server addresses along with a stop function that should be called to shut down the test.

Types

This section is empty.

Directories

Path Synopsis
cmd
benchmark command
protoc-gen-gorums/gengorums
Package gengorums is internal to the gorums protobuf module.
Package gengorums is internal to the gorums protobuf module.
examples module
internal
leakcheck
Package leakcheck contains functions to check leaked goroutines.
Package leakcheck contains functions to check leaked goroutines.
tests
qf

Jump to

Keyboard shortcuts

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