原文鏈接:Distributed systems
我希望有一本文本能夠匯集許多最新分布式系統(tǒng)背后的理念 - 例如亞馬遜的Dynamo, 谷歌的BigTable和MapReduce, Apache的Hadoop等等。
【資料圖】
在這段文字中,我試圖提供一個更易理解的分布式系統(tǒng)簡介。對我來說,這意味著兩件事情:介紹你需要了解的關鍵概念,以便在閱讀更深入的文本時能夠愉快度過,同時提供一個涵蓋足夠詳細內(nèi)容的敘述,以便你能夠大致理解發(fā)生的事情,而不會陷入細節(jié)之中。現(xiàn)在是2013年,你擁有互聯(lián)網(wǎng),可以選擇性地閱讀你最感興趣的主題。
在我看來,分布式編程的很大一部分是處理分布的兩個后果的影響:
信息以光速傳播獨立的事物獨立失敗換句話說,分布式編程的核心是處理距離(嗯?。┖蛽碛卸鄠€事物(嗯?。?。這些約束條件定義了可能的系統(tǒng)設計空間,我希望在閱讀完本文后,你能更好地理解距離、時間和一致性模型的相互作用。
這段文字專注于分布式編程和系統(tǒng)概念,這些是您需要了解數(shù)據(jù)中心中商業(yè)系統(tǒng)所需的。試圖覆蓋所有內(nèi)容是不可能的。您將學習到許多關鍵的協(xié)議和算法(例如,涵蓋了該學科中最常引用的論文之一),包括一些新的令人興奮的方式來看待最終一致性,這些方式尚未被收錄到大學教材中,例如 CRDTs 和 CALM 定理。
我希望你喜歡它!如果你想說謝謝,請在Github(或者 Twitter)上關注我。如果你發(fā)現(xiàn)錯誤,請在Github上提交一個拉取請求。
第一章概述了分布式系統(tǒng)的高層次內(nèi)容,介紹了一些重要的術語和概念。它涵蓋了高層次的目標,如可擴展性、可用性、性能、延遲和容錯性;以及這些目標是如何難以實現(xiàn)的,以及抽象和模型以及分區(qū)和復制是如何發(fā)揮作用的。
第二章深入探討抽象和不可能性結(jié)果。它以尼采的一句名言開頭,然后介紹了系統(tǒng)模型以及在典型系統(tǒng)模型中所做的許多假設。然后討論了CAP定理并總結(jié)了FLP不可能性結(jié)果。然后轉(zhuǎn)向CAP定理的含義之一,即人們應該探索其他一致性模型。隨后討論了一些一致性模型。
理解分布式系統(tǒng)的一個重要部分是理解時間和順序。在我們無法理解和建模時間的程度上,我們的系統(tǒng)將會失敗。第三章討論了時間和順序,以及時鐘和時間、順序和時鐘的各種用途(例如向量時鐘和故障檢測器)。
第四章介紹了復制問題,并介紹了兩種基本的執(zhí)行方法。事實證明,大部分相關特性都可以用這個簡單的描述來討論。然后,從最不容錯的方法(2PC)到Paxos,討論了用于維護單一副本一致性的復制方法。
第五章討論了具有弱一致性保證的復制。它介紹了一個基本的協(xié)調(diào)場景,其中分區(qū)副本嘗試達成一致。然后,它討論了亞馬遜的Dynamo作為一個具有弱一致性保證的系統(tǒng)設計的例子。最后,討論了兩種關于無序編程的觀點:CRDTs和CALM定理。
附錄包括了進一步閱讀的建議。
*:這是一個謊言。Jay Kreps 的這篇文章詳細闡述了。
關鍵詞: