All Projects → relab → Gorums

relab / Gorums

Licence: mit
Gorums simplify fault-tolerant quorum-based protocols

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Gorums

Purerpc
Asynchronous pure Python gRPC client and server implementation supporting asyncio, uvloop, curio and trio
Stars: ✭ 125 (+10.62%)
Mutual labels:  grpc, rpc-framework
meshRPC
Automatic Service Mesh and RPC generation for Go micro services, it's a humble alternative to gRPC with Istio.
Stars: ✭ 69 (-38.94%)
Mutual labels:  grpc, rpc-framework
Sea
rpc framework built on grpc
Stars: ✭ 132 (+16.81%)
Mutual labels:  grpc, rpc-framework
Armeria
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Stars: ✭ 3,392 (+2901.77%)
Mutual labels:  grpc, rpc-framework
Tropicrpc
A VS Code extension that provides gRPC API endpoint testing.
Stars: ✭ 158 (+39.82%)
Mutual labels:  grpc, rpc-framework
Nrpc
nRPC is like gRPC, but over NATS
Stars: ✭ 440 (+289.38%)
Mutual labels:  grpc, rpc-framework
Grpc Hello World
An example of gRPC+grpc-gateway
Stars: ✭ 104 (-7.96%)
Mutual labels:  grpc
Gun
Toy gRPC Tunnel over CloudFlare (Proof of Concept)
Stars: ✭ 108 (-4.42%)
Mutual labels:  grpc
Orion
Orion is a small lightweight framework written around grpc/protobuf with the aim to shorten time to build microservices at Carousell.
Stars: ✭ 101 (-10.62%)
Mutual labels:  grpc
Jupiter
Jupiter是一款性能非常不错的, 轻量级的分布式服务框架
Stars: ✭ 1,372 (+1114.16%)
Mutual labels:  rpc-framework
Ultimate Go
This repo contains my notes on working with Go and computer systems.
Stars: ✭ 1,530 (+1253.98%)
Mutual labels:  grpc
Protoc Gen Map
SQL Data mapper framework for grpc/protobuf
Stars: ✭ 112 (-0.88%)
Mutual labels:  grpc
Protodot
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
Stars: ✭ 107 (-5.31%)
Mutual labels:  grpc
Protoc Gen Struct Transformer
Transformation functions generator for Protocol Buffers.
Stars: ✭ 105 (-7.08%)
Mutual labels:  grpc
Memo
The memo elastic and resilient key-value store.
Stars: ✭ 111 (-1.77%)
Mutual labels:  grpc
Whatsmars
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)🔥🔥🔥🔥🔥
Stars: ✭ 1,389 (+1129.2%)
Mutual labels:  rpc-framework
Perfmark
PerfMark is a High Performance Tracing Library.
Stars: ✭ 112 (-0.88%)
Mutual labels:  grpc
Crm
A lightweight CRM application builds with microservices architecture
Stars: ✭ 102 (-9.73%)
Mutual labels:  grpc
Microservices Demo
Sample cloud-native application with 10 microservices showcasing Kubernetes, Istio, gRPC and OpenCensus.
Stars: ✭ 11,369 (+9961.06%)
Mutual labels:  grpc
Dapr Demos
Collection of personal Dapr demos (bindings, state, pub/sub, service-to-service invocation)
Stars: ✭ 109 (-3.54%)
Mutual labels:  grpc

Gorums

license go reference 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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].