-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應(yīng)用
-
>
決戰(zhàn)行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調(diào)優(yōu)實踐之路
-
>
第一行代碼Android
-
>
JAVA持續(xù)交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學(xué)習
深入理解分布式系統(tǒng) 版權(quán)信息
- ISBN:9787121428111
- 條形碼:9787121428111 ; 978-7-121-42811-1
- 裝幀:80g膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>
深入理解分布式系統(tǒng) 本書特色
適讀人群 :本書適合對分布式感興趣的讀者面向初學(xué)者:通過理論和實踐結(jié)合的方式介紹分布式系統(tǒng),幫助讀者夯實分布式基礎(chǔ)知識; 面向?qū)嵺`者:實現(xiàn)簡單的Paxos共識算法,分析HDFS、ZooKeeper、etcd、Kubernetes等分布式系統(tǒng)案例。
深入理解分布式系統(tǒng) 內(nèi)容簡介
《深入理解分布式系統(tǒng)》主要講解分布式系統(tǒng)常用的基礎(chǔ)知識、算法和案例,經(jīng)筆者對文獻海洋中晦澀艱深的原理和算法進行提煉,輔以圖示和代碼,并結(jié)合實際經(jīng)驗進行分析總結(jié)而成。通過閱讀本書,讀者可以快速、輕松地掌握分布式系統(tǒng)的基本原理,以及Paxos或Raft共識算法,并通過典型的案例學(xué)習如何設(shè)計大型分布式系統(tǒng)。 《深入理解分布式系統(tǒng)》首先介紹什么是分布式系統(tǒng)、分布式系統(tǒng)帶來的挑戰(zhàn),以及如何對分布式系統(tǒng)進行建模,這部分內(nèi)容偏向概念性介紹。接著介紹了分布式數(shù)據(jù)的基礎(chǔ)知識,包括數(shù)據(jù)分區(qū)技術(shù)、數(shù)據(jù)復(fù)制技術(shù)、CAP定理、一致性模型和隔離級別,嘗試厘清一些十分容易混淆的術(shù)語,比如一致性、線性一致性、*終一致性和一致性算法等。本書還介紹了分布式系統(tǒng)的核心算法——Paxos和Raft算法,不僅補充了大量圖示進行講解,還從零實現(xiàn)了一個Paxos算法。此外,本書分析了常見的分布式事務(wù),并討論了分布式系統(tǒng)中的時間問題,整理了一些實際發(fā)生的編程陷阱。*后結(jié)合一些對工業(yè)界產(chǎn)生重大影響的論文或開源系統(tǒng),學(xué)習前人在設(shè)計大型分布式系統(tǒng)時的思路、取舍和創(chuàng)新。
深入理解分布式系統(tǒng) 目錄
深入理解分布式系統(tǒng) 節(jié)選
原子提交在分布式領(lǐng)域更普遍地被稱為提交問題(The Commit Problem)。 事務(wù)的一大好處就是保證了原子性,所有的操作要么都執(zhí)行,要么都不執(zhí)行(All Or Nothing)。原子性可以說是事務(wù)*重要的特性,軟件開發(fā)人員依靠事務(wù)的原子性,能夠安全地將一系列相關(guān)的、不可分割的操作組合成一個整體,實現(xiàn)許多業(yè)務(wù)需求。 但保證原子性并非易事—不僅僅是在分布式系統(tǒng)中,在單機系統(tǒng)中亦如此。原因是原子性涉及了硬件和軟件,而兩者都可能出現(xiàn)意外故障。即使是向文件中寫入一些簡單的字節(jié),也需要額外的工作來保證寫入的原子性,保證即使硬盤在執(zhí)行寫入操作的時候出現(xiàn)故障,文件也不會被損壞。 我們先簡單回顧單機事務(wù)的原子性的實現(xiàn)。 常見的機械磁盤一般可以保證512字節(jié)的原子寫,所謂原子寫也就是說,即便遭遇突然斷電等意外情況,一般的機械磁盤也可以保證當前512字節(jié)的成功寫入;如果寫入的數(shù)據(jù)大于512字節(jié),則原子寫得不到保障。 為了在更通用的情況下實現(xiàn)原子性,常見方法是使用日志或WAL這類技術(shù)。簡單地說,先將操作的元數(shù)據(jù)寫入一個單獨的日志文件,同時還有表示操作是否完成的標記。倘若系統(tǒng)在寫入過程中發(fā)生故障,那么基于這些數(shù)據(jù),系統(tǒng)恢復(fù)后依然能夠識別出哪些操作在故障發(fā)生前已完成,然后通過撤銷所有的操作來回滾事務(wù);或者通過完成剩余未執(zhí)行的操作來繼續(xù)提交事務(wù)。基于硬盤原子寫和日志文件來實現(xiàn)事務(wù)原子性的方法,在文件系統(tǒng)和數(shù)據(jù)庫中廣泛使用。 但分布式系統(tǒng)中的原子性問題更加復(fù)雜,因為節(jié)點分布在不可靠的網(wǎng)絡(luò)中。此外,我們不僅需要確保一個操作在一個節(jié)點上的原子性,還要確保一個操作在多個節(jié)點上的原子性,也就是說,操作要么在所有的節(jié)點上都生效,要么不在任何一個節(jié)點上生效,每個節(jié)點提交或中止事務(wù)的操作要保持一致。 我們還是用銀行轉(zhuǎn)賬來舉例。假設(shè)一個分布式系統(tǒng)中的兩臺服務(wù)器,用戶A的賬戶余額存儲在服務(wù)器N1上,用戶B的賬戶余額存儲在服務(wù)器N2上,他們的賬戶上都有100元。 接下來用戶A要轉(zhuǎn)賬10元給用戶B,事務(wù)需要同時修改用戶A和用戶B的數(shù)據(jù)。假設(shè)事務(wù)先給服務(wù)器N2上用戶B的賬戶加上10元,再給服務(wù)器N1上用戶A的賬戶減去10元。由于數(shù)據(jù)分布在兩臺完全不同的服務(wù)器上,很可能出現(xiàn)一些意想不到的故障,可能在給用戶B的賬戶加上10元后,服務(wù)器N1宕機了,無法對用戶A扣錢;甚至服務(wù)器沒有宕機也可能觸發(fā)異常,例如可能在請求服務(wù)器N1的時候發(fā)現(xiàn)用戶A的賬戶余額已經(jīng)不足10元了,不能再對用戶A的賬戶減去10元(數(shù)據(jù)庫約束賬戶不能為負數(shù))。不管怎樣,服務(wù)器N1沒有完成它在事務(wù)中的那部分工作,但服務(wù)器N2又完成了它的任務(wù)。 分布式事務(wù)的原子性通過原子提交協(xié)議(Atomic Commit Protocol,ACP)來實現(xiàn),原子提交協(xié)議也叫原子提交算法,原子提交協(xié)議必須滿足以下三個特性: ?? 協(xié)定性(Agreement)。所有進程都決議出同一個值,相當于所有進程要么一起提交事務(wù),要么一起中止事務(wù),不存在兩個進程一個提交事務(wù)另一個中止事務(wù)的情況。 ?? 有效性(Validity)。如果所有進程都決定提交事務(wù)并且沒有任何故障發(fā)生,那么*終整個系統(tǒng)將提交事務(wù);只要有一個進程決定中止事務(wù),系統(tǒng)*終將中止事務(wù)。 ?? 終止性(Termination)。終止性又分為弱終止條件(Weak Termination Condition)和強終止條件(Strong Termination Condition)。弱終止條件是指,如果沒有任何故障發(fā)生,那么所有進程*終都會做出決議(提交或終止事務(wù));強終止條件也稱為非阻塞條件(Non-Blocking Condition),是指沒有發(fā)生故障的進程*終會做出決議。 滿足強終止條件的提交算法被稱作非阻塞提交算法,而滿足弱終止條件但不滿足強終止條件的提交算法被稱作阻塞提交算法。值得注意的是,協(xié)定性約束了兩個進程不能決議出不同的值,因此,原子提交協(xié)議嚴格不允許一個出錯的進程和一個正確的進程做出不同的決定。如果一個進程出錯一段時間后又恢復(fù),則會導(dǎo)致提交算法出現(xiàn)不一致。 其實從這三個特性可以看出,原子提交協(xié)議實際上解決了分布式共識問題(見第4章)的一個子類,即對事務(wù)的提交或中止達成共識。
深入理解分布式系統(tǒng) 作者簡介
唐偉志,曾任網(wǎng)易游戲、騰訊基礎(chǔ)架構(gòu)工程師。畢業(yè)后一直從事分布式系統(tǒng)相關(guān)工作,在知乎和公眾號“多顆糖”上分享對分布式系統(tǒng)論文的解讀和算法的講解。開源愛好者、TiDB Reviewer和Kubernetes Contributor。
- >
巴金-再思錄
- >
龍榆生:詞曲概論/大家小書
- >
朝聞道
- >
【精裝繪本】畫給孩子的中國神話
- >
月亮與六便士
- >
中國人在烏蘇里邊疆區(qū):歷史與人類學(xué)概述
- >
新文學(xué)天穹兩巨星--魯迅與胡適/紅燭學(xué)術(shù)叢書(紅燭學(xué)術(shù)叢書)
- >
伯納黛特,你要去哪(2021新版)