Skip to content
/ gorums Public

Gorums simplify fault-tolerant quorum-based protocols

License

Notifications You must be signed in to change notification settings

relab/gorums

Folders and files

NameName
Last commit message
Last commit date
Feb 13, 2024
Mar 23, 2024
Mar 26, 2024
Jan 11, 2025
Jan 7, 2025
Jan 7, 2025
Jan 11, 2025
Mar 23, 2024
Jan 11, 2025
Mar 23, 2024
Jun 17, 2020
Jan 7, 2025
Jul 10, 2020
Jan 30, 2024
Jan 13, 2021
Jan 7, 2021
Dec 17, 2021
Mar 23, 2024
Feb 5, 2021
Mar 26, 2024
Jan 7, 2025
Mar 23, 2024
Mar 23, 2024
Dec 13, 2024
Mar 23, 2024
Mar 15, 2020
Mar 23, 2024
Mar 23, 2024
Mar 23, 2024
Jan 7, 2025
Jan 7, 2025
Mar 27, 2021
Mar 23, 2024
Feb 18, 2021
Mar 26, 2024
Jan 7, 2025
Mar 26, 2024
Jan 7, 2025
Dec 30, 2021
Jan 7, 2025
Mar 23, 2024
Feb 2, 2024
Jan 7, 2025
Mar 4, 2022
Jan 7, 2025
Mar 26, 2024
Mar 27, 2021
Dec 30, 2021
Jan 6, 2022

Repository files navigation

Gorums

license go reference GoReportCard build 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

Publications

[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.

[2] Sebastian Pedersen, Hein Meling, and Leander Jehl. An Analysis of Quorum-based Abstractions: A Case Study using Gorums to Implement Raft. In Proceedings of the 2018 Workshop on Advanced Tools, Programming Languages, and PLatforms for Implementing and Evaluating Algorithms for Distributed systems.

Authors

  • Hein Meling
  • John Ingve Olsen
  • Tormod Erevik Lea
  • Leander Jehl