gorums

package module
v0.1.0-gogo Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2020 License: MIT Imports: 4 Imported by: 35

README

gorums

license GoDoc Travis Build Status

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.

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 is a generated protocol buffer package.

It is generated from these files:

gorums.proto

It has these top-level messages:

Index

Constants

This section is empty.

Variables

View Source
var E_Correctable = &proto.ExtensionDesc{
	ExtendedType:  (*google_protobuf.MethodOptions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         50001,
	Name:          "gorums.correctable",
	Tag:           "varint,50001,opt,name=correctable",
	Filename:      "gorums.proto",
}
View Source
var E_CorrectableStream = &proto.ExtensionDesc{
	ExtendedType:  (*google_protobuf.MethodOptions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         50002,
	Name:          "gorums.correctable_stream",
	Tag:           "varint,50002,opt,name=correctable_stream,json=correctableStream",
	Filename:      "gorums.proto",
}
View Source
var E_CustomReturnType = &proto.ExtensionDesc{
	ExtendedType:  (*google_protobuf.MethodOptions)(nil),
	ExtensionType: (*string)(nil),
	Field:         51000,
	Name:          "gorums.custom_return_type",
	Tag:           "bytes,51000,opt,name=custom_return_type,json=customReturnType",
	Filename:      "gorums.proto",
}
View Source
var E_Multicast = &proto.ExtensionDesc{
	ExtendedType:  (*google_protobuf.MethodOptions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         50003,
	Name:          "gorums.multicast",
	Tag:           "varint,50003,opt,name=multicast",
	Filename:      "gorums.proto",
}
View Source
var E_PerNodeArg = &proto.ExtensionDesc{
	ExtendedType:  (*google_protobuf.MethodOptions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         50006,
	Name:          "gorums.per_node_arg",
	Tag:           "varint,50006,opt,name=per_node_arg,json=perNodeArg",
	Filename:      "gorums.proto",
}
View Source
var E_Qc = &proto.ExtensionDesc{
	ExtendedType:  (*google_protobuf.MethodOptions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         50000,
	Name:          "gorums.qc",
	Tag:           "varint,50000,opt,name=qc",
	Filename:      "gorums.proto",
}
View Source
var E_QcFuture = &proto.ExtensionDesc{
	ExtendedType:  (*google_protobuf.MethodOptions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         50004,
	Name:          "gorums.qc_future",
	Tag:           "varint,50004,opt,name=qc_future,json=qcFuture",
	Filename:      "gorums.proto",
}
View Source
var E_QfWithReq = &proto.ExtensionDesc{
	ExtendedType:  (*google_protobuf.MethodOptions)(nil),
	ExtensionType: (*bool)(nil),
	Field:         50005,
	Name:          "gorums.qf_with_req",
	Tag:           "varint,50005,opt,name=qf_with_req,json=qfWithReq",
	Filename:      "gorums.proto",
}

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
cmd
gentemplates command
storageserver command
Package dev is a generated protocol buffer package.
Package dev is a generated protocol buffer package.
examples module
internal
leakcheck
Package leakcheck contains functions to check leaked goroutines.
Package leakcheck contains functions to check leaked goroutines.
plugins
gorums
Package gorums outputs a gorums client API in Go code.
Package gorums outputs a gorums client API in Go code.

Jump to

Keyboard shortcuts

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