Soft_Job 板


LINE

之前看到有人po国外CS的公开课,刚好最近把MIT 6.824的lab都写完了,来分享一下心得。 希望下面的心得可以帮助在写lab的人与让更多人一起来写lab:-) Q1: 这堂课与其他分散式系统的课差在哪里? 一般的课就是把分散式的手法与概念介绍过去,像lamport clock, raft, 各种consistency。 6.824每堂课都是由一篇又一篇的paper组成,带大家去看遇到的问题是什麽,他们是怎麽处理的、优缺点是什麽。 所以有人会说6.824上完後没有什麽架构,但其实只是6.824没有整个列出来而已。 一开始是单纯的single leader(GFS, vmware FT),但会有single failure; 後面有共识演算法(raft),让其他在leader死亡时可以接手,但是performance不好,也不能处理transaction; 为了处理transaction,就有了distributed transaction(2 phases-commit),performance当然不好,但目前没有什麽好方法; 但如果不追求强一致性,可以换来性能的提升(zookeeper, casual consistency); 不追求读写的效能提升,只追求read-only效能提升,就有了spanner与aurora; 前面的情境都是建立在彼此可信任不会有造假的前提(非拜占庭),面对有恶意、不能信任的user,fork consistency与blockchain应运而生。 另外还有上锁,在cache consistency中介绍悲观锁,在FaRM介绍乐观锁。 这让我想起读little schemer与seasoned schemer的时光,都是不明讲的。 Q2: lab在做什麽? lab1是做一个单机版的MapReduce。 lab2是根据raft paper做一个具有log compaction、log fast backtrack、基本raft功能的raft lib。 lab3是用lab2的raft做一个容错、线性一致的key-value database。 lab4是一个简化版的etcd,可以当成是做了shard的lab3。 Q3: lab做完会得到什麽? 1. 用golang实现一个raft与简化的etcd 2. 设计log与用log除错的能力 3. 会用lock 4. 成就感与耐心 Q3: lab1要注意什麽? 注意reducer的定义,剩下很简单(与後面的比)。 话说这lab可以只用atomic完成。 Q4: lab2要注意什麽? 1. 读raft paper,要知道raft的正确性来自哪里 2. 一开始只用一个lock就好,慢慢发展自然会看到哪边还需要lock 3. log的操作要做好抽象,不然做log compaction会改到吐 4. log要把所有改变的state印出来,lab到後面开始测unreliable会看到好几次才出现一次的bug 5. 写到一定程度要去读前TA的student guide 6. log fast backtrack有很多作法,教授有提供一种在raft2那一篇 7. lab页面上有raft结构与上锁的建议,也许可以参考看看(我没看),个人是 - 上lock要按照一定顺序 - 没有被lock保护的method可以加一些字表示没有上lock - 写到後面会忘记到底哪边有上lock,之後就默默deadlock 一般来说难以重现的bug出自下面3种情况: 1. rpc条件给错 => 回去看paper的figure 2 a. HeartBeat并不特别,heartbeat就是AppendEntries b. RequestVote的条件有没有错 - lab2a的投票没有涉及log,但是log是投票中很重要的条件,在lab2b的测试中lab2a没做好的部分会暴露出来 2. timer没有在对的时机reset => 回去看paper的figure 2 3. heartbeat或是election的时间太近 => 两者不能太近 另外丢log到client的部分可以拉出一个applier做,因为tester的channel是unbuffer,会撞student guide中提到的4-way deadlock。 还有写个脚本跑test,善用background job一次跑好几个test,自己写或是找TA的脚本都好。 在前往下一个lab之前,先把自己的raft多测几遍,越早找到bug越好。 Q5: lab3要注意什麽? 1. student guide中提到的re-appearing index,底下的raft可能经历换leader,要确认拿到的commit的term是对的 - 同时还要做timeout retry 2. 去重,rpc会有延迟、多次重试这要处理,其实就是加个sequence number 3. lab3有测试performance的部分,注意raft的persist有没有在不对的时候persist Q6: lab4要注意什麽? 1. lab4a的产生config演算法一定要是确定性的,同样的input同样的output(map的走访会变!!) 2. shard的分配config会有index,这是有意义的,利用它才能正确的做shard migration 3. challenge1虽然说是做gc,但我一直吃因timeout而产生的FAIL(明明都print passed了QQ),最後是调timeout的时间才ok的 Q8: golang有没有要注意的? 可以先看Russ Cox在2018的slide。 http://nil.csail.mit.edu/6.824/2018/notes/gopattern.pdf 这里的golang是1.17.x版。 1. map中struct的field是unaddressable,不能改 2. mutex没有tryLock 3. log可以直接用%v去印 4. goroutine中会变动的值(index之类)一定要从参数传进去,有的时候风格检查找不到 5. 传到rpc的东西要先copy一份,不然会有奇怪的panic 6. slice的copy是取两者最小的长度 7. slice的slice不一定会copy来产生新的slice 8. race detector要开,先修data race 9. built-in timer不是不能用,要去找正确用法 Q9: 个人而言做完lab有什麽收获? 1. 好的架构可以在扩展功能时会带领你到对的地方 2. lock怎麽与object融合在一起 Q10: 能不能公开code? 不行,他们还在上课。 Q11: 整个做完有什麽感想? 能修到这门课的学生是幸福的,lab很有趣。 也感谢MIT 6.824能公开这堂课。 另外同实验室的6.S081也是很棒的课,lab也有趣同时还有几乎是明示的暗示。 Q12: 推荐大家来写吗? 所有测试与scaffold都有,舞台就在那边,还不上吗? 希望这篇能帮到想写lab的人,以上。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.0.183 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1647023457.A.48B.html
1F:推 AgileSeptor: 推 03/12 02:31
2F:推 et84121: 推推 03/12 03:19
3F:推 worcdlo: 酷 03/12 03:33
4F:→ plsmaop: 你 lab4 所有的 challenge 都有完成吗? 03/12 08:41
有 challenge1只要在完成shard migration後直接把原本的shard删了就好 migration的方式有主动push或是自己pull push在完成push後就可以删了 pull要在puller完成pull後再通知pullee做gc (pull的rpc被call不代表对面真的完成migration) 所以pull需要两个rpc,但push只要一个,所以当时是做push challenge2只要确保正在migrate的shard不会被lock锁住不能回应get/put/append即可, 简单的作法: 调整lock的位置 更绝一点: 每个shard都给一个lock
5F:推 kuan: 推推 03/12 09:02
6F:推 holebro: 好酷 03/12 09:27
7F:推 MATT1899: 你好,之前那个公开课的文是我发的,我想请问一下这堂 03/12 09:59
8F:→ MATT1899: 课跟6.S081的难度差不多吗?我在做6.S081的时候有一些l 03/12 09:59
9F:→ MATT1899: ab都做不太下去,想问问看这堂课如何 03/12 09:59
这堂比较难,因为比较难debug,在这里debug只有log,但6.S081还有gdb可以用,有错,qemu连shell都进不去或是直接panic。 这里如果有错可能是测好几次出现一次,或是看起来有在动其实没有(leader选不出来或是shard推不出去)。 但log很~~~~~~~长,要在脑中replay这些主机到底在干嘛才能知道到底哪里错了。 然而还有一种情况是log没有印到关键状态,就只好加log再反覆跑,祈祷bug早点出现。 ※ 编辑: s9041200 (123.195.0.183 台湾), 03/12/2022 11:00:43
10F:推 alan23273850: 建议分享在 jserv 的系统讨论区 03/12 10:34
在哪阿? 麻烦大大指点一下
11F:推 plsmaop: 我觉得这堂比 6.S081 难 03/12 10:35
12F:推 linnom: 比6.s081难 我两个都进行中,6.s081只要xv6 book读熟都还蛮 03/12 10:48
13F:→ linnom: 容易的 03/12 10:48
※ 编辑: s9041200 (123.195.0.183 台湾), 03/12/2022 12:31:14
14F:→ alan23273850: https://facebook.com/groups/system.software2022 03/12 12:35
15F:推 drysor: 推推 03/12 12:38
16F:推 longlyeagle: nice nice 03/12 12:43
17F:推 drajan: 该退 03/12 14:00
18F:推 gagalala: 还没开始写lab 但感谢分享! 03/12 14:18
19F:推 maoxing: 推,最近也想要修,请问楼主包含上课大概花多久时间 03/12 14:28
上课: 一个礼拜 lab: 刚刚看了一下commit,大概一个月
20F:推 yoche2000: 推 这真的很棒 03/12 15:24
21F:推 schemer: 推 ,感觉很有趣 03/12 16:40
22F:推 oscillator: 谢谢分享 03/12 17:32
23F:推 touurtn: 好精实@@ 03/12 17:55
24F:推 godsparticle: 好认真 03/12 18:01
25F:推 inte629l: 推 03/12 18:11
26F:推 johnny94: 其实如果有实际在工作上处理分散式系统学过一些零散知识 03/12 18:56
27F:→ johnny94: 的话,可以看出这门课的安排是有它的逻辑在的 03/12 18:56
我是前面有去看过其他课的材料与DDIA,才感受到课程安排的逻辑 一切尽在不言之中
28F:推 daddy29: 用GOLANG 轻松多了 03/12 19:30
※ 编辑: s9041200 (123.195.0.183 台湾), 03/12/2022 20:49:10
29F:推 hjtiun852: 推推 事情忙完也来看看 先收藏了 03/12 20:49
30F:推 plsmaop: 我剩 challenge 1没弄,好懒 03/13 00:02
31F:推 nctukmdick: 真有毅力 03/13 05:23
32F:推 yoche2000: 推 感谢 03/13 13:52
33F:推 jasonwung: 推推 03/15 12:35
34F:推 argc: 感谢分享 03/19 15:18
35F:推 vvind: 推推 03/28 15:57







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP