《架構演變實戰:從單體到微服務再到中台》是2022年7月電子工業出版社出版的圖書,作者是潘志偉。
本書以單體架構為開篇,實戰+基礎理論相結合,逐步升級為微服務架構,並最佳化微服務架構的每個細節,最終升級為中台架構,整個升級思路講解清晰。
基本介紹
- 中文名:架構演變實戰:從單體到微服務再到中台
- 作者:潘志偉
- 出版時間:2022年7月
- 出版社:電子工業出版社
- 頁數:420 頁
- ISBN:9787121436123
- 定價:128 元
- 開本:16 開
內容簡介,圖書目錄,作者簡介,
內容簡介
詳盡闡述了架構選型、拆分、實施、最佳化等微服務落地過程中所遇到的問題和解決辦法,既有整體的理論性指導,又有對Dubbo、Spring Cloud等微服務工具的詳盡解釋。
圖書目錄
第1章 從單體架構開始 1
1.1 單體套用最佳化之路 2
1.1.1 套用無狀態 3
1.1.2 數據讀/寫分離 4
1.1.3 分庫分表 5
1.2 比性能更可怕的問題 7
1.3 微服務框架選型 8
1.3.1 總體架構對比 9
1.3.2 編程方式對比 10
1.4 第一次失敗的微服務重構 10
第2章 服務拆分與工程劃分 14
2.1 實施微服務架構的前置條件 15
2.1.1 思想統一 15
2.1.2 充分培訓 16
2.1.3 標準化的工程 17
2.1.4 自動化部署 18
2.2 服務拆分的角度和原則 19
2.2.1 服務拆分的角度 20
2.2.2 服務拆分的原則 21
2.3 服務拆分案例剖析 23
2.4 項目框架自動化 26
2.5 微服務的數據請求模型 31
2.6 日誌收集和控制 33
第3章 微服務模式開發 39
3.1 服務治理的核心概念 40
3.1.1 分散式系統 40
3.1.2 RPC框架 43
3.1.3 服務治理 44
3.2 註冊中心簡介 47
3.2.1 ZooKeeper 47
3.2.2 Nacos 51
3.3 Provider的配置與發布 53
3.4 Consumer的配置 56
3.5 對負載均衡策略的選擇 58
3.6 Dubbo的常用特性 64
3.6.1 服務的多版本管理 65
3.6.2 上下文信息 66
3.6.3 隱式傳參 67
3.7 SPI原理介紹 67
3.7.1 Java SPI的執行流程 68
3.7.2 Dubbo SPI的執行流程 70
3.7.3 Dubbo SPI原理解析 74
3.8 Filter的擴展使用場景 77
3.8.1 Dubbo Filter的執行過程 77
3.8.2 Dubbo Filter的使用場景 81
3.9 Dubbo服務發布和調用分析 85
3.9.1 標籤解析 87
3.9.2 服務註冊和發布流程 88
3.9.3 服務引用流程和服務調用流程 91
第4章 實施微服務架構的全過程 94
4.1 前後端分離 95
4.2 服務無狀態化 96
4.3 統一認證服務 97
4.3.1 令牌方式 98
4.3.2 JWT方式 100
4.4 微服務設計模式 105
4.5 微服務實戰詳解 106
4.5.1 需求背景 107
4.5.2 技術選型 108
4.5.3 設計資料庫表 110
4.5.4 代碼結構模型 114
4.5.5 服務發布上線 120
4.6 線上問題及解決方案 122
4.6.1 服務執行緒池滿 122
4.6.2 資料庫的CPU占用率飆高 124
4.6.3 無止境的循環依賴 125
第5章 微服務進階最佳化 126
5.1 快取分類 127
5.1.1 CDN快取 128
5.1.2 本地快取 129
5.1.3 分散式快取 135
5.2 微服務快取最佳化 137
5.2.1 單級快取 137
5.2.2 多級快取 138
5.2.3 快取管理策略 140
5.3 串列轉並行 144
5.3.1 串列、並行的概念 144
5.3.2 將串列調用轉為並行調用的方法 145
5.3.3 案例實戰 147
5.4 服務的熔斷與降級 150
5.4.1 熔斷器的工作原理 150
5.4.2 服務降級的原理 152
5.4.3 Hystrix詳解 153
5.4.4 Sentinel詳解 158
5.4.5 熔斷器與Dubbo的集成 165
5.4.6 狀態監控 168
5.5 限流 170
5.5.1 限流算法 170
5.5.2 如何進行限流 171
5.5.3 單機限流 171
5.5.4 分散式限流 172
5.5.5 混合限流 174
5.6 接口的冪等性 174
5.6.1 為什麼需要冪等性 175
5.6.2 如何保證接口的冪等性 175
5.6.3 冪等實戰 179
5.7 配置中心 180
5.7.1 常見的配置方式 180
5.7.2 配置中心概述 181
5.7.3 案例實戰 182
5.7.4 案例說明 183
5.8 訊息佇列 183
5.8.1 為什麼使用訊息佇列 183
5.8.2 訊息佇列的使用場景 185
5.9 分散式事務 189
5.9.1 事務的特性 189
5.9.2 分散式事務方案 191
第6章 億級流量網關開發實戰 200
6.1 為什麼使用網關 201
6.1.1 網關的職責和工作原理 202
6.1.2 核心功能 203
6.2 網關的高可用性設計 207
6.2.1 高可用性的衡量標準 207
6.2.2 影響系統高可用性的因素 209
6.2.3 提升系統可用性的常用方法 209
6.3 從零開始自研高性能異步網關 211
6.3.1 API協定的制定 211
6.3.2 API的註冊與發布 211
6.3.3 異步化請求 215
6.3.4 泛化調用 220
6.3.5 功能外掛程式化 223
6.3.6 請求快照 226
6.3.7 API生命周期 227
6.4 網關最佳化 228
6.4.1 資源隔離 228
6.4.2 業務執行緒分離 230
6.4.3 Epoll加速 231
6.4.4 高速快取 232
6.4.5 自恢復能力 234
6.5 自研網關所遇到的難題 234
6.5.1 網關找不到服務提供者 235
6.5.2 多餘的class欄位 236
6.5.3 錯誤傳值 236
6.5.4 日期格式異常 237
6.5.5 自定義異常失效 238
6.5.6 源碼修改如何集成 239
第7章 微服務之服務測試的演進 242
7.1 測試模型的演進 243
7.1.1 倒三角測試模型 243
7.1.2 金字塔測試模型 244
7.1.3 橄欖球測試模型 245
7.1.4 契約測試模型 246
7.2 微服務架構的測試流程 247
7.2.1 測試策略 247
7.2.2 單元測試 249
7.2.3 API測試 252
7.2.4 服務框架測試 254
7.3 構建契約測試平台 255
7.3.1 測試面臨的阻礙 255
7.3.2 契約測試的核心思想 258
7.3.3 自研契約測試平台 260
7.3.4 數據採集流程 264
7.3.5 契約測試的核心代碼 269
7.3.6 契約驗證流程 277
7.4 混沌工程 280
7.4.1 理解混沌工程 281
7.4.2 如何實施混沌實驗 283
7.4.3 CPU滿載實驗 284
7.4.4 磁碟寫滿實驗 285
7.4.5 記憶體負載實驗 286
7.4.6 資料庫調用延時實驗 286
7.4.7 Redis調用延時實驗 287
7.4.8 Dubbo服務延時實驗 288
7.4.9 Dubbo執行緒池滿實驗 289
7.4.10 混沌實驗的可視化 290
第8章 容量預估與服務上線 291
8.1 持續集成和持續交付 292
8.1.1 為什麼需要持續集成和持續交付 292
8.1.2 持續集成和持續交付的流程 296
8.1.3 搭建持續集成平台 301
8.1.4 持續集成項目實戰 324
8.2 灰度發布 337
8.2.1 灰度發布介紹 338
8.2.2 灰度發布的流程 340
8.2.3 灰度發布實戰 343
8.3 搭建全鏈路壓測平台 348
8.3.1 實施全鏈路壓測的原則 349
8.3.2 流量染色與數據隔離 351
8.3.3 如何生成壓測流量 353
8.3.4 全鏈路壓測實戰 355
8.4 生產環境容量預估 367
8.4.1 容量預估的參考指標 368
8.4.2 硬體選型 370
8.4.3 容量預估實戰 371
第9章 中台架構設計 376
9.1 什麼是中台 377
9.1.1 研發亂象 377
9.1.2 中台的定義 379
9.1.3 中台的分類 380
9.1.4 企業是否需要中台 381
9.1.5 中台對企業的價值 382
9.2 業務中台的搭建步驟 382
9.2.1 高管的介入決定成敗 382
9.2.2 獨立中台的產品經理 385
9.2.3 獨立中台的技術團隊 389
9.2.4 需求邊界管理 390
9.2.5 業務中台的架構設計 391
9.3 業務中台實戰 392
9.3.1 需求分析 393
9.3.2 架構實現 395
9.3.3 業務流程 396
9.3.4 業務線接入 399
9.4 中台的績效考核標準 401
9.5 中台的弊端 403
9.5.1 不同業務線的需求不具備共性 403
9.5.2 需求的優先權被降低 403
9.5.3 項目組溝通難 404
9.5.4 業務線被動升級 405
9.6 實戰總結 406
作者簡介
潘志偉
某科技公司技術總監,阿里雲MVP、QCon演講嘉賓,擁有十多年的軟體架構設計經驗,擅長分散式架構與微服務架構設計及中台規劃,目前帶領研發團隊承擔系統的分析、架構設計、實施、演進,以及團隊管理和培訓等工作,有獨到的團隊建設和管理經驗。