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