- MIT 6.824 distributed system C++ Version
MIT6.824的cpp实现, 大多数解释我都写到代码的注释里了,可直接看代码。 lab4还没有完成。
- 使用
C++
的thread
、mutex
、condition_variable
、semphore
等底层同步原语进行多线程编程; - 基于
ZeroMQ
实现了一个轻量级RPC
,提供客户端调用超时选项,客户端与服务端自动重连机制等; - 实现了一个
MapReduce
并行处理框架,包含任务timeout重发机制、worker-stateless等机制; - 实现了Raft共识算法,包括leader select、日志复制、日志压缩等机制;
- 基于以上 Raft 算法,实现了一个高可用的 KV 存储服务;
- 遵循
RAII
管理资源,如使用智能指针管理内存,减小resource leak
风险。 - 使用
gdb
进行调试,使用clang
系列工具进行代码静态检查和风格统一。
- 操作系统:
Ubuntu 20.04 LTS
- 编译器:
clang++ 10.0.0-4ubuntu1
- 编辑器:
vscode
- 版本控制:
git
- 项目构建:
cmake 3.16.3
项目依赖
cmake
sudo apt update
sudo apt install cmake
ZeroMQ
(for rpc)
sudo apt update
sudo apt install libzmq3-dev libczmq-dev
下载项目
git clone [email protected]:GuohongXie/ryan_cc_MIT6824.git
执行脚本构建项目
cd ./ryan_cc_MIT6824 && bash build.sh
- lab 4 完成得不是很好
- 代码总体还比较粗糙,有很多值得优化的地方
- mapreduce 未确保每个task的原子性,且可以补充一个心跳机制