mit6.824 2022
写在前面
两年前写过一次6.824,一直卡在2c没过去,就放弃了。当时只看了A Tour of GO,对GO也不怎么熟悉,现在看了一遍《Go程序设计语言》后再写一遍这些实验,锻炼一下GO语言能力。这篇博客只是简单记录一些实验过程中遇到的问题与收获,并不具备太多参考性。
lab地址:
6.824: Distributed Systems
优秀的博客/链接推荐:
如何的才能更好地学习 MIT6.824 分布式系统课程?
实效Go编程
raft_translation
raft可视化
Students’ Guide to Raft
Raft Q&A
Debugging by Pretty Printing
Lab guidance
Raft Locking Advice
Raft Structure Advice
SOFAJRaft 日志复制 - pipeline 实现剖析 | SOFAJRaft 实现原理
raft在处理用户请求超时的时候,如何避免重试的请求被多次应用?
一致性模型与共识算法
8.MIT 6.824 LAB 4B(分布式shard database) 西部小笼包
前期环境准备
运行环境:Windows vscode remote ssh + Ubuntu 虚拟机
1 |
|
由于我比较喜欢用fish,故直接在/etc/environment 设置各个环境变量
1 |
|
由于想验证环境变量的有效性,故意写错路径名,使得PATH环境设置错误,没想到重启后输入密码登陆后又跳到登陆界面,后只能通过命令行页面暂时设置环境变量,通过vim修改/etc/environment内容才正常运行,所以请仔细设置环境变量!
Golang环境变量设置详解
Linux中设置和显示环境变量
ubuntu输入密码登陆后又跳到登陆界面解决方案
关于环境变量/etc/environment
vscode安装一些常用的go扩展,一直install失败,通过设置GOPROXY为https://goproxy.io,direct才成功安装。
1 |
|
MapReduce
Raft
Fault-tolerant Key/Value Service
MIT6.824 2022 Fault-tolerant Key/Value Service
Sharded Key/Value Service
MIT 6.824 Sharded Key/Value Service
写在后面
因为要忙其他项目,断断续续地写这几个实验,主要时间就花在了通过lab2b和lab4b上了,整体的难度lab2>lab4>lab3>lab1。通过这个实验,对go语言,raft算法,并发程序调试方面有了更深的理解,也让我熟悉了使用vscode进行debug。之前我要么使用vs自带的调试功能,要么使用gdb,没怎么用过vscode的运行与调试功能,确实挺好用的,可以方便地查看各个goroutine的状态。
找个时间优化一下各个实验的代码
通过截图
MapReduce
raft部分
测试脚本
1 |
|