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