1 unstable release
Uses old Rust 2015
0.1.0 | Jan 29, 2017 |
---|
#10 in #distributed-lock
31KB
640 lines
Rubbish - Sort of like Chubby, but in Rust .. Rubbish.
Rubbish is a lock service and low-volume storage service with strong consistency guarantees, designed to provide the basis for loosely-coupled distributed systems.
It's also a chance to get some practice writing a full-sized application in Rust.
The components of the system are as follows:
-
cas
-- a distributed, content-addressible, in-memory storage system. The system uses a "gossip"-style protocol to ensure that all participants have all content, and supports generational garbage collection and persistence to disk. -
fs
-- a Git-like versioned filesystem, based oncas
. This includes the idea of a "commit" with parent commits and a nested tree structure associated with each commit. -
prax
-- a distributed consensus service, designed to vote on the current head of the treeish commit tree and to define the current "master" node. -
tip
-- a layer on top of treeish and prax, supporting remote client operations such as read, write, check-and-swap, and advisory locks. The provided client interface is HTTP.
The entire application is, of course, a work in progress.
TODO
Single-Hosted
Finish this application in a non-networked state
- Implement prax API
- Implement tip HTTP API
- Implement generational garbage collection between cas and fs
Distribute
- Build a network interface
- Teach cas to gossip
- Teach prax to reach consensus
Misc
- Travis
- Enforce rustfmt
- Run coverage
Dependencies
~5MB
~73K SLoC