All Projects → ongardie → Dissertation

ongardie / Dissertation

Licence: other
Sources for my PhD dissertation on the Raft consensus algorithm

Labels

Projects that are alternatives of or similar to Dissertation

Dragonboat
Dragonboat is a high performance multi-group Raft consensus library in pure Go.
Stars: ✭ 3,983 (+524.29%)
Mutual labels:  raft
Raft Zh cn
Raft一致性算法论文的中文翻译
Stars: ✭ 4,684 (+634.17%)
Mutual labels:  raft
Ra
A Raft implementation for Erlang and Elixir that strives to be efficient and make it easier to use multiple Raft clusters in a single system.
Stars: ✭ 478 (-25.08%)
Mutual labels:  raft
Openmessaging Storage Dledger
A raft-based java library for building high-available, high-durable, strong-consistent commitlog.
Stars: ✭ 364 (-42.95%)
Mutual labels:  raft
Patroni
A template for PostgreSQL High Availability with Etcd, Consul, ZooKeeper, or Kubernetes
Stars: ✭ 4,434 (+594.98%)
Mutual labels:  raft
Ratis
Open source Java implementation for Raft consensus protocol.
Stars: ✭ 443 (-30.56%)
Mutual labels:  raft
Raftos
Asynchronous replication framework for distributed Python projects
Stars: ✭ 287 (-55.02%)
Mutual labels:  raft
Copycat
A novel implementation of the Raft consensus algorithm
Stars: ✭ 551 (-13.64%)
Mutual labels:  raft
Odin
A programmable, observable and distributed job orchestration system.
Stars: ✭ 405 (-36.52%)
Mutual labels:  raft
Pysyncobj
A library for replicating your python class between multiple servers, based on raft protocol
Stars: ✭ 468 (-26.65%)
Mutual labels:  raft
Raft
An Elixir implementation of the raft consensus protocol
Stars: ✭ 369 (-42.16%)
Mutual labels:  raft
Dotnext
Next generation API for .NET
Stars: ✭ 379 (-40.6%)
Mutual labels:  raft
Elasticell
Elastic Key-Value Storage With Strong Consistency and Reliability
Stars: ✭ 453 (-29%)
Mutual labels:  raft
Bitraft
🎉A Bitcask Distributed Key/Value store using Raft for consensus with a Redis compatible API written in Go.
Stars: ✭ 348 (-45.45%)
Mutual labels:  raft
Async Raft
An implementation of the Raft distributed consensus protocol using the Tokio framework.
Stars: ✭ 510 (-20.06%)
Mutual labels:  raft
Godown
Distributed, fault-tolerant key-value storage written in go.
Stars: ✭ 352 (-44.83%)
Mutual labels:  raft
Nuraft
C++ implementation of Raft core logic as a replication library
Stars: ✭ 428 (-32.92%)
Mutual labels:  raft
Typesense
Fast, typo tolerant, fuzzy search engine for building delightful search experiences ⚡ 🔍 ✨ An Open Source alternative to Algolia and an Easier-to-Use alternative to ElasticSearch.
Stars: ✭ 8,644 (+1254.86%)
Mutual labels:  raft
Finn
Fast Raft framework using the Redis protocol for Go
Stars: ✭ 534 (-16.3%)
Mutual labels:  raft
Xenon
The MySQL Cluster Autopilot Management with GTID and Raft
Stars: ✭ 461 (-27.74%)
Mutual labels:  raft

Consensus: Bridging Theory and Practice

This repository contains Diego Ongaro's PhD dissertation, Consensus: Bridging Theory and Practice, published by Stanford University in 2014. The dissertation PDFs and the dissertation sources are licensed under the Creative Commons Attribution license, as described in the LICENSE file.

Several pre-built PDFs are included:

  • book.pdf: formatted for a printed book (8.5x11" pages, bigger inside margins for binding, black hyperlinks)
  • online.pdf: formatted for normal digital or print use (8.5x11" pages, consistent margins on all pages, blue hyperlinks)
  • online-trim.pdf: formatted for digital viewing (6.6x9.35" pages, minimal margins, blue hyperlinks)
  • stanford.pdf: exact file distributed by Stanford University (similar to online.pdf; copyright, signature, and preface pages differ)

All of these use the same page numbers starting at page 1, though book.pdf has an additional blank page before the introduction (page xviii).

The source materials for the dissertation are made available here in the hopes that they might be useful, for example, to reformat the dissertation for a different medium or to copy sections for use in other documents (per the LICENSE). It requires the following to build:

  • GNU make
  • pdflatex
  • bibtex
  • Inkscape (to convert SVG images and layers from SVG images to PDF format)

Updates and Errata

Chapter 3: Basic Raft algorithm

  • Figure 3.1 (cheatsheet): Although lastApplied is listed as volatile state, it should be as volatile as the state machine. If the state machine is volatile, lastApplied should be volatile. If the state machine is persistent, lastApplied should be just as persistent.

Chapter 4: Cluster membership changes

  • There's an important bug in single-server changes, fortunately with an easy fix. See the raft-dev post.

Chapter 6: Client interaction

  • "it would extends its lease" should read "it would extend its lease" (Figure 6.3 caption).

Chapter 7: Raft user study / Appendix A: User study materials

  • "Log Completeness" should read "Leader Completeness" (3x).

Chapter 8: Correctness / Appendix B: Safety proof and formal specification

  • The Verdi team at the University of Washington has completed a machine-checked proof of safety for the basic Raft algorithm in Coq. See the press release.
  • There have been a few minor updates to the TLA+ specification: https://github.com/ongardie/raft.tla.

Chapter 10: Implementation and performance

  • The first implementation of pipelining wasn't quite right and never made it into LogCabin's master branch. Issue 97 tracks this.

Bibliography

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