2020 MIT 6.824 分佈式系統課程


MIT 6.824,筆者在幾年前刷完了一遍,過程還是相當折磨人的,但受益頗多。如今已是 2020 年了,這個特殊的一年,筆者想和大家一起拿起小板凳,準備好筆記本,再來完整地學習 MIT Spring 2020 課程。

可能有讀者開始腦補了,說了半天,還不知道 MIT 6.824 是什麼。

不用擔心,筆者下面會詳細介紹這門非常有名的網上公開課,對於已經知道的博學的讀者就溫故而知新吧。

MIT 6.824

MIT 6.824 是麻省理工的一門關於分佈式系統的課程,該課程由 12 個單元組成的核心研究生科目,包括演講、閱讀、編程實驗室、可選項目、期中考試和期末考試。課程介紹了工程分佈式系統的抽象和實現技術,主要主題包括容錯、複製和一致性。該課程的大部分內容包括研究和討論分佈式系統的案例研究。

這裏插播一條好消息,MIT 2020 年春季學期的課程已經公開了官方視頻,方便全世界一起學習,估計有的讀者可能回憶起以前 MIT 6.824 那種偷拍的模糊不清的視頻。

課程表

先來看一下 2020 年春季 MIT 6.824 的課程表(6.824 Schedule: Spring 2020)。 

讀者可以直接訪問 MIT 官方課程表地址 。

https://pdos.csail.mit.edu/6.824/schedule.html

知識點

爲了便於讀者是否下定決心參與本門課程學習,筆者將所有課程的知識點概括性地羅列一下,現在不會寫的太細,以後針對每門課會有較爲完善的筆記,作爲參考。

  • 課程 1. 分佈式系統介紹

    閱讀 MapReduce 論文[1] 

    涉及 Lab 1,使用 Go 語言完成 MapReduce 實驗。

[1] https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf

  • 課程 2. RPC 和 Threads

    介紹基礎實施 RPC 網絡通信和多線程,另外 在線練習[1] 使用 Go 實現一些功能,比如爬蟲、K/V 存儲。另外也可以使用 教程[2] 學習 Go 語言。

[1] http://tour.golang.org/ 

[2] https://golang.org/doc/effective_go.html

  • 課程 3. GFS

    閱讀 GFS 論文[1]

    學習 GFS 案例。大部分讀者熟悉的 HDFS 最早就是根據 GFS 的論文概念模型來設計實現的。

[1] https://pdos.csail.mit.edu/6.824/papers/gfs.pdf

  • 課程 4. 主從複製

    閱讀 容錯虛擬機實用系統的設計論文[1]

    主從複製實現容錯,提供高可用。

[1] https://pdos.csail.mit.edu/6.824/papers/vm-ft.pdf

  • 課程 5. Go、Threads 和 Raft

    閱讀 Go Memory Model[1]

    介紹 Go 方面的知識,包括內存模型、goroutines 機制和閉包等。

[1] https://golang.org/ref/mem

  • 課程 6. 容錯:Raft (1)

    閱讀 Raft 論文[1]

    分佈式共識是一個人們已經研究了幾十年的難題,本節課介紹 Raft 選舉和 log 處理。記得以前課程好像是 Paxos,比較難理解,筆者把論文看了幾遍才懵懂。換成 Raft 相對容易理解,以及易於工程實現。Lab 2A 和 2B 要求基於 Raft 完成實驗。

[1] https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf

  • 課程 7. 容錯:Raft (2)

    繼續閱讀 Raft 論文[1]

    本節課介紹 Raft 持久化、客戶端交互行爲和 snapshots,其中包括 Lab 2C 和 3 的實驗。

[1] https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf

  • 課程 8. Zookeeper

    閱讀 Zookeeper 論文[1]

    Zookeeper 案例學習。Zookeeper 在大數據生態系統中佔據着重要地位,不少產品都使用到了 Zookeeper,比如 Kafka、Hadoop、HBase 等。

[1] https://pdos.csail.mit.edu/6.824/papers/zookeeper.pdf

  • 課程 9. 更多的複製,CRAQ

    閱讀 CRAQ 論文[1]

    本節課包括 Lab 3 實驗,使用 Lab 2 中的 Raft 庫構建一個容錯的 K/V 存儲服務。

