This project is followed with Talent Plan from PingCAP University. Origin README can find here
labcodec
: encode and decode message in the RPC networklabrpc
: simulate a distributed network with multi-node and RPC service between nodeslinearizability
: some test for linearizability (maybe not used)percolator
:- a system built by Google for incremental processing on a very large data set.
- It also provides a distributed transaction protocol with ACID snapshot-isolation semantics
- origin paper: Large-scale Incremental Processing Using Distributed Transactions and Notifications
- see more in percolator/README.md
raft
:- a series of labs on a key/value storage system built with the Raft consensus algorithm.
- These labs are derived from the lab2:raft and lab3:kvraft from the famous MIT 6.824 course but rewritten in Rust.
- origin paper: In Search of an Understandable Consensus Algorithm (Extended Version)
- see more in raft/README.md
report
: some log output file
- similar with MIT 6.824 but rewrite all test code in Rust by Talent Plan
- writen with pure Rust and ProtoBuf protocol
- use
prost
to parse ProtoBuf message - use
log
andenv_logger
as log format - largely use
futures
andtokio
to achieve asynchrony
- Raft (lab 2)
- 2A: leader election and heartbeat
- 2B: log entry and append entries
- 2C: persist and unliable network
- All tests passed
- KvRaft (lab 3)
- 3A: server/client query
- 3B: log compaction and install snapshot
- All tests passed
- Percolator
- Server: TimestampOracle
- Server: KvTable and MemoryStorage
- Server: Get, Prewrite, Commit
- Client: Set, Get, Commit
- All tests passed
- Raft and KvRaft
- add more comment
- prune some condition to make program clear
- Percolator
- improve 2PC logic
- improve lock conflict and back-off/roll-forward