內容簡介
從技術演進講起,讓你充分了解系統資源、套用架構和軟體工程的發展歷程,從而擁有技術角度的全局視野;
圖書目錄
技術演進篇
第1部分 系統資源 2
第1章 作業系統 3
1.1 作業系統簡介 3
1.1.1 主要功能 4
1.1.2 系統結構 5
1.2 CPU指令集原理 6
1.2.1 特權指令集和非特權指令集 6
1.2.2 保護模式及核心態、用戶態 7
1.2.3 指令工作流程 8
1.3 核心 9
1.3.1 組成模組化 9
1.3.2 單核心 9
1.3.3 微核心 10
1.3.4 外核心 11
第2章 虛擬化 13
2.1 虛擬化概述 13
2.1.1 直接使用物理設備 13
2.1.2 虛擬化原理 14
2.2 虛擬化指令集 16
2.2.1 敏感指令集 17
2.2.2 虛擬化指令集的工作模式 17
2.3 虛擬化類型 20
2.3.1 全虛擬化 20
2.3.2 類虛擬化 21
2.3.3 硬體輔助虛擬化 22
2.4 虛擬化架構 24
2.4.1 裸金屬架構 24
2.4.2 宿主模式架構 25
2.5 常見的虛擬化產品 25
2.5.1 VMware 25
2.5.2 Xen 26
2.5.3 KVM 26
2.5.4 QEMU 27
2.5.5 NEMU 28
2.5.6 Firecracker 28
2.5.7 VirtualBox 28
2.5.8 Libvirt 29
2.5.9 Vagrant 30
第3章 雲計算 32
3.1 雲計算概述 32
3.1.1 虛擬化的不足 32
3.1.2 雲計算的特點 33
3.2 IaaS 34
3.2.1 雲的部署模式 34
3.2.2 IaaS的主要功能 36
3.2.3 IaaS架構 36
3.2.4 雲平台組織架構 37
3.2.5 OpenStack 39
3.2.6 雲平台部署架構 41
3.3 PaaS 42
3.3.1 簡介 43
3.3.2 核心功能 45
3.3.3 微軟Azure 47
3.3.4 PaaS的優缺點 48
3.4 SaaS 49
第4章 容器 53
4.1 容器簡介 53
4.1.1 容器技術的優缺點 53
4.1.2 大事記 54
4.2 基本技術 55
4.2.1 namespace 56
4.2.2 cgroup 59
4.2.3 rootfs 60
4.3 Docker 61
4.3.1 容器運行時 61
4.3.2 鏡像 63
4.3.3 Docker總結 64
4.4 核心容器技術 64
4.4.1 Kata 64
4.4.2 Firecracker 65
4.4.3 gVisor 66
4.4.4 Unikernel 67
4.5 容器與虛擬機 68
4.6 容器與PaaS 69
第5章 容器編排 70
5.1 容器編排簡介 70
5.1.1 大事記 70
5.1.2 Swarm與Kubernetes之爭 71
5.1.3 容器編排工具的核心功能 73
5.2 Kubernetes 74
5.2.1 設計理念與特性 74
5.2.2 運行架構 76
5.2.4 API對象 80
5.3 容器編排與PaaS 90
5.4 Kubernetes企業級實戰:OpenShift 91
5.5 實現有狀態套用和無狀態套用 91
5.5.1 無狀態套用與有狀態套用 92
5.5.2 從無狀態套用到Severless 92
5.5.3 Kubernetes對有狀態套用的管理 92
5.5.4 容器編排的最終目標 93
第2部分 套用架構 95
第6章 套用架構概述 96
6.1 架構與框架的區別 97
6.2 狹義的和廣義的套用架構 97
6.2.1 狹義的套用架構 97
6.2.2 廣義的套用架構 98
6.3 套用架構的定義 98
6.4 套用架構的目標 99
第7章 主流架構 101
7.1 “4+1”架構視圖 101
7.1.1 邏輯視圖 102
7.1.2 開發視圖 102
7.1.3 進程視圖 102
7.1.4 物理視圖 103
7.1.5 場景視圖 103
7.2 ArchiMate 104
7.2.1 ArchiMate概述 104
7.2.2 業務層 106
7.2.3 套用層 106
7.2.4 技術層 107
7.3 TOGAF框架 109
第8章 架構詳解 114
8.1 業務架構 114
8.1.1 業務場景 114
8.1.2 業務用例 115
8.1.3 業務實體 115
8.1.4 業務流程 116
8.2 套用架構 116
8.2.1 功能架構 117
8.2.2 數據架構 121
8.2.3 實現架構 124
8.3 基礎架構 131
8.3.1 物理架構 131
8.3.2 運行架構 131
第9章 典型的套用架構模式 133
9.1 單體架構 133
9.1.1 單體架構的特點 133
9.1.2 功能架構 134
9.1.3 單體套用的數據最佳化 136
9.1.4 單體架構的優缺點 142
9.2 基於組件的架構 143
9.2.1 特性 144
9.2.2 微核心架構 145
9.2.3 兩種基於組件的套用開發、運行框架 145
9.2.4 組件設計原則 146
9.3 分散式與SOA 148
9.3.1 分散式 148
9.3.2 SOA 150
第10章 微服務架構 160
10.1 微服務架構簡介 160
10.1.1 微服務與套用 161
10.1.2 微服務架構與SOA 162
10.1.3 微服務架構與容器編排 162
10.1.4 微服務架構與組織架構 163
10.2 採用微服務架構的優勢與難點 163
10.3 微服務架構詳解 165
10.3.1 功能架構 165
10.3.2 實現架構 166
10.3.3 部署單元 167
10.4 設計原則 167
10.4.1 服務註冊中心 167
10.4.2 API網關 168
10.4.3 跨服務通信 169
10.4.4 API設計 170
10.4.5 數據一致性處理 172
第11章 微服務框架 181
11.1 微服務架構與微服務框架 181
11.2 核心功能 182
11.2.1 服務註冊發現 182
11.2.2 服務負載路由 183
11.2.3 統一配置 184
11.2.4 服務編排與彈性伸縮 184
11.2.5 流量管控 185
11.2.6 可觀察運維 186
11.3 框架分類 188
11.3.1 業務處理框架 188
11.3.2 SDK框架 189
11.3.3 服務格線 190
第3部分 軟體工程 195
第12章 套用設計 196
12.1 明確願景 196
12.1.1 目標對象 197
12.1.2 度量價值 197
12.1.3 詳細描述 198
12.1.4 上下文圖 198
12.2 明確組織架構 200
12.3 頂層業務建模 201
12.3.1 概述 201
12.3.2 業務領域 202
12.3.3 業務場景 205
12.4 套用需求分析 209
12.4.1 概述 209
12.4.2 識別角色 210
12.4.3 業務實體 210
12.4.4 業務流程 212
12.5 套用設計建模 214
12.5.1 概述 214
12.5.2 圈定微服務 215
12.5.3 套用架構設計 216
12.6 領域驅動建模 218
12.6.1 分散式套用建模的痛點 219
12.6.2 DDD概述 219
12.6.3 DDD的優勢 220
12.6.4 基本概念 221
12.6.5 實施步驟 229
12.6.6 DDD與套用設計 238
第13章 軟體開發 240
13.1 瀑布模型 240
13.2 敏捷開發模型 242
13.2.1 敏捷宣言 243
13.2.2 Scrum 244
13.2.3 極限編程方法 245
第14章 開發運維一體化:DevOps 248
14.1 精益思想 248
14.1.1 起源 248
14.1.2 精益生產 249
14.1.3 精益原則 250
14.1.4 精益軟體開發 251
14.1.5 價值探索 253
14.1.6 IT價值流 253
14.1.7 精益和敏捷 255
14.2 持續集成 255
14.2.1 原則 255
14.2.2 步驟 256
14.3 持續交付與持續部署 258
14.3.1 持續交付 258
14.3.2 持續部署 259
14.3.3 特性發布 263
14.4 DevOps與CI/CD 269
14.4.1 定義 270
14.4.2 原則與推廣 271
14.4.3 三步工作法 272
14.5 測試 275
14.5.1 概述 275
14.5.2 功能性測試 277
14.5.3 非功能性測試 281
14.6 DevOps與敏捷開發、Kubernetes、微服務、套用架構模式的關係 283
第15章 SRE運維 286
15.1 SRE運維簡介 286
15.1.1 SLA 287
15.1.2 運維的發展階段 288
15.1.3 架構層次 288
15.2 監控 289
15.2.1 監控概述 289
15.2.2 多層監控 291
15.2.3 告警 292
15.3 日誌 293
15.3.1 日誌系統架構 293
15.3.2 日誌的採集、匯總與展示 294
15.4 故障排查 295
15.4.1 具體步驟 295
15.4.2 監控檢查 296
15.5 作業運行 296
第16章 數位化運營 298
16.1 數位化運營概述 298
16.1.1 運營數據 298
16.1.2 角色分類 299
16.1.3 用戶畫像 299
16.2 數據處理 300
16.2.1 數據採集 300
16.2.2 數據建模 301
16.2.3 數據分析 301
16.2.4 指標分析 302
16.3 反饋流程 303
16.4 驗證模式 304
16.4.1 A/B測試 304
16.4.2 灰度發布 305
16.5 平台架構 306
16.5.1 運維數據平台 306
16.5.2 智慧型化運維 306
最佳實踐篇
第4部分 架構、套用落地與中台構建 310
第17章 雲原生架構 311
17.1 雲原生的定義 311
17.1.1 12因子套用 311
17.1.2 雲原生架構的特徵 313
17.1.3 CNCF對雲原生的定義 314
17.1.4 本書對雲原生的定義 315
17.2 關鍵技術 318
17.2.1 不可變基礎設施(容器) 318
17.2.2 聲明式編排(Kubernetes) 319
17.2.3 微服務架構(解耦性) 320
17.2.4 動態賦能(服務格線) 320
17.2.5 適應度函式(引導性) 320
17.2.6 領域驅動建模(統一模型) 321
17.2.7 CI/CD/CO 321
17.3 雲原生套用的實現過程 322
第18章 套用落地最佳實踐 323
18.1 雲原生化條件 323
18.1.1 團隊能力建設 323
18.1.2 推薦引入雲原生化的場景 324
18.1.3 不推薦引入雲原生化的場景 326
18.2 演進式的流程 327
18.3 套用改造模式 328
18.3.1 雙胞胎模式 328
18.3.2 絞殺者模式 328
18.3.3 修繕者模式 329
18.4 套用拆分原則 330
18.4.1 按業務能力拆分 330
18.4.2 按DDD子領域拆分 330
18.4.3 其他原則 332
18.5 API設計與治理 333
18.5.1 前後端分離 334
18.5.2 規範化API 334
18.5.3 並行或異步調用 336
18.5.4 業務聚合 336
18.6 套用狀態分離 337
18.6.1 統一配置管理 338
18.6.2 將冷數據存儲在資料庫中 338
18.6.3 快取熱數據 339
18.6.4 靜態資源對象存儲 340
18.7 套用容器化 340
18.8 非侵入式監控接入 345
18.9 流水線建設 347
18.10 架構 347
第19章 中台構建 350
19.1 中台簡介 350
19.1.1 中台的由來 351
19.1.2 中台與雲原生套用 351
19.1.3 中台架構 352
19.1.4 中台與微服務套用 353
19.2 中台核心功能 355
19.3 中台分類 355
19.3.1 技術中台 355
19.3.2 數據中台 356
19.3.3 業務中台 356
19.4 中台的優點 357
19.5 中台對組織架構的挑戰 357
19.5.1 高層的支持 357
19.5.2 參與人員的理念相同 358
19.5.3 中台價值的量化 358
19.5.4 PaaS/SaaS與中台 358
19.6 中台落地過程 359
作者簡介
賀阮
攻讀博士期間的主要研究方向是雲計算安全。畢業之後一直深耕於雲計算領域,工作內容涉及虛擬化核心、容器、調度、安全、微服務、套用架構、軟體設計開發等,工作崗位覆蓋科研、開發、產品架構、售前解決方案、售中售後支持等。
曾先後任OpenStack基金會董事、ISO/IEC JTC1/SC38和ISO/IEC JTC1/SC27標樣委員會委員、聯合國國際電信聯盟(ITU)雲計算安全組副報告人,以及多個雲計算學術會議、期刊編輯等職位,從各個維度見證了雲計算行業的發展。
史冰迪
2015年畢業於中央財經大學計算機科學與技術專業,同年進入中國軟體與技術服務股份有限公司,從事政務信息化相關工作。先後任軟體系統研發工程師、需求經理、軟體項目經理和集成項目大項目經理等多個職位,參與過軟體系統開發生命周期全流程相關工作。2020年進入中國信息通信研究院從事政務信息化項目管理工作,從另一個方向繼續在政務信息化方向發力,不斷努力將電子政務、數字政府等工作與各類新技術結合。