鳳凰架構:構建可靠的大型分佈式系統

周志明 著

  • 出版商: 機械工業
  • 出版日期: 2021-06-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • 頁數: 413
  • 裝訂: 平裝
  • ISBN: 7111683919
  • ISBN-13: 9787111683919
  • 相關分類: 軟體架構
  • 立即出貨 (庫存=1)

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

商品描述

這是一本從架構視角講解如何構建大型分佈式系統的著作,是超級暢銷書《深入理解Java虛擬機》的作者周志明多年架構和研發經驗的總結,得到了多位行業資深架構專家的聯袂推薦。
全書共16章,分為演進中的架構、架構師的視角、分佈式的基石、不可變基礎設施和技術方法論五部分。
第一部分 演進中的架構(第1章)
著重介紹了軟件開發歷史中多種主流架構風格出現的契機、解決的問題以及帶來的新缺陷。
第二部分 架構師的視角(第2~5章)
總結了一名架構師應該在架構設計時思考哪些問題,有哪些主流的解決方案和行業標準做法,各種方案有什麽優缺點,不同的解決方法會帶來什麽不同的影響,等等。
第三部分 分佈式的基石(第6~10章)
重點討論了“不同架構風格是應該在技術規範上統一,還是由應用系統自行解決”這個問題,給出瞭解決思路、方法和常見工具。
第四部分 不可變基礎設施(第11~15章)
重點講解了基礎設施不變性的目的、原理與實現途徑,包括虛擬化容器、容器間網絡、持久化存儲、資源與調度、服務網格等內容。
第五部分 技術方法論(第16章)
面向技術決策者集中討論了與分佈式、微服務、架構等相關的理論話題,將解決問題的能力歸納、總結、升華為方法論。
全書以實踐為導向,一個案例貫穿全書,同時給出了基於Spring Boot、Spring Cloud、Kubernetes、Istio、AWS Lambda 五種架構風格的樣例工程。

作者簡介

周志明(博士)
人工智能與企業級研發資深專家,遠光軟件研究院院長,阿里雲MVP、騰訊雲TVP、華為雲MVP。在Java技術棧、微服務、雲原生架構等領域有深入研究。
開源技術的積極倡導者和推動者,QCon全球開發者大會明星講師、極客時間佈道師、InfoQ.CN專欄撰稿人,作為組織者或主講人,參與了多場線上、線下的技術佈道活動。
計算機技術作家,十年間出版過八部技術專著,口碑和銷量均得到業內認可,其中四本書在豆瓣上獲得了9.0分或以上的評價。如知名暢銷書《深入理解Java虛擬機:JVM高級特性與最佳實踐》目前已經出至第3版,累計印刷超過50次,仍長銷不衰,是中文計算機圖書領域公認的、難得一見的佳作。

目錄大綱

