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