A distributed key/value storage system with Golang that stay consistent between raft-based replica servers.
- Implemented a simplified version Raft consistency protocol, except leader election.
- Replicate Operation Log between replica servers to guarantee consistency and achieve Version Control.
- Isolate file meta and file storage and Storing file hash value and file block data in MongoDB to avoid duplicate file.
- Applied Goroutines, Channels, and RPCs to enable Remote, Concurrent Parallel communication between servers.
Run BlockStore server:
$ make run-blockstore
Run RaftSurfstore server:
$ make IDX=0 run-raft
Test:
$ make test
Specific Test:
$ make TEST_REGEX=Test specific-test
Clean:
$ make clean