贊譽
自序
前言
第一部分 演進中的架構
第1章 服務架構演進史2
1.1 原始分佈式時代2
1.2 單體系統時代5
1.3 SOA時代8
1.4 微服務時代12
1.5 後微服務時代16
1.6 無服務時代19
第二部分 架構師的視角
第2章 訪問遠程服務24
2.1 遠程服務調用24
2.1.1 進程間通信24
2.1.2 通信的成本26
2.1.3 三個基本問題28
2.1.4 統一的RPC30
2.1.5 分裂的RPC32
2.2 REST設計風格34
2.2.1 理解REST35
2.2.2 RESTful的系統37
2.2.3 RMM41
2.2.4 不足與爭議45
第3章 事務處理48
3.1 本地事務49
3.1.1 實現原子性和持久性50
3.1.2 實現隔離性54
3.2 全局事務57
3.3 共享事務62
3.4 分佈式事務64
3.4.1 CAP與ACID64
3.4.2 可靠事件隊列67
3.4.3 TCC事務69
3.4.4 SAGA事務72
第4章 透明多級分流系統75
4.1 客戶端緩存76
4.1.1 強制緩存77
4.1.2 協商緩存79
4.2 域名解析81
4.3 傳輸鏈路83
4.3.1 連接數優化84
4.3.2 傳輸壓縮88
4.3.3 快速UDP網絡連接90
4.4 內容分發網絡92
4.4.1 路由解析92
4.4.2 內容分發95
4.4.3 CDN應用96
4.5 負載均衡97
4.5.1 數據鏈路層負載均衡99
4.5.2 網絡層負載均衡101
4.5.3 應用層負載均衡104
4.5.4 均衡策略與實現106
4.6 服務端緩存107
4.6.1 緩存屬性108
4.6.2 緩存風險117
第5章 架構安全性120
5.1 認證121
5.1.1 認證的標準121
5.1.2 認證的實現128
5.2 授權129
5.2.1 RBAC130
5.2.2 OAuth 2133
5.3 憑證140
5.3.1 Cookie-Session140
5.3.2 JWT142
5.4 保密147
5.4.1 保密的強度147
5.4.2 客戶端加密148
5.4.3 密碼存儲和驗證149
5.5 傳輸151
5.5.1 摘要、加密與簽名151
5.5.2 數字證書154
5.5.3 傳輸安全層157
5.6 驗證160
第三部分 分佈式的基石
第6章 分佈式共識166
6.1 Paxos168
6.1.1 Paxos的誕生169
6.1.2 算法流程169
6.1.3 工作實例172
6.2 Multi Paxos174
6.3 Gossip協議178
第7章 從類庫到服務180
7.1 服務發現180
7.1.1 服務發現的意義181
7.1.2 可用與可靠182
7.1.3 註冊中心實現185
7.2 網關路由186
7.2.1 網關的職責186
7.2.2 網絡I/O模型188
7.2.3 BFF網關190
7.3 客戶端負載均衡191
7.3.1 客戶端負載均衡器193
7.3.2 代理負載均衡器194
7.3.3 地域與區域196
第8章 流量治理198
8.1 服務容錯198
8.1.1 容錯策略199
8.1.2 容錯設計模式201
8.2 流量控制209
8.2.1 流量統計指標210
8.2.2 限流設計模式211
8.2.3 分佈式限流215
第9章 可靠通信217
9.1 零信任網絡217
9.1.1 零信任安全模型的特徵218
9.1.2 Google的實踐探索220
9.2 服務安全222
9.2.1 建立信任222
9.2.2 認證223
9.2.3 授權227
第10章 可觀測性230
10.1 事件日誌233
10.1.1 輸出233
10.1.2 收集與緩沖235
10.1.3 加工與聚合236
10.1.4 存儲與查詢237
10.2 鏈路追蹤239
10.2.1 追蹤與跨度239
10.2.2 數據收集240
10.2.3 追蹤規範化243
10.3 聚合度量244
10.3.1 指標收集245
10.3.2 存儲查詢248
10.3.3 監控預警250
第四部分 不可變基礎設施
第11章 虛擬化容器254
11.1 容器的崛起256
11.1.1 隔離文件:chroot256
11.1.2 隔離訪問:名稱空間257
11.1.3 隔離資源:cgroups258
11.1.4 封裝系統:LXC259
11.1.5 封裝應用:Docker260
11.1.6 封裝集群:Kubernetes263
11.2 以容器構建系統266
11.2.1 隔離與協作266
11.2.2 韌性與彈性271
11.3 以應用為中心的封裝275
11.3.1 Kustomize276
11.3.2 Helm與Chart277
11.3.3 Operator與CRD279
11.3.4 開放應用模型284
第12章 容器間網絡288
12.1 Linux網絡虛擬化288
12.1.1 網絡通信模型289
12.1.2 乾預網絡通信291
12.1.3 虛擬化網絡設備294
12.1.4 容器間通信304
12.2 容器網絡與生態306
12.2.1 CNM與CNI306
12.2.2 CNM到CNI308
12.2.3 網絡插件生態310
第13章 持久化存儲314
13.1 Kubernetes存儲設計314
13.1.1 Mount和Volume316
13.1.2 靜態存儲分配318
13.1.3 動態存儲分配322
13.2 容器存儲與生態325
13.2.1 Kubernetes存儲架構325
13.2.2 FlexVolume與CSI327
13.2.3 從In-Tree到Out-of-Tree329
13.2.4 容器插件生態331
第14章 資源與調度336
14.1 資源模型336
14.2 服務質量與優先級337
14.3 驅逐機制340
14.4 默認調度器342
第15章 服務網格346
15.1 透明通信的涅槃347
15.1.1 通信成本347
15.1.2 數據平面352
15.1.3 控制平面358
15.2 服務網格與生態360
15.2.1 服務網格接口361
15.2.2 通用數據平面API363
15.2.3 服務網格生態364
第五部分 技術方法論
第16章 向微服務邁進368
16.1 目的:微服務的驅動力369
16.2 前提:微服務需要的條件371
16.3 邊界:微服務的粒度375
16.4 治理:理解系統復雜性377
16.4.1 靜態的治理378
16.4.2 發展的治理380
附錄A 技術演示工程實踐383
附錄B 部署Kubernetes集群402