深入理解分散式系統

深入理解分散式系統

《深入理解分散式系統》是電子工業出版社出版圖書,作者是唐偉志

實現簡單的Paxos共識算法,分析HDFS、ZooKeeper、etcd、Kubernetes等分散式系統案例。

基本介紹

  • 書名:深入理解分散式系統
  • 作者:唐偉志
  • 出版社:電子工業出版社
  • 出版時間:2022年3月
  • 頁數:316 頁
  • 定價:108 元
  • 開本:16 開
  • ISBN:9787121428111
圖書目錄,作者簡介,

圖書目錄

第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.3 CAP定理
3.3.1 PACELC定理
3.3.2 BASE
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.1 FLP不可能定理
4.2.2 故障禁止
4.2.3 使用故障檢測器
4.2.4 使用隨機性算法
4.3 同步系統中的共識
4.4 Paxos
4.4.1 基本概念
4.4.2 問題描述
4.4.3 Paxos算法實現流程
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 Multi-Paxos
4.6.1 確定日誌索引
4.6.2 領導者選舉
4.6.3 減少請求
4.6.4 副本的完整性
4.6.5 客戶端請求
4.6.6 配置變更
4.6.7 完整實現
4.6.8 Paxos練習題
4.7 其他Paxos變體
4.7.1 Disk Paxos
4.7.2 Cheap Paxos
4.7.3 Fast Paxos
4.7.4 Mencius
4.7.5 EPaxos
4.7.6 Flexible Paxos
4.7.7 WPaxos
4.7.8 CASPaxos
4.7.9 其他
4.8 Raft算法
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.19 Raft練習題
4.9 Paxos vs Raft
4.10 拜占庭容錯和PBFT算法
4.11 本章小結
第5章 分散式事務
5.1 什麼是分散式事務
5.2 原子提交
5.2.1 兩階段提交
5.2.2 三階段提交
5.2.3 Paxos提交算法
5.2.4 基於Quorum的提交協定
5.2.5 Saga事務
5.3 並發控制
5.3.1 兩階段鎖
5.3.2 樂觀並發控制
5.3.3 多版本並發控制
5.4 Percolator
5.5 本章小結
第6章 時間和事件順序
6.1 物理時鐘
6.2 時鐘同步
6.3 邏輯時鐘
6.4 向量時鐘
6.5 分散式快照
6.6 本章小結
第7章 案例研究
7.1 分散式檔案系統
7.1.1 GFS的目標
7.1.2 架構
7.1.3 讀取檔案
7.1.4 寫入檔案
7.1.5 一致性模型
7.1.6 其他
7.2 分散式協調服務
7.2.1 ZooKeeper架構
7.2.2 數據模型
7.2.3 ZooKeeper實現
7.2.4 客戶端API
7.2.5 其他
7.3 分散式表格存儲Bigtable
7.3.1 數據模型
7.3.2 架構
7.3.3 SSTable和LSM Tree
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.3 TrueTime
7.6.4 讀寫事務
7.6.5 唯讀事務
7.6.6 快照讀和模式變更事務
7.7 分散式批處理
7.7.1 MapReduce
7.7.2 Spark
7.8 分散式流處理框架Flink
7.8.1 計算模型
7.8.2 系統架構
7.8.3 時間處理
7.8.4 分散式快照
7.8.5 端到端的精確一次語義
7.9 本章小結

作者簡介

唐偉志,曾任網易遊戲、騰訊基礎架構工程師。畢業後一直從事分散式系統相關工作,在知乎和公眾號“多顆糖”上分享對分散式系統論文的解讀和算法的講解。開源愛好者、TiDB Reviewer和Kubernetes Contributor。

相關詞條

熱門詞條

聯絡我們