作 者:唐偉志 著
定 價:108
出 版 社:電子工業出版社
出版日期:2022年03月01日
頁 數:316
裝 幀:平裝
ISBN:9787121428111
"面向初學者:通過理論和實踐結合的方式介紹分布式繫統,幫助讀者夯實分布式基礎知識;面向實踐者:實現簡單的Paxos共識算法,分析HDFS、ZooKeeper、etcd、Kubernetes等分布式繫統案例。"
●第1章認識分布式繫統
1.1什麼是分布式繫統
1.2為什麼需要分布式繫統
1.3分布式繫統的示例
1.3.1搜索引擎
1.3.2加密貨幣
1.4分布式繫統的挑戰
1.4.1網絡延遲問題
1.4.2部分失效問題
1.4.3時鐘問題
1.5每個程序員都應該知道的數字
1.6本章小結
第2章分布式繫統模型
2.1兩將軍問題
2.2拜占庭將軍問題
2.3繫統模型
2.3.1網絡鏈路模型
2.3.2節點故障類型
2.3.3按時間劃分繫統模型
2.4消息傳遞語義
2.5本章小結
第3章分布式數據基礎
3.1分區
3.1.1水平分區算法
3.1.2分區的挑戰
3.2復制
3.2.1單主復制
3.2.2多主復制
3.2.3無主復制
3.3CAP定理
3.3.1PACELC定理
3.3.2BASE
3.4一致性模型
3.4.1線性一致性
3.4.2實現線性一致性
3.4.3線性一致性的代價
3.4.4順序一致性
3.4.5因果一致性
3.4.6最終一致性
3.4.7以客戶端為中心的一致性模型
3.5隔離級別
3.6一致性和隔離級別的對比
3.7本章小結
第4章分布式共識
4.1分布式共識簡介
4.1.1什麼是分布式共識
4.1.2為什麼要達成共識
4.2異步繫統中的共識
4.2.1FLP不可能定理
4.2.2故障屏蔽
4.2.3使用故障檢測器
4.2.4使用隨機性算法
4.3同步繫統中的共識
4.4Paxos
4.4.1基本概念
4.4.2問題描述
4.4.3Paxos算法實現流程
4.4.4案例
4.4.5活鎖
4.5實驗:使用Go語言實現Paxos共識算法
4.5.1定義相關結構體
4.5.2定義消息結構體
4.5.3算法實現流程
4.5.4學習提案
4.5.5測試
4.6 lti-Paxos
4.6.1確定日志索引
4.6.2領導者選舉
4.6.3減少請求
4.6.4副本的完整性
4.6.5客戶端請求
4.6.6配置變更
4.6.7完整實現
4.6.8Paxos練習題
4.7其他Paxos變體
4.7.1DiskPaxos
4.7.2CheapPaxos
4.7.3FastPaxos
4.7.4Mencius
4.7.5EPaxos
4.7.6FlexiblePaxos
4.7.7WPaxos
4.7.8CASPaxos
4.7.9其他
4.8Raft算法
4.8.1繫統模型
4.8.2基本概念
4.8.3領導者選舉
4.8.4日志復制
4.8.5領導者更替
4.8.6選舉舉例
4.8.7延遲提交之前任期的日志條目
4.8.8清理不一致的日志
4.8.9處理舊領導者
4.8.10客戶端協議
4.8.11實現線性一致性
4.8.12配置變更
4.8.13配置變更存在的Bug
4.8.14特別情況下的活性問題
4.8.15日志壓縮
4.8.16基於內存的狀態機的快照
4.8.17基於磁盤的狀態機的快照
4.8.18性能優化
4.8.19Raft練習題
4.9PaxosvsRaft
4.10拜占庭容錯和PBFT算法
4.11本章小結
第5章分布式事務
5.1什麼是分布式事務
5.2原子提交
5.2.1兩階段提交
5.2.2三階段提交
5.2.3Paxos提交算法
5.2.4基於Quorum的提交協議
5.2.5Saga事務
5.3並發控制
5.3.1兩階段鎖
5.3.2樂觀並發控制
5.3.3多版本並發控制
5.4Percolator
5.5本章小結
第6章時間和事件順序
6.1物理時鐘
6.2時鐘同步
6.3邏輯時鐘
6.4向量時鐘
6.5分布式快照
6.6本章小結
第7章案例研究
7.1分布式文件繫統
7.1.1GFS的目標
7.1.2架構
7.1.3讀取文件
7.1.4寫入文件
7.1.5一致性模型
7.1.6其他
7.2分布式協調服務
7.2.1ZooKeeper架構
7.2.2數據模型
7.2.3ZooKeeper實現
7.2.4客戶端API
7.2.5其他
7.3分布式表格存儲Bigtable
7.3.1數據模型
7.3.2架構
7.3.3SSTable和LSMTree
7.3.4其他優化
7.4分布式鍵值存儲Dynamo
7.4.1架構
7.4.2請求協調
7.4.3成員管理和故障檢測
7.5分布式NoSQL數據庫Cassandra
7.5.1數據模型
7.5.2架構
7.5.3協調請求
7.5.4一致性級別
7.5.5輕量級事務
7.5.6二級索引
7.5.7批處理
7.6分布式數據庫Spanner
7.6.1數據模型
7.6.2架構
7.6.3TrueTime
7.6.4讀寫事務
7.6.5隻讀事務
7.6.6快照讀和模式變更事務
7.7分布式批處理
7.7.1MapReduce
7.7.2Spark
7.8分布式流處理框架Flink
7.8.1計算模型
7.8.2繫統架構
7.8.3時間處理
……
本書主要講解分布式繫統常用的基礎知識、算法和案例,經筆者對文獻海洋中晦澀艱深的原理和算法進行提煉,輔以圖示和代碼,並結合實際經驗進行分析總結而成。通過閱讀本書,讀者可以快速、輕松地掌握分布式繫統的基本原理,以及Paxos或Raft共識算法,並通過典型的案例學習如何設計大型分布式繫統。本書首先介紹什麼是分布式繫統、分布式繫統帶來的挑戰,以及如何對分布式繫統進行建模,這部分內容偏向概念性介紹。接著介紹了分布式數據的基礎知識,包括數據分區技術、數據復制技術、CAP定理、一致性模型和隔離級別,嘗試釐清一些十分容易混淆的術語,比如一致性、線性一致性、最終一致性和一致性算法等。本書還介紹了分布式繫統的核心算法——Paxos和Raft算法,不僅補充了大量圖示進行講解,還從零實現了一個Paxos算法。此外,本書分析了常見的分布式事務,並討論了分布式繫統中的時間問題,整理了一些實際發生的編程陷阱。最後結合一等
唐偉志 著
唐偉志,曾在網易遊戲、騰訊擔任基礎架構工程師。畢業後一直從事分布式繫統相關工作,在知乎和公眾號“多顆糖”上分享對分布式繫統論文的解讀和算法的講解。開源愛好者、TiDB Reviewer和Kubernetes Contributor。