[1] https://pdos.csail.mit.edu/6.824/papers/craq.pdf

  • 課程 10. 雲複製數據庫,Aurora

    閱讀 Aurora 論文[1]

    Amazon Aurora 全球數據庫針對全球分佈式應用程序而設計,允許單個 Amazon Aurora 數據庫跨越多個 AWS 地區。它在不影響數據庫性能的情況下複製數據,在每個地區中實現低延遲的快速本地讀取,並且在發生地區級的中斷時提供災難恢復能力。

[1] https://pdos.csail.mit.edu/6.824/papers/aurora.pdf

  • 課程 11. 緩存一致性

    閱讀 Frangipani 論文[1]

    Frangipani 的目標是強一致性且用戶無感知的文件系統,所以運行在 kernel 層。Frangipani 還擁有很好的擴展能力。學習的時候,可以和 GFS 進行對比,會發現很多彩蛋。

[1] https://pdos.csail.mit.edu/6.824/papers/thekkath-frangipani.pdf

  • 課程 12. 分佈式事務

    提供 閱讀材料[1]

    討論的主題是 distributed transactions = concurrency control + atomic commit 。

[1] https://ocw.mit.edu/resources/res-6-004-principles-of-computer-system-design-an-introduction-spring-2009/online-textbook/

  • 小插曲

    期中考試,內容覆蓋課程 1 到 11,以及包括 Lab 1 和 2。

  • 課程 13. Spanner

    閱讀 Spanner 論文[1]

    Spanner 是 Google 公司研發的具備可擴展的、多版本、全球分佈式、同步複製數據庫。另外,完成 Lab 4,具有分片功能的 K/V 服務。

[1] https://pdos.csail.mit.edu/6.824/papers/spanner.pdf

  • 課程 14. 樂觀併發控制

    閱讀 FaRM 論文[1]

    FaRM 是主內存分佈式計算平臺,它可以爲分佈式事務提供嚴格的 Serializability、高性能、持久性和高可用性。FaRM 在具有 4.9 TB 數據庫的 90 臺計算機上實現了每秒 1.4 億個TATP 事務的峯值吞吐量,並且可以在不到 50 毫秒的時間內從故障中恢復,實現這些結果的關鍵是從最初的原理設計新的事務、複製和恢復協議。

[1] https://pdos.csail.mit.edu/6.824/papers/farm-2015.pdf

  • 課程 15. Fast RPC

    閱讀 Fast RPC 論文[1]

    在不修改核心 Raft 源代碼的情況下,將生產級的 Raft 狀態機複製實現移植到 eRPC,在有損以太網上實現了 5.5 µs 的複製延遲,這比使用可編程交換機、FPGAs 或 RDMA 的專用複製系統要快。

[1] https://pdos.csail.mit.edu/6.824/papers/erpc.pdf

  • 課程 16. 大數據 Spark

    閱讀 Spark 論文[1]

    Apache Spark,大家都太熟悉了,筆者都無從下手了。借用官網一句話描述,Apache Spark 是用於大規模數據處理的統一分析引擎,其實能夠做的事情遠比描述的多得多。

[1] https://pdos.csail.mit.edu/6.824/papers/zaharia-spark.pdf

  • 課程 17. 緩存一致性:Facebook 的 Memcached

    閱讀 Facebook 的 Memcached 論文[1]

    Memcached 是一種衆所周知的簡單的內存緩存解決方案。論文介紹了 Facebook 如何利用 memcached 作爲基塊來構建和擴展支持全球最大社交網絡的分佈式鍵值存儲,支持系統每秒處理數十億個請求,並持有數萬億個 items,爲全球超過 10 億用戶提供豐富的體驗。

[1] https://pdos.csail.mit.edu/6.824/papers/memcache-fb.pdf

  • 課程 18. 分佈式系統因果一致性,COPS

    閱讀 COPS 論文[1]

    COPS 全稱是 Clusters of Order Preserving System。可能大部分讀者都熟悉 CAP 理論,然後一小部分讀者瞭解 CAC 理論,最後不知道還有多少人聽過 COPS 理論,建議感興趣的讀者腦補一下。筆者所知,有個趨勢即 CAP -> CAC -> COPS,通過 COPS 能夠獲得 ALPS,即 Availability、Low-Latency、Partition-tolerance 和 Scalability。

