Nenhuma descrição

Jing Yang ee2a652716 Add readme. 5 anos atrás
src 92acf0470a Add a comment about threads. 5 anos atrás
tests 2250d4d4c2 Two more minor async bugs. 5 anos atrás
.gitignore c5649d974f Ignore project files. 5 anos atrás
Cargo.toml 2a69e5f5d2 Upgrade to tokio 0.3 5 anos atrás
README.md ee2a652716 Add readme. 5 anos atrás
rustfmt.toml 3c80c4ae2b Implement the RPC layer. 5 anos atrás

README.md

Ruaft: Raft implemented in Rust

Ruaft is a Rust version of the Raft consensus protocol. The name is clearly made up.

At the moment it is a gigantic class lives in a single file. It exposes 4 APIs, to create a Raft instance (new()), start a new contract (start()), get the current status (get_status()) and shut it down (kill()). When a consensus is reached, it notifies the clients via an apply_command callback. It saves its internal state to local disk via a persister, which is supplied at creation.

There are also two half-APIs: process_append_entries() and process_request_vote(), serving requests from other Raft instances of the same setup.

The implementation is thoroughly tested. I copied the tests from an obvious source. To avoid being indexed by a search engine, I will not name the source. The testing framework from the same source is also translated from the original Go version. The code can be found at labrpc repo.

Next steps

  • Split into multiple files
  • Add public documentation
  • Add a proper RPC interface to all public methods
  • Benchmarks