Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/WilliamX1/cse-2021
A distributed file system similar to Google File System (GFS).
https://github.com/WilliamX1/cse-2021
distributed-file-system gfs mapreduce raft rpc
Last synced: 5 days ago
JSON representation
A distributed file system similar to Google File System (GFS).
- Host: GitHub
- URL: https://github.com/WilliamX1/cse-2021
- Owner: WilliamX1
- Created: 2021-10-03T15:05:01.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-02-09T15:31:20.000Z (almost 3 years ago)
- Last Synced: 2023-12-19T16:07:04.453Z (11 months ago)
- Topics: distributed-file-system, gfs, mapreduce, raft, rpc
- Language: C++
- Homepage:
- Size: 158 MB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-se - WilliamX1-2019
README
# cse-2021-fall
很难想象,在大三上学期我上到了一门特别有趣,看似科普实际上却干货满满的课程 ~ 计算机系统工程。软件学院夏虞斌老师为这门课赋予了灵魂,而这四个 lab 则加深了我对计算机系统的了解。
`注:每个 lab 可以从不同分支处找到,每个 lab 都是基于前一个 lab 进行实现的。`
## 目录
- [目录](#目录)
- [Lab 1: Basic File System](#Lab-1-Basic-File-System)
- [Lab 2: Word Count with MapReduce](#Lab-2-Word-Count-with-MapReduce)
- [Lab 3: Fault-tolerant Key-Value Store with Raft](#Lab-3-Fault-tolerant-Key-Value-Store-with-Raft)
- [Lab 4: Shard Transactional KVS Service](#Lab-4-Shard-Transactional-KVS-Service)
## Lab 1: Basic File System在 lab 1 中,我完成了一个 File System 的雏形。
PART1 中完成了 `CREATE`, `GETATTR`, `PUT`, `GET`, `REMOVE` 这五个系统 API。
PART2 中完成了 `CREATE`, `MKNOD`, `LOOKUP`, `READDIR`, `SETATTR`, `WRITE`, `READ`, `MKDIR`, `UNLINK`, `SIMBOLIC LINK` 这几个基于底层的拓展 API。
参考文档在 [**这里**](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab1.html),感谢 **沈嘉欢** 学长负责这个 lab 并为我提供了许多帮助。
## Lab 2: Word Count with MapReduce
在 lab2 中,我完成了一个 MapReduce 的工具,通过 RPC 调用实现了分布式系统上的单词数量统计。
PART1 中完成了一个单机单线程的 MapReduce 工具。
PART2 中完成了一个分布式多线程的 MapReduce 统计。
参考文档在 [**这里**](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab2.html),感谢 **李明煜** 学长负责这个 lab 并为我提供了许多帮助。
## Lab 3: Fault-tolerant Key-Value Store with Raft
在 lab3 中,我完成了一个 Raft 的 Key-Value 存储,基于 [Raft 论文](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab3-assets/raft.pdf)。
PART1 中完成了 Leader 选举。
PART2 中完成了日志备份。
PART3 中完成了日志的持久化存储。
PART4 中完成了快照存储。
PART5 中完成了一个可容错的键值对存储。
参考文档在 [**这里**](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab3.html),感谢 **韩明聪** 学长负责这个 lab 并为我提供了许多帮助。
## Lab 4: Shard Transactional KVS Service
在 lab4 中,我完成了一个分片的支持事务的 Key-Value 存储服务。
PART1 中完成了将键值对分区到多个分片客户端,并且完成了 Two Phase Commit 事务支持。
PART2 中加入了 RAFT 元素。
PART3 中完成了锁相关的操作。
参考文档在 [**这里**](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab4.html),感谢 **陆放明** 学长负责这个 lab 并为我提供了许多帮助。