注意: 根据 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 |