In the project, we present a distributed key value store which uses Raft as backbone support for providing consensus and failure handling. The application will handle common failures like network partition or node failure, and only fail to respond when the majority of all working servers fail. It should also be able to handle new server join or a scenario of rejoining when previously failed servers are back online.
The pdf version of proposal and report are under report/. It might not be the most up-to-date one so the google docs is more preferable.
There are also some shiviz logs that can used for visulization in the docs/
We would like to give credit to the various resources online about raft implmentations and distributed kv systems:
- Raft
- Raft Extended Paper
- UIUC Slides
- MIT 6.824 Student Repo: We didn't copy the code but only read the repo to get a sense about how raft should be implemented. Our raft is also different from theirs in order to integrate into our server setting
- MIT 6.824 Spec
- hashicorp/raft
- TiKV