Skip to content

A Repo for MIT-6.824 Distributed System Course Projects

Notifications You must be signed in to change notification settings

SeeYouStellar/MIT-6.824

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MIT6.824

language source

References 🔗

  1. Schedule of Lectures
  2. Go Tour
  3. Domestic Video Resources

lab1: MapReduce

::clipboard: test

single test

multiple tests

💡 something useful:

  1. if you have no idea about the lab,When you have no idea, you can start with this video. This person’s idea at the beginning is wrong, so you will not get a useful implementation method directly. You only need to watch the first 2 videos to have a new view on this lab.
  2. 📄 my experiment note

lab2: Raft

lab2A leader election

::clipboard: test

single test

multiple test

💡 something useful:

  1. go-test-many.sh, this file is used for many times test, which is run as bash go-test-many.sh [Times] [Parallel test number] [test subset]
  2. 📄 my experiment note

lab2B log replica

single test

multiple test

💡 something useful:

  1. 📄 my experiment note
  2. Students' Guide to Raft
  3. Q&A about labIt is recommended to read this Q&A after read the Students' Guide to Raft and finish the experiment. If you can answer all the questions, then you fully understand raft.In most cases, you will find that many of the questions are puzzles that you will also encounter when reading the paper.

💡 TODO:

  1. TestBackup2B takes too much time. The time given by the course website is 17.2s. The granularity of the lock needs to be improved.
  2. I use time.Timer to implement ticker thread,the course website recommand time.Sleep(). I will build other branch named Lab2A to complete the Lab2A soon.
  3. The implement logic of RequestVote RPC and AppendEntries RPC maybe not best, should rebuild soon.

lab2C Persistence

single test

multiple test

💡 something useful:

  1. 2C的测试代码中cfg.crash(server)表示的是使server宕机,而cfg.unconnect(server)表示的是形成网络分区,将该server与其他server断开网络连接,crash表示server内存中数据丢失需要使用持久化恢复,而unconnect后数据不会丢失。
  2. 📄 my experiment note

lab2D log compaction

single test

multiple test

💡 something useful:

  1. (一个完整的基于raft的应用)[https://pdos.csail.mit.edu/6.824/notes/raft_diagram.pdf],描述了上层应用层、状态机层、raft实例层、持久化层之间的相互联系,方便理解快照的作用
  2. 📄 my experiment note

lab3: KV Raft

lab3A Key/value service without snapshots

single test

Key/value service with snapshots

lab4: Sharded KV

About

A Repo for MIT-6.824 Distributed System Course Projects

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published