gorums

package module
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2020 License: MIT Imports: 7 Imported by: 13

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)

Contributors Guide

We value your contributions. Before starting a contribution, please reach out to us by posting on an existing issue or creating a new one. Students and other contributors are encouraged to follow these guidelines:

  • We recommend using VSCode with the following plugins
    • Go plugin with the
      • gopls language server enabled
      • golangci-lint enabled
    • Code Spell Checker
    • markdownlint
    • vscode-proto3
  • Code should regularly be merged into master through pull requests.

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 per_node_arg = 50010;
	E_PerNodeArg = &file_gorums_proto_extTypes[6]
	// optional string custom_return_type = 51000;
	E_CustomReturnType = &file_gorums_proto_extTypes[7]
)

Extension fields to descriptor.MethodOptions.

View Source
var File_gorums_proto protoreflect.FileDescriptor

Functions

func TestSetup

func TestSetup(t testing.TB, numServers int, srvFunc func() interface{}) ([]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
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
tls

Jump to

Keyboard shortcuts

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