{"id":13620427,"url":"https://github.com/WilliamX1/cse-2021","last_synced_at":"2025-04-14T19:32:07.662Z","repository":{"id":113071214,"uuid":"413110901","full_name":"WilliamX1/cse-2021","owner":"WilliamX1","description":"A distributed file system similar to Google File System (GFS).","archived":false,"fork":false,"pushed_at":"2022-02-09T15:31:20.000Z","size":165526,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-08T06:41:40.804Z","etag":null,"topics":["distributed-file-system","gfs","mapreduce","raft","rpc"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WilliamX1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-10-03T15:05:01.000Z","updated_at":"2024-06-02T05:07:57.000Z","dependencies_parsed_at":"2023-09-26T03:54:53.741Z","dependency_job_id":null,"html_url":"https://github.com/WilliamX1/cse-2021","commit_stats":{"total_commits":48,"total_committers":7,"mean_commits":6.857142857142857,"dds":0.6041666666666667,"last_synced_commit":"36c56d63cdd07b52ee4adc7bb599f4ee9422e848"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamX1%2Fcse-2021","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamX1%2Fcse-2021/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamX1%2Fcse-2021/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamX1%2Fcse-2021/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WilliamX1","download_url":"https://codeload.github.com/WilliamX1/cse-2021/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248946005,"owners_count":21187429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed-file-system","gfs","mapreduce","raft","rpc"],"created_at":"2024-08-01T21:00:55.675Z","updated_at":"2025-04-14T19:32:05.533Z","avatar_url":"https://github.com/WilliamX1.png","language":"C++","funding_links":[],"categories":["课程列表"],"sub_categories":["CSE (yfs lab, MIT 6.033)"],"readme":"# cse-2021-fall\n\n很难想象，在大三上学期我上到了一门特别有趣，看似科普实际上却干货满满的课程 ~ 计算机系统工程。软件学院夏虞斌老师为这门课赋予了灵魂，而这四个 lab 则加深了我对计算机系统的了解。\n\n`注：每个 lab 可以从不同分支处找到，每个 lab 都是基于前一个 lab 进行实现的。`\n\n## 目录\n\n- [目录](#目录)\n- [Lab 1: Basic File System](#Lab-1-Basic-File-System)\n- [Lab 2: Word Count with MapReduce](#Lab-2-Word-Count-with-MapReduce)\n- [Lab 3: Fault-tolerant Key-Value Store with Raft](#Lab-3-Fault-tolerant-Key-Value-Store-with-Raft)\n- [Lab 4: Shard Transactional KVS Service](#Lab-4-Shard-Transactional-KVS-Service)\n  \n## Lab 1: Basic File System\n\n在 lab 1 中，我完成了一个 File System 的雏形。\n\nPART1 中完成了 `CREATE`, `GETATTR`, `PUT`, `GET`, `REMOVE` 这五个系统 API。\n\nPART2 中完成了 `CREATE`, `MKNOD`, `LOOKUP`, `READDIR`, `SETATTR`, `WRITE`, `READ`, `MKDIR`, `UNLINK`, `SIMBOLIC LINK` 这几个基于底层的拓展 API。\n\n参考文档在 [**这里**](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab1.html)，感谢 **沈嘉欢** 学长负责这个 lab 并为我提供了许多帮助。\n\n## Lab 2: Word Count with MapReduce\n\n在 lab2 中，我完成了一个 MapReduce 的工具，通过 RPC 调用实现了分布式系统上的单词数量统计。\n\nPART1 中完成了一个单机单线程的 MapReduce 工具。\n\nPART2 中完成了一个分布式多线程的 MapReduce 统计。\n\n参考文档在 [**这里**](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab2.html)，感谢 **李明煜** 学长负责这个 lab 并为我提供了许多帮助。\n\n## Lab 3: Fault-tolerant Key-Value Store with Raft\n\n在 lab3 中，我完成了一个 Raft 的 Key-Value 存储，基于 [Raft 论文](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab3-assets/raft.pdf)。\n\nPART1 中完成了 Leader 选举。\n\nPART2 中完成了日志备份。\n\nPART3 中完成了日志的持久化存储。\n\nPART4 中完成了快照存储。\n\nPART5 中完成了一个可容错的键值对存储。\n\n参考文档在 [**这里**](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab3.html)，感谢 **韩明聪** 学长负责这个 lab 并为我提供了许多帮助。\n\n## Lab 4: Shard Transactional KVS Service\n\n在 lab4 中，我完成了一个分片的支持事务的 Key-Value 存储服务。\n\nPART1 中完成了将键值对分区到多个分片客户端，并且完成了 Two Phase Commit 事务支持。\n\nPART2 中加入了 RAFT 元素。\n\nPART3 中完成了锁相关的操作。\n\n参考文档在 [**这里**](https://ipads.se.sjtu.edu.cn/courses/cse/labs/lab4.html)，感谢 **陆放明** 学长负责这个 lab 并为我提供了许多帮助。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWilliamX1%2Fcse-2021","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWilliamX1%2Fcse-2021","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWilliamX1%2Fcse-2021/lists"}