May 14th, 2015
##前言:
主要是Golang.Tw上面有人在問,加上這門課程的作業本身是使用Golang來開發.就還蠻有興趣玩玩看.
課程鏈結在這裡.6.824: Distributed Systems
MIT 6.824 分散式系統 系列文章
- [MOOCS][Golang]MIT6_824 Distributed Systems Week2(Lec2/Lab2A)
- [MOOCS][Golang]MIT6_824 Distributed Systems Week2(Lec2/Lab2A)
- [MOOCS][Golang]MIT6_824 Distributed Systems Week2(Lec2/Lab2B)
- [MOOCS][Golang]MIT6_824 Distributed Systems Week3- About Paxos Algorithm
- [MOOCS][Golang]MIT6_824 Distributed Systems Week4- 關於Consensus協定 Raft 學習(一): 簡介,資料格式與領導者選舉
##第一週課程:
###Paper1: 鼎鼎大名的Google Mapreduce 論文: 課程內容主要是要讀鼎鼎大名的mapreduce系統論文.
###Lab1: 寫一個簡單的Map跟Reduce 然後來寫一個Lab1 Word Count的小程式.裡面主要要完成兩個functions:
- Map: 把文章裡面的字拆出來後,放入一個List. List 裡面的內容是文字與出現的次數.
- Reduce: 就每個檔案裡面的所以出現單字找出來,並且回傳它的加總.
課程算很簡單,主要是要對於mapreduce有基本的了解.我一開始不是很了解,比對了參考文章內的內容跟論文演算法就看懂了. 其實還挺有趣的. 寫完裡面還有go test 可以去驗證你的想法有沒有問題.
###簡單介紹RPC
第一週後半段其實還有一部分是RPC的部分,還好最近有點研究.所以也很快地讀完筆記.
主要講解內容如下:
- 什麼是RPC Server.
- RPC 架構下會有什麼問題? (斷線,命令未收到,命令未完成)
- 如何解決:
- “最少一次”:
- 優點: 可以確認server有執行到.
- 使用範圍:
- 可以用: 重複性質的讀取
- 不能使用: 存款
- “最多一次” (Go RPC就是這種)
- 會把重複的需求挑出來,直接回答上一次的結果而不是再跑一次.
- 怎麼分辨是不是重複: 透過unique ID.
- Lab2 要玩這部分.
- “剛好一次”:
- 也就是最多一次的系統加上unbounded retries跟容錯設計.Lab3要玩這個.
- “最少一次”:
- Go thread:
- 何時使用Go channel 何時使用 shared memory + lock:
- Channels: 確定要兩個thread互相溝通,一個等待另一個回傳.
- Shared memory + locks: 需要共用資料,但是不需要等待另一個結果.
- 何時使用Go channel 何時使用 shared memory + lock:
##參考文章: