分佈式架構原理與實踐

崔皓

  • 出版商: 人民郵電
  • 出版日期: 2021-11-01
  • 售價: $779
  • 貴賓價: 9.5$740
  • 語言: 簡體中文
  • 頁數: 405
  • 裝訂: 平裝
  • ISBN: 7115576629
  • ISBN-13: 9787115576620
  • 相關分類: Information-architecture軟體架構
  • 立即出貨 (庫存 < 4)

  • 分佈式架構原理與實踐-preview-1
  • 分佈式架構原理與實踐-preview-2
分佈式架構原理與實踐-preview-1

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

商品描述

本書從軟件結構的發展歷史入手,通過一個簡單的例子,描述了分佈式架構的特性和存在的問題,並圍繞這些問題展開了分析和實踐。書中從為什麽、是什麽、怎麽辦這三個方面,分別講解了分佈式應用服務的拆分、分佈式調用、分佈式協同、分佈式計算、分佈式存儲、分佈式資源管理和調度、高性能與可用性以及指標與監控等內容,基本涵蓋了分佈式技術的要點。讀者既可以按照邏輯聯系從前往後看,也可以只閱讀感興趣的章節。

作者簡介

崔皓
資深架構師,10 年分佈式架構經驗。曾任惠普技術專家。樂於分享,撰寫了很多熱門技術文章,閱讀量超過 60 萬。

目錄大綱

