GetaKV is a Shard Key/Value System using Raft to support distributed fault-tolerance. It is based on the labs of MIT-6.824.
-
Lab1: MapReduce ✅
-
Lab2: Raft ✅
- Lab2A: Leader Election ✅
- Lab2B: Log Replication ✅
- Lab2C: Persistent States ✅
- Lab2A: Leader Election ✅
-
Lab3: Raft KV ✅
- Lab3A: KV on Raft ✅
- Lab3B: Log Compaction / Snapshot ✅
-
Lab4: Shard KV ✅
- Lab4A: Shard Master ✅
- Lab4B: Sharded KV Server ✅
-
Improvement
- Add simple parser and persistent file to save.
- More clear structure.
Latest progress: Lab4B finished.
(Vote mechanism and some other details are not included)
-
Test
If you want to test, you can(test for raft is similar):
cd src/kvraft # or `cd raft` go test
If you want to run particular test:
cd src/kvraft go test -run 3B
If you want to run test in batch, you can run the script:
cd src/kvraft ./test_batch.sh
You may need to modify the srcipt file to do your own batch-test.
-
Run single node KV Raft
cd src/main go run kvsingle.go
- Raft KV
- KV system(single node)
- Sharded KV