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/m.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燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP