8000 GitHub - henrytang1/Hydrofoil: A linearizable replicated state machine combining leader-based and leaderless protocols for sustained throughput in complex scenarios.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

A linearizable replicated state machine combining leader-based and leaderless protocols for sustained throughput in complex scenarios.

License

Notifications You must be signed in to change notification settings

henrytang1/Hydrofoil

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hydrofoil

Introduction

Hydrofoil is a new linearizable replicated state machine (RSM) distributed algorithm that uses a combination of leader-based and leaderless protocols. This allows Hydrofoil to maintain the high throughput and reliability of leader-based RSMs, while reducing downtime and slowdowns when leaders fail by automatically switching to a leaderless algorithm.

Details

Hydrofoil design is influenced by two other algorithms: Raft, a leader-based RSM that serves as the basis of many distributed databases in use today, and Ben-Or, a theoretical leaderless consensus algorithm that can operate even under asynchronous network conditions. Hydrofoil runs variations of both algorithms (which we denote as Raft+ and Ben-Or+ respectively) in parallel. Under normal network conditions, the Raft+ takes precedence, allowing for fast commits with high throughput even in georeplicated scenarios. When the leader is slow or offline, Ben-Or+ automatically takes over, enabling nearly uninterrupted performance during times when ordinary leader-based RSMs would need to trigger a re-election. The result is a linearizable RSM that is fault tolerant up to a minority of replica failures, with high throughput and low latency across a wide range of scenarios.

A full description of the protocol, and a largely complete proof can be found here.

Running the Code

Running Hydrofoil requires three components: a coordinator/master, any (odd) number of servers/replicas for replication, and a client to send messages to the RSM.

Build

Run make to build the master, replicas, and client using the given Makefile.

Running

Use runAll.sh to run Hydrofoil. Use killall.sh to terminate the experiment.

Tests

To run tests using a simulated connection, cd to src/hydrofoil/ and run go test -run Test.

Repository Details

This repo contains implementations of the following distributed protocols

  • Hydrofoil
  • Raft+
  • Ben-Or+
  • Copilot
  • Latent Copilot
  • EPaxos
  • (Classic) Paxos
  • Mencius
  • Generalized Paxos

It is a fork of the Copilot project, which was developed by Khiem Ngo and Wyatt Lloyd. The implementations of EPaxos, MultiPaxos, Mencius, and Generalized Paxos were written by Iulian Moraru, David G. Andersen, and Michael Kaminsky respectively and come from the EPaxos project.

The gobin-codegen tool was used to generate marshaling and unmarshaling functions.

About this Project

This work serves as my senior thesis for my undergraduate computer science degree at Princeton University. It was certainly a stressful but exciting experience!

I would like to thank Professor Wyatt Lloyd for being an amazing advisor throughout this entire process!

About

A linearizable replicated state machine combining leader-based and leaderless protocols for sustained throughput in complex scenarios.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0