云原生技術(shù)中臺:從分布式到云平臺設(shè)計
定 價:79.8 元
- 作者:陳濤 索海燕
- 出版時間:2022/10/1
- ISBN:9787115596239
- 出 版 社:人民郵電出版社
- 中圖法分類:TP393.027
- 頁碼:238
- 紙張:
- 版次:01
- 開本:16開
本書清晰、完整地展現(xiàn)云平臺技術(shù)架構(gòu)相關(guān)的知識,包含3個部分:第一部分介紹服務(wù)擴容的發(fā)展歷程,概述分布式架構(gòu)與中臺架構(gòu)。第二部分分析傳統(tǒng)分布式架構(gòu)的核心技術(shù),圍繞中心化協(xié)同工作機制和分布式服務(wù)間的通信問題,介紹ZooKeeper、Netty、Dubbo等分布式技術(shù)的原理和實戰(zhàn)案例。第三部分分析云平臺技術(shù)組件,主要包括構(gòu)建PaaS平臺所用到的核心技術(shù)組件。這一部分首先分析Docker容器技術(shù)以及Kubernetes編排引擎的搭建和基礎(chǔ)原理,然后介紹指標采集功能、告警功能以及日志管理框架,最后對微服務(wù)治理框架Istio在云平臺的應(yīng)用場景進行展望。
本書結(jié)合算法與源碼展示云原生應(yīng)用全景,闡述開源技術(shù),能夠幫助讀者搭建私有云平臺,適合高校計算機及相關(guān)專業(yè)學生、容器云初學者,以及對Docker有一定了解并希望深入研究和探索云技術(shù)的工程師閱讀。
隨著互聯(lián)網(wǎng)產(chǎn)品的用戶量和業(yè)務(wù)量不斷增加,單個應(yīng)用服務(wù)器已經(jīng)不能滿足互聯(lián)網(wǎng)信息系統(tǒng)的性能需求,系統(tǒng)逐漸發(fā)展為分布式架構(gòu)。同時,隨著微服務(wù)技術(shù)、容器集群管理技術(shù)和工具的不斷發(fā)展,“大中臺”戰(zhàn)略愈發(fā)得到重視,基于云平臺架構(gòu)的設(shè)計進一步提高了服務(wù)效率。
本書重點介紹分布式架構(gòu)和云平臺架構(gòu)的核心技術(shù),涉及ZooKeeper、Netty、Dubbo、Docker、Kubernetes、Prometheus和Istio等流行的技術(shù)框架。書中從安裝入門到應(yīng)用部署,展示云原生應(yīng)用全景,幫助讀者建立云原生技術(shù)知識體系,并指導讀者進行實踐,使其具備開發(fā)分布式或云平臺微服務(wù)的能力。
本書具有以下特色:
·兼顧原理與實戰(zhàn),結(jié)合算法與源碼,所有命令行均已經(jīng)過校驗;
·選用系統(tǒng)、流行的云原生核心技術(shù),可指導企業(yè)進行技術(shù)選型;
·可幫助企業(yè)擺脫對公有云臺的依賴,搭建自己的私有云平臺。
陳濤,畢業(yè)于浙江大學(軟件工程碩士)和浙江師范大學(軟件工程碩士),現(xiàn)就職于畢馬威信息技術(shù)服務(wù)(南京)有限公司,主要從事與Docker、Kubernetes相關(guān)的研究工作。擁有豐富的系統(tǒng)架構(gòu)設(shè)計經(jīng)驗,曾參與多個大型分布式網(wǎng)站的架構(gòu)設(shè)計與開發(fā)工作,指導過多個互聯(lián)網(wǎng)系統(tǒng)的微服務(wù)改造工作,擅長Java多線程、分布式框架和PaaS平臺設(shè)計,對云原生有深入的研究。曾就職于華為南京研究所,從事華為云研究工作,擅長運營商私有云服務(wù)治理解決方案,其負責的華為微服務(wù)引擎CSE(Cloud Service Engine)項目已在全球廣泛部署。此外,還曾就職于南京焦點科技股份有限公司,從事分布式即時通信系統(tǒng)的設(shè)計和開發(fā)工作。
索海燕,畢業(yè)于蘇州大學(通信與信息工程碩士),現(xiàn)就職于江蘇省人民醫(yī)院信息處,從事醫(yī)療信息系統(tǒng)的建設(shè)和管理工作,擁有豐富的系統(tǒng)建設(shè)和運維管理經(jīng)驗。重點關(guān)注云計算、大數(shù)據(jù)、人工智能、區(qū)塊鏈等技術(shù)領(lǐng)域,對云計算、網(wǎng)絡(luò)技術(shù)、網(wǎng)絡(luò)存儲有深刻認識,致力于將醫(yī)療信息化建設(shè)工作與各類新技術(shù)結(jié)合。參與了《健康數(shù)據(jù)分析》(Healthcare Data Analytics)一書的翻譯工作。
第 一部分 分布式架構(gòu)與中臺架構(gòu)
第 1章 分布式架構(gòu)與中臺架構(gòu)簡介 3
1.1 計算機服務(wù)擴容的發(fā)展歷程 3
1.1.1 從單一應(yīng)用架構(gòu)到集群架構(gòu) 3
1.1.2 從集群架構(gòu)到垂直應(yīng)用架構(gòu) 4
1.1.3 微服務(wù)與分布式架構(gòu) 5
1.2 分布式架構(gòu)概述 7
1.2.1 分布式架構(gòu)設(shè)計理念 7
1.2.2 分布式架構(gòu)核心功能 8
1.2.3 分布式架構(gòu)設(shè)計難點 8
1.3 大中臺架構(gòu)概述 9
第二部分 傳統(tǒng)分布式架構(gòu)的核心技術(shù)
第 2章 分布式中心化集群:ZooKeeper原理與實戰(zhàn) 15
2.1 ZooKeeper基礎(chǔ) 15
2.1.1 ZooKeeper應(yīng)用場景 15
2.1.2 ZooKeeper設(shè)計理念 16
2.1.3 ZooKeeper源碼和安裝 18
2.2 ZooKeeper內(nèi)核原理 19
2.2.1 Znode類型 20
2.2.2 ZnodeAPI 21
2.2.3 Znode狀態(tài)信息 23
2.2.4 監(jiān)聽點與通知 23
2.2.5 ACL權(quán)限控制 25
2.2.6 序列化 27
2.2.7 通信協(xié)議 28
2.2.8 事務(wù) 31
2.2.9 事務(wù)日志 32
2.2.10 內(nèi)存數(shù)據(jù)模型 33
2.2.11 磁盤數(shù)據(jù)模型 35
2.2.12 會話模型 37
2.3 ZooKeeper集群原理 39
2.3.1 集群角色 39
2.3.2 Paxos算法 40
2.3.3 ZAB協(xié)議 40
2.3.4 群首選舉 42
2.3.5 集群啟動流程 45
2.4 Apache Curator客戶端實戰(zhàn) 48
2.4.1 搶購系統(tǒng)實戰(zhàn) 48
2.4.2 分布式鎖和分布式信號量 61
2.4.3 分布式線程同步 64
第3章 分布式通信框架:Netty和Dubbo原理與實戰(zhàn) 66
3.1 分布式通信框架基礎(chǔ) 66
3.1.1 Netty特性 67
3.1.2 Dubbo特性 69
3.1.3 Netty、Dubbo和ZooKeeper的關(guān)系 70
3.1.4 Netty服務(wù)端啟動流程 71
3.1.5 Dubbo SPI和服務(wù)導出 75
3.2 Netty和Dubbo實戰(zhàn) 80
3.2.1 搶購系統(tǒng)監(jiān)控功能需求分析 80
3.2.2 搶購系統(tǒng)監(jiān)控功能實戰(zhàn) 81
第三部分 構(gòu)建PaaS平臺的核心云平臺技術(shù)組件
第4章 Docker容器技術(shù)原理與實戰(zhàn) 89
4.1 Docker基礎(chǔ) 89
4.1.1 Docker背景與關(guān)鍵詞 89
4.1.2 Linux Docker運行環(huán)境 92
4.1.3 macOS和Windows Docker運行環(huán)境 94
4.1.4 運行第 一個Docker容器 94
4.2 Docker核心原理 95
4.2.1 鏡像分層概述 95
4.2.2 鏡像存儲 97
4.2.3 鏡像命名和構(gòu)建 98
4.2.4 容器進程 99
4.2.5 容器生命周期和重啟策略 101
4.2.6 容器資源限制 102
4.3 Docker容器實戰(zhàn) 103
4.3.1 制作搶購系統(tǒng)監(jiān)控功能的鏡像 103
4.3.2 運行搶購系統(tǒng)監(jiān)控功能的容器 107
第5章 Kubernetes編排引擎 112
5.1 Kubernetes基礎(chǔ) 112
5.1.1 Kubernetes特性 112
5.1.2 Kubernetes核心關(guān)鍵詞 113
5.1.3 Kubernetes和PaaS的關(guān)系 114
5.2 Kubernetes集群部署 115
5.2.1 準備虛擬機 115
5.2.2 必要環(huán)境配置 117
5.2.3 安裝Docker 118
5.2.4 安裝kubeadm、kubelet和kubectl 118
5.2.5 部署首個Master 120
5.2.6 加入其他Master 121
5.2.7 加入Node 122
5.2.8 部署網(wǎng)絡(luò)插件 122
5.3 Kubernetes集群管理 124
5.3.1 Node信息 124
5.3.2 Master信息 126
5.3.3 可視化管理界面 127
5.3.4 集群安全策略 129
5.3.5 理解Namespace 130
5.3.6 理解ConfigMap和Secret 131
5.3.7 理解Service 134
5.3.8 理解API Server 137
5.4 深入理解Pod組件原理 143
5.4.1 理解Pod核心概念 143
5.4.2 理解Pod生命周期 144
5.4.3 理解Pod資源限制 146
5.4.4 理解QoS 149
5.5 深入理解Pod調(diào)度原理 151
5.5.1 理解標簽和選擇器定向調(diào)度 151
5.5.2 理解Pod親和性和互斥調(diào)度 152
5.5.3 理解Taints和Tolerations 155
5.5.4 理解Pod優(yōu)先級與搶占調(diào)度 157
5.5.5 理解Deployment 158
5.5.6 理解HPA 159
5.5.7 理解StatefulSet和Job 161
5.5.8 理解調(diào)度器原理 162
5.6 深入理解驅(qū)逐機制 164
5.6.1 理解kubelet垃圾回收策略 164
5.6.2 理解驅(qū)逐信號和驅(qū)逐閾值 165
5.6.3 理解驅(qū)逐策略對Node的影響 167
5.6.4 理解驅(qū)逐策略對Pod的影響 167
5.6.5 理解節(jié)點OOM內(nèi)存不足 169
5.6.6 實踐驅(qū)逐機制 169
5.7 深入理解Pod滾動升級 170
5.7.1 滾動升級產(chǎn)生的背景 170
5.7.2 理解Pod滾動升級過程 171
5.7.3 理解Rollout回滾 173
5.8 深入理解PV存儲 174
5.8.1 理解PV 174
5.8.2 理解PVC 176
5.9 Kubernetes實戰(zhàn) 178
5.9.1 部署搶購系統(tǒng)運維功能的準備工作 178
5.9.2 在Kubernetes集群上運行搶購系統(tǒng)運維功能 184
5.9.3 滾動升級實戰(zhàn) 190
第6章 Prometheus指標監(jiān)控與告警 194
6.1 Prometheus基礎(chǔ) 194
6.1.1 Prometheus特性 194
6.1.2 Prometheus使用方式 197
6.1.3 Prometheus部署在Docker 198
6.1.4 Prometheus部署在Kubernetes 199
6.2 Prometheus指標概念 201
6.2.1 Prometheus指標名稱 201
6.2.2 Prometheus指標類型 203
6.3 Prometheus監(jiān)控 204
6.3.1 監(jiān)控Kubernetes集群節(jié)點 204
6.3.2 第三方廠商提供的Exporter 207
第7章 Kubernetes集群日志管理 209
7.1 Kubernetes集群日志架構(gòu) 209
7.1.1 基本日志記錄 209
7.1.2 節(jié)點級別日志記錄 210
7.1.3 集群級別日志記錄 210
7.2 Elastic Stack 211
7.2.1 Elasticsearch概述 212
7.2.2 Elastic Stack應(yīng)用場景 214
7.2.3 Elastic Stack和Prometheus對比 216
7.3 Elastic Stack安裝方式 218
7.3.1 使用Docker安裝 218
7.3.2 使用Helm Chart安裝 218
7.3.3 使用Elastic Cloud方式安裝 218
7.3.4 創(chuàng)建Kibana實例 221
7.3.5 使用Elastic Stack檢索日志 224
7.4 Elastic Beats 225
7.4.1 Beats組件 225
7.4.2 Filebeat分析 226
第8章 Istio服務(wù)治理 229
8.1 Istio概念 229
8.1.1 Istio是什么 229
8.1.2 Istio核心組件 231
8.2 環(huán)境準備:在Kubernetes上安裝Istio 233
8.2.1 下載Istio 234
8.2.2 安裝Istio 234
8.2.3 部署B(yǎng)ookinfo示例 235
8.2.4 部署B(yǎng)ookinfo步驟 236