分佈式協議與算法實戰:攻克分佈式系統設計的關鍵難題

韓健

  • 出版商: 機械工業
  • 出版日期: 2022-08-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • 頁數: 248
  • 裝訂: 平裝
  • ISBN: 7111710223
  • ISBN-13: 9787111710226
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

這是一本以實戰為導向、系統講解分佈式協議與算法、深刻揭示分佈式系統精髓與本質的著作。
作者以自己在騰訊和Intel的多年分佈式系統工程經驗為基礎,
用圖文並茂、通俗易懂的方式詳細講解了分佈式的基礎理論、協議、算法,以及它們如何在工程實踐中落地。

通過本書,你將掌握如下核心知識:
(1)4大分佈式基礎理論
詳細講解分佈式架構設計的核心基礎理論,包括拜占庭將軍問題、CAP理論、ACID理論、BASE理論,
這些理論能指導你在實戰中根據場景特點選擇合適的分佈式算法。

(2)10種常用的分佈式協議和算法
詳細講解了Paxos算法、Raft算法、一致哈希算法、ZAB協議、Gossip協議、Quorum NWR協議、
MySQL XA規範、TCC、PBFT算法、PoW算法等常用分佈式協議和算法的的原理、特點、適用場景和常見誤區等。

(3)3大綜合實戰案例
通過3個綜合案例講解了分佈式基礎理論和分佈式算法在工程實踐中的應用,教你將所學知識真正落地。
包括InfluxDB企業版的CP架構和AP架構的設計和背後思考,
以及Raft、Quorum NWR、Anti-Entropy等分佈式算法的具體實現。

目錄大綱

讚譽

前言
理論篇
第1章拜占庭將軍問題2
1.1 什麼是拜占庭將軍問題2
1.1.1 蘇秦的困境3
1.1.2 二忠一叛難題3
1.2 口信消息,我們該如何處理呢5
1.3 如何解決n>(3f +1)的限制8
1.3.1 什麼是簽名消息8
1.3.2 簽名消息型拜占庭問題之解10
1.4 拜占庭容錯算法和非拜占庭容錯算法,該如何選擇呢16
1.5 本章小結17
第2章CAP理論19
2.1 CAP理論:分佈式系統的ph試紙,用它來測酸鹼度20
2.1.1 CAP三指標20
2.1.2 CAP不可能三角24
2.1.3 如何使用CAP理論25
2.2 ACID理論:CAP的“酸”,追求一致性28
2.2.1 二階段提交協議30
2.2.2 TCC32
2.3 BASE理論:CAP的“鹼”,追求可用性35
2.3.1 實現基本可用的4板斧36
2.3.2 最終一致性37
2.3.3 如何使用BASE理論39
2.4 本章小結40
協議與算法篇
第3章Paxos算法44
3.1 Basic Paxos:如何在多個節點間確定某變量的值45
3.1.1 你需要了解的3種角色46
3.1.2 如何達成共識48
3.2 Multi-Paxos:Multi-Paxos不是一個算法,而是統稱52
3.2.1 蘭伯特關於Multi-Paxos的思考53
3.2.2 Chubby是如何實現Multi-Paxos算法的55
3.3 本章小結58
第4章Raft算法59
4.1 Raft是如何選舉領導者的60
4.1.1 有哪些成員身份60
4.1.2 選舉領導者的過程61
4.1.3 選舉過程四連問64
4.2 Raft是如何復制日誌的68
4.2.1 如何理解日誌68
4.2.2 如何復制日誌69
4.2.3 如何實現日誌的一致性71
4.3 Raft是如何解決成員變更問題的73
4.3.1 成員變更問題74
4.3.2 如何通過單節點變更解決成員變更問題75
4.4 Raft與一致性79
4.5 本章小結80
第5章一致哈希算法82
5.1 使用哈希算法有什麼問題83
5.2 如何使用一致哈希算法實現哈希尋址85
5.3 本章小結90
第6章ZAB協議92
6.1 如何實現操作的順序性93
6.1.1 為什麼Multi-Paxos無法保證操作的順序性93
6.1.2 ZAB協議是如何實現操作的順序性的97
6.2 主節點崩潰了,怎麼辦101
6.2.1 ZAB協議是如何選舉領導者的101
6.2.2 ZooKeeper是如何選舉領導者的107
6.3 如何從故障中恢復111
6.3.1 ZAB集群如何從故障中恢復112
6.3.2 ZooKeeper如何從故障中恢復119
6.4 ZAB協議:如何處理讀寫請求125
6.4.1 ZooKeeper處理讀寫請求的原理126
6.4.2 ZooKeeper處理讀寫請求的代碼實現127
6.5 ZAB協議與Raft算法134
6.6 本章小結136
第7章Gossip協議137
7.1 Gossip的三板斧138
7.2 如何使用反熵實現最終一致性141
7.3 本章小結144
第8章Quorum NWR算法145
8.1 Quorum NWR的三要素146
8.2 如何實現Quorum NWR149
8.3 本章小結150
第9章MySQL XA151
9.1 什麼是XA規範152
9.2 如何通過MySQL XA實現分佈式事務155
9.3 本章小結157
第10章TCC158
10.1 什麼是TCC159
10.2 如何通過TCC實現指令執行的原子性161
10.3 本章小結163
第11章PBFT算法165
11.1 口信消息型拜占庭問題之解的局限166
11.2 PBFT算法是如何達成共識的167
11.3 如何替換作惡的主節點171
11.3.1 主節點作惡會出現什麼問題171
11.3.2 如何替換作惡的主節點172
11.4 PBFT算法的局限、解決辦法和應用176
11.5 本章小結177
第12章PoW算法178
12.1 如何理解工作量證明179
12.2 區塊鍊是如何實現PoW算法的181
12.3 本章小結183
實戰篇
第13章InfluxDB企業版一致性實現剖析186
13.1 什麼是時序數據庫186
13.2 如何實現META節點一致性188
13.3 如何實現DATA節點一致性188
13.3.1 自定義副本數188
13.3.2 Hinted-handoff189
13.3.3 反熵190
13.3.4 Quorum NWR191
13.4 本章小結192
第14章Hashicorp Raft194
14.1 如何跨過理論和代碼之間的鴻溝195
14.1.1 Hashicorp Raft如何實現領導者選舉195
14.1.2 Hashicorp Raft如何復制日誌201
14.2 如何以集群節點為中心使用API205
14.2.1 如何創建Raft節點205
14.2.2 如何增加集群節點208
14.2.3 如何移除集群節點209
14.2.4 如何查看集群節點狀態210
14.3 本章小結211
第15章基於Raft的分佈式KV系統開發實戰213
15.1 如何設計架構214
15.1.1 如何設計接入協議215
15.1.2 如何設計KV操作216
15.1.3 如何實現分佈式集群218
15.2 如何實現代碼220
15.2.1 如何實現接入協議220
15.2.2 如何實現KV操作222
15.2.3 如何實現分佈式集群224
15.3 本章小結229