第 1章 分佈式架構設計的特徵與問題 1
1.1 架構設計的演進過程 1
1.1.1 應用與數據一體模式 1
1.1.2 應用與數據分離模式 2
1.1.3 緩存與性能的提升 3
1.1.4 服務器集群處理並發 4
1.1.5 數據庫讀寫分離 5
1.1.6 反向代理和CDN 6
1.1.7 分佈式數據庫與分錶分庫 9
1.1.8 業務拆分 10
1.1.9 分佈式與微服務 11
1.2 一個簡單的例子:分佈式架構的組成 13
1.2.1 架構概述與分層 13
1.2.2 客戶端與CDN 15
1.2.3 接入層 16
1.2.4 應用層 17
1.2.5 存儲層 23
1.3 分佈式架構的特徵 26
1.4 分佈式架構的問題 27
1.4.1 分佈式架構的邏輯結構圖 27
1.4.2 應用服務拆分 28
1.4.3 分佈式調用 29
1.4.4 分佈式協同 29
1.4.5 分佈式計算 30
1.4.6 分佈式存儲 30
1.4.7 分佈式資源管理與調度 31
1.4.8 高性能與可用性 31
1.4.9 指標與監控 31
1.5 本書的閱讀方式 32
1.6 總結 33
第 2章 分佈式應用服務的拆分 34
2.1 起因與概念 34
2.2 拆分思路 36
2.3 模型結構 38
2.3.1 通用語言 38
2.3.2 領域、子域和限界上下文 39
2.3.3 實體和值類型 41
2.3.4 聚合和聚合根 45
2.3.5 領域事件 46
2.4 分析業務需求形成應用服務 48
2.4.1 分析業務流程 49
2.4.2 抽取領域對象和生成聚合 51
2.4.3 劃定限界上下文 53
2.5 領域驅動設計分層 54
2.5.1 分層的概述與原則 54
2.5.2 分層的內容 56
2.5.3 分層的總結 57
2.5.4 服務內部的分層調用與服務間的調用 58
2.5.5 把分層映射到代碼結構 60
2.5.6 代碼分層示例 65
2.6 總結 70
第3章 分佈式調用 71
3.1 負載均衡 71
3.1.1 負載均衡分類 72
3.1.2 負載均衡算法 83
3.2 API 網關 85
3.2.1 API 網關的定義 85
3.2.2 API 網關的服務定位 87
3.2.3 API 網關的技術原理 88
3.3 服務註冊與發現 90
3.3.1 服務註冊與發現的概念和原理 91
3.3.2 服務註冊中心的可用性 92
3.3.3 服務註冊中心的服務保存 92
3.4 服務間的遠程調用 92
3.4.1 RPC 調用過程 93
3.4.2 RPC 動態代理 94
3.4.3 RPC 序列化 97
3.4.4 協議編碼 98
3.4.5 網絡傳輸 99
3.4.6 Netty 實現 RPC 104
3.5 總結 116
第4章 分佈式協同 117
4.1 分佈式系統的特性與互斥問題 117
4.1.1 集中互斥算法 118
4.1.2 基於許可的互斥算法 120
4.1.3 令牌環互斥算法 122
4.2 分佈式鎖 124
4.2.1 分佈式鎖的由來和定義 125
4.2.2 通過Redis緩存實現分佈式鎖 126
4.2.3 通過ZooKeeper 實現分佈式鎖 129
4.2.4 分佈式分段加鎖 132
4.3 分佈式事務 133
4.3.1 ACID 理論 134
4.3.2 CAP 理論 135
4.3.3 BASE 理論 137
4.3.4 DTP 模型 139
4.3.5 分佈式事務 2PC 解決方案 141
4.3.6 分佈式事務 TCC 解決方案 143
4.4 分佈式選舉 146
4.4.1 Bully 算法 147
4.4.2 Raft 算法 150
4.4.3 ZAB 算法 154
4.5 ZooKeeper——分佈式系統的實踐 157
4.5.1 從一個簡單的例子開始 157
4.5.2 Znode 的原理與使用 158
4.5.3 Watcher 原理與使用 159
4.5.4 Version 的原理與使用 162
4.5.5 會話的原理與使用 164
4.5.6 服務群組 166
4.6 總結 169
第5章 分佈式計算 171
5.1 MapReduce 模式 171
5.1.1 MapReduce 的策略和理念 171
5.1.2 MapReduce 的體系結構 173
5.1.3 MapReduce 的工作流程 175
5.1.4 MapReduce 的應用實例 178
5.2 Stream 模式 180
5.2.1 Stream 模式的處理過程及特點 181
5.2.2 Storm 的體系結構與工作原理 182
5.2.3 Storm 的並發機制 185
5.2.4 Stream Grouping 188
5.2.5 Storm 集群架構 191
5.3 總結 193
第6章 分佈式存儲 195
6.1 數據存儲面臨的問題以及解決思路 195
6.1.1 RAID 磁盤陣列 196
6.1.2 分佈式存儲的組成要素 199
6.2 分佈式數據庫 200
6.2.1 分錶分庫 200
6.2.2 主從復制 205
6.2.3 數據擴容 213
6.3 分佈式緩存 216
6.3.1 緩存分片算法 217
6.3.2 Redis 集群方案 221
6.3.3 緩存節點之間的通信 222
6.3.4 請求分佈式緩存的路由 223
6.3.5 緩存節點的擴展和收縮 226
6.3.6 緩存故障的發現和恢復 228
6.4 總結 230
第7章 分佈式資源管理和調度 231
7.1 分佈式資源調度的由來與過程 231
7.1.1 資源調度可以解決什麼問題 232
7.1.2 資源調度過程 234
7.2 資源劃分和調度策略 237
7.2.1 Linux Container 資源是如何劃分的 237
7.2.2 任務與資源如何匹配 244
7.3 分佈式調度架構 249
7.3.1 中央式調度器 250
7.3.2 兩級調度器 253
7.3.3 共享狀態調度器 259
7.4 Kubernetes——資源調度的實踐 262
7.4.1 Kubernetes 架構概述 263
7.4.2 從一個例子開始 264
7.4.3 kubectl 和 API Server 264
7.4.4 controller manager、Scheduler 和 kubelet 268
7.4.5 Service 和 kubelet 271
7.5 總結 277
第8章 高性能與可用性 278
8.1 緩存的應用 278
8.1.1 處處皆緩存 279
8.1.2 動靜分離 280
8.1.3 HTTP 緩存 284
8.1.4 CDN 緩存 288
8.1.5 DNS 結構與訪問流程 289
8.1.6 負載均衡實現動態緩存 292
8.1.7 進程內緩存 296
8.1.8 分佈式進程緩存 304
8.2 可用性 306
8.2.1 請求限流 306
8.2.2 服務降級 314
8.2.3 服務熔斷 319
8.3 總結 328
第9章 指標與監控 329
9.1 為什麼需要監控系統 329
9.2 監控系統的指標 330
9.3 創建監控系統的步驟 332
9.4 監控系統的分類 333
9.4.1 日誌類監控 333
9.4.2 調用鏈監控 339
9.4.3 度量類監控:LSM Tree 和 LevelDB 350
9.5 監控系統的分層 355
9.6 Zabbix 實現監控系統 356
9.6.1 Zabbix 構建監控系統過程 357
9.6.2 Zabbix 架構的安裝和配置 358
9.6.3 Zabbix 監控方式 364
9.7 Prometheus 實現監控系統 369
9.7.1 Prometheus 系統架構 369
9.7.2 時間序列與 Metric 數據模型 370
9.7.3 Exporter 採集數據與服務發現 372
9.7.4 報警規則的定義和報警路由的分發 374
9.8 總結 378
第 10章 架構設計思路和要點 379
10.1 架構設計思維方式 379
10.1.1 架構師的設計模型 379
10.1.2 過程設計模型 383
10.1.3 協作式設計模型 386
10.1.4 擴展立方設計模型 389
10.2 重構與測試 391
10.2.1 代碼重構 391
10.2.2 性能測試與壓力測試 395
10.3 學習與發展 401
10.3.1 思維方式 401
10.3.2 學習提升 402
10.3.3 職業發展 403
10.4 總結 405