[1] https://pdos.csail.mit.edu/6.824/papers/cops.pdf

  • 課程 19. 分佈式系統因果一致性,FuzzyLog

    閱讀 FuzzyLog 論文[1]

    FuzzyLog 是一類有向無環圖。多個客戶端可以併發地構建或遍歷它。FuzzyLog 中的每個節點都帶有自己的顏色鏈。每一種“顏色”都是各自區域中的全序集,每個顏色鏈與別的區通過交叉邊構成有向無環圖保持。這個對於大部分讀者比較陌生,以後讀者會比較詳細地講解。

[1] https://pdos.csail.mit.edu/6.824/papers/fuzzylog.pdf

  • 課程 20. Fork Consistency, Certificate Transparency

    閱讀 Certificate Transparency 論文[1]

    當通過安全連接 (HTTPS) 訪問某個網站時,該網站會向瀏覽器提供數字證書。此證書用於識別該網站的主機名,由已驗證網站所有者的證書授權中心 (CA) 簽發。只要用戶信任相應的 CA,便可信任證書中提供的身份證明。當前模式要求所有用戶都必須相信,數百個 CA 組織在爲任何網站簽發證書時不會出現任何錯誤。但在有些情況下,人爲錯誤或假冒行爲可能會導致誤發證書。Certificate Transparency (CT) 改變了簽發流程,新流程規定:證書必須記錄到可公開驗證、不可篡改且只能附加內容的日誌中,用戶的網絡瀏覽器纔會將其視爲有效。通過要求將證書記錄到這些公開的 CT 日誌中,任何感興趣的相關方都可以查看由授權中心簽發的所有證書。這能夠促使授權中心在簽發證書時更加負責,從而有助於形成一個更可靠的系統。最終,如果使用 HTTPS 的某個網站的證書未記錄到 CT 日誌中,那麼當用戶訪問該網站時,瀏覽器可能不會顯示安全連接掛鎖圖標。

[1] https://pdos.csail.mit.edu/6.824/papers/ct.pdf

  • 課程 21. 點對點:Bitcoin

    閱讀 Bitcoin 論文[1]

    區塊鏈是目前熱門的技術,通過分佈式賬本技術和共識機制,構建了低成本互信機制。區塊鏈三個根本特性是去中心化、實現點對點的價值傳遞和低成本信任機制。當然提到區塊鏈,比特幣(Bitcoin)是無法繞過去的,帶動了整個幣圈的風起雲涌,跌宕起伏,欲知詳情可以諮詢一下身邊的幣圈大佬。

[1] https://pdos.csail.mit.edu/6.824/papers/bitcoin.pdf

  • 課程 22. Blockstack

    閱讀 Blockstack 技術白皮書[1]

    無須多說,看了就明白,至於是不是未來區塊鏈和互聯網的信息接口,就需要深入領悟了。之後,大家可以根據自己的想法做一個期末項目,也可以做 Lab 4。

[1] https://pdos.csail.mit.edu/6.824/papers/blockstack-2017.pdf

  • 課程 23. 項目演示

    閱讀 AnalogicFS 經驗性的論文[1]

[1] https://pdos.csail.mit.edu/6.824/papers/katabi-analogicfs.pdf

是不是,瞬間感覺不好了,不過要相信終有撥雲見日時。

課程相關材料

MIT 2020 年春季 Distributed Systems 課程,如上面筆者介紹,一共有 23 節課程,從 分佈式系統起始講起,歷經 MapReduce、GFS、主從複製、容錯、Spark 等,一直講到近來備受關注的區塊鏈技術,基本覆蓋了當前分佈式系統技術基礎。

根據 MIT 開放出的課程安排,在 2020 年春季課程中,基本每堂課上課之前,都需要讀相關技術經典論文,Lab 一共有 4 個,分成了 8 個部分。

在佈置的 Lab 作業中,官網都會提供代碼框架以及測試代碼,根據課程指南進行下載實驗。另外需要說明的是,每個 Lab 都有若干個 Part(比如 Lab 3A/3B),每個 Part 都會有一個大致的代碼框架和完整的測試代碼。

課程視頻官方地址:

https://www.youtube.com/channel/UC7WrbZTCODu1okfUMq88g

技術愛好者在 B 站提供了有英文字幕的課程視頻:

https://www.bilibili.com/video/av87684880

總結

2020 年是充滿機遇和挑戰的一年,也是飽含希望的一年,大家加油。

Ok, that's all for today. See you next time.

☆ END ☆

              你若喜歡,點個在看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章