深入理解分佈式系統
唐偉志
- 出版商: 電子工業
- 出版日期: 2022-03-01
- 定價: $648
- 售價: 8.5 折 $551
- 語言: 簡體中文
- 頁數: 316
- ISBN: 7121428113
- ISBN-13: 9787121428111
-
相關分類:
Kubernetes、zookeeper
立即出貨 (庫存 < 4)
買這商品的人也買了...
-
$360$284 -
$580$493 -
$650$507 -
$834$792 -
$480$408 -
$648$616 -
$454$427 -
$480$360 -
$556MySQL 是怎樣運行的 -- 從根兒上理解 MySQL
-
$980$833 -
$539$512 -
$594$564 -
$580$458 -
$500$390 -
$556SAFe 5.0精粹:面向業務的規模化敏捷框架
-
$2,025High Performance MySQL: Proven Strategies for Operating at Scale, 4/e (Paperback)
-
$714$678 -
$734掌握分佈式跟蹤:微服務和復雜系統性能分析
-
$473用 Go語言自製編譯器
-
$599$569 -
$509$479 -
$560$420 -
$500$390 -
$580$458 -
$806深入理解 Go 並發編程:從原理到實踐,看這本就夠了
相關主題
商品描述
分佈式系統是一門理論模型與工程技法並重的學科,現在的互聯網從業的開發人員,很難繞過分佈式系統,或多或少會在面試、工作中接觸到分佈式系統的知識。本書主要通過理論和實踐結合的方式介紹分佈式系統。主要內容有分佈式系統基礎知識:分佈式系統模型、分區、一致性哈希、主從復制、一致性級別、分佈式共識、分佈式事務、分佈式系統中的時間等,幫助讀者夯實分佈式基礎知識;本書也面向實踐者:實現簡單的 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.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 Paos
4.4.1 基本概念
4.4.2 問題描述
4.4.3 Paos算法實現流程
4.4.4 案例
4.4.5 活鎖
4.5 實驗:使用Go語言實現Paos共識算法
4.5.1 定義相關結構體
4.5.2 定義消息結構體
4.5.3 算法實現流程
4.5.4 學習提案
4.5.5 實現單元測試
4.6 Multi-Paos
4.6.1 確定日誌索引
4.6.2 領導者選舉
4.6.3 減少請求
4.6.4 副本的完整性
4.6.5 客戶端請求
4.6.6 配置變更
4.6.7 完整實現
4.6.8 Paos練習題
4.7 其他Paos變體
4.7.1 Disk Paos
4.7.2 Cheap Paos
4.7.3 Fast Paos
4.7.4 Mencius
4.7.5 EPaos
4.7.6 Fleible Paos
4.7.7 WPaos
4.7.8 CASPaos
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 Paos vs Raft
4.10 拜占庭容錯和PBFT算法
4.11 本章小結
5章分佈式事務
5.1 什麼是分佈式事務
5.2 原子提交
5.2.1 兩階段提交
5.2.2 三階段提交
5.2.3 Paos提交算法
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 分佈式SQL數據庫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 本章小結