注意: 根据 MIT 课程要求,你的 Raft 代码仓库应为 私有(PRIVATE) 类型。
Raft is a consensus algorithm for managing a replicated log. It allow a collection of machines to work as a coherent group that can survive all all non-Byzantine conditions, including network delays, partitions, and packet loss, duplication, and reordering. According to the Raft paper, it is more understandable than Paxos.
- Learn Golang
- Understand and implement the Raft algorithm
- Build a key/value service on top of Raft (ACM Class)
- Add log compaction for your Raft (bonus)
See Tutorial.md in doc/
.
Part | ACM Class |
---|---|
Lab 2A | 20% |
Lab 2B | 30% |
Lab 2C | 30% |
Lab 2D | extra 3% |
Lab 3A | extra 4% |
Lab 3B | extra 3% |
Code Review | 20% |
For each lab, we will run the test for
-
For a required lab, your score of this lab will be
$$\left\lceil\frac{\max\{t-200,0\}}{2}\right\rceil\times 0.01\times S.$$ -
For a bonus lab, your score of this lab will be
$$(\max\{t-380,0\})^2\times 0.0025\times S.$$
Week | Day | ACM Class |
---|---|---|
3 | 7/3 |
1. Learn Golang
2. Read extended Raft paper
|
7/4 | ||
7/5 | ||
7/6 | ||
7/7 | ||
7/8 | Break | |
7/9 | ||
4 | 7/10 | 1. pass Lab 2A 2. try to pass Lab 2B |
7/11 | ||
7/12 | ||
7/13 | ||
7/14 | ||
7/15 | Break | |
7/16 | ||
5 | 7/17 | 1. debug your code of Lab 2B 2. pass Lab 2C (2A & 2B) 3. learn something about consistency 4. try Lab 3A (bonus) |
7/18 | ||
7/19 | ||
7/20 | ||
7/21 | ||
7/22 | Break | |
7/23 | ||
6 | 7/24 | 1. try Lab 3A (bonus) 2. try Lab 2D & 3B (bonus) |
7/25 | ||
7/26 | ||
7/27 | ||
7/28 | Code Review |