注意: 根据 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 | 15% |
| Lab 2B | 25% |
| Lab 2C | 25% |
| Lab 2D | extra 5% |
| Lab 3A | 15% |
| Lab 3B | extra 5% |
| 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 |
|---|---|---|
| 1 | 6/25 |
1. Learn Golang
2. Read extended Raft paper
|
| 6/26 | ||
| 6/27 | ||
| 6/28 | Break | |
| 6/29 | ||
| 2 | 6/30 | 1. pass Lab 2A 2. pass Lab 2B 3. try to pass Lab 2C |
| 7/1 | ||
| 7/2 | ||
| 7/3 | ||
| 7/4 | ||
| 7/5 | Break | |
| 7/6 | ||
| 3 | 7/7 | 1. pass Lab 2C 2. learn something about consistency 3. try Lab 3A |
| 7/8 | ||
| 7/9 | ||
| 7/10 | ||
| 7/11 | ||
| 7/12 | Break | |
| 7/13 | ||
| 4 | 7/14 | 1. pass Lab 3A 2. try Lab 2D & 3B (bonus) |
| 7/15 | ||
| 7/16 | ||
| 7/17 | ||
| 7/18 | Code Review |