高性能架構(gòu):多級網(wǎng)關(guān)與多級緩存實(shí)踐 版權(quán)信息
- ISBN:9787522624389
- 條形碼:9787522624389 ; 978-7-5226-2438-9
- 裝幀:一般膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>
高性能架構(gòu):多級網(wǎng)關(guān)與多級緩存實(shí)踐 本書特色
隨著現(xiàn)如今的業(yè)務(wù)系統(tǒng)愈發(fā)復(fù)雜,并發(fā)日益增多,分布式系統(tǒng)、微服務(wù)系統(tǒng)等應(yīng)運(yùn)而生。如何保證系統(tǒng)的高性能、高可用以及高可擴(kuò)展,成了我們經(jīng)常要面對的“痛點(diǎn)”,而多級網(wǎng)關(guān)與多級緩存架構(gòu)系統(tǒng)就是很好的解決方案。本書作者從零講授,深入淺出講解多級架構(gòu)的方方面面,從概念到原理再到實(shí)現(xiàn),系統(tǒng)性強(qiáng),并且融合了大量實(shí)踐經(jīng)驗(yàn),極具參考價值。
高性能架構(gòu):多級網(wǎng)關(guān)與多級緩存實(shí)踐 內(nèi)容簡介
在高并發(fā)的場景之下,企業(yè)級的工業(yè)接口api調(diào)用并不是通常的簡單直連調(diào)用,如果有緩存作為媒介,那么我們需要考慮到綜合的方方面面。 本書會以極其簡單的方式開始進(jìn)行學(xué)習(xí),會有理論會有實(shí)操演練。哪怕你是初級開發(fā)也能很好的學(xué)習(xí)到進(jìn)階技能。我們會劃分為微服務(wù)、網(wǎng)關(guān)中間件Nginx、緩存中間件Redis、多級緩存以及云原生五個階段,整體內(nèi)容循序漸進(jìn),使得你在學(xué)習(xí)的過程中也是隨著企業(yè)、團(tuán)隊(duì)、技能的成長而成長。 本書的整體的思路將會通過對后端接口的讀寫操作所提出的高并發(fā)疑問逐步演進(jìn),開拓思維,逐步對其進(jìn)行拓展演進(jìn),*終結(jié)合'多級'這個理念,來達(dá)到并且可以滿足千萬級的高并發(fā)要求。 此外,本書不僅僅只有緩存與網(wǎng)關(guān),我們還包含了其他的中間件,比如消息隊(duì)列RabbitMQ、數(shù)據(jù)同步Canal等,我們通過代碼實(shí)踐會學(xué)習(xí)到更多更全面的市場主流的技能綜合解決方案。甚至在*后我們也會通過結(jié)合云原生k8s與kubesphere來實(shí)現(xiàn)devops的CICD的落地方案。
高性能架構(gòu):多級網(wǎng)關(guān)與多級緩存實(shí)踐 目錄
推薦序
前言
致謝
基 礎(chǔ) 篇
第1章 基礎(chǔ)環(huán)境與軟件配備 2
1.1 Java的歷史發(fā)展簡介 2
1.2 JDK8的安裝 2
1.2.1 Java運(yùn)行時環(huán)境JDK 2
1.2.2 Windows系統(tǒng)安裝JDK8 3
1.2.3 MacOS(Intel)系統(tǒng)安裝JDK8 9
1.2.4 MacOS(arm64)系統(tǒng)安裝JDK8 11
1.3 安裝Maven,配置項(xiàng)目工程的構(gòu)建管理工具 13
1.3.1 Maven概述 13
1.3.2 Windows系統(tǒng)安裝Maven 14
1.3.3 MacOS系統(tǒng)安裝Maven 16
1.3.4 配置阿里云鏡像倉庫 16
1.4 開發(fā)工具 17
1.5 本章小結(jié) 17
第2章 Docker容器化入門 19
2.1 內(nèi)網(wǎng)互通原則 19
2.2 容器化引擎Docker 20
2.2.1 虛擬化與容器化技術(shù) 20
2.2.2 Docker的架構(gòu) 21
2.2.3 Docker的隔離機(jī)制 22
2.2.4 Docker的安裝 22
2.2.5 Docker的啟動 23
2.2.6 Docker的加速 24
2.3 使用Docker安裝數(shù)據(jù)庫 26
2.3.1 使用Docker的pull命令拉取鏡像 26
2.3.2 開啟CentOS7的ipv4 27
2.3.3 使用docker run運(yùn)行鏡像 27
2.3.4 可視化數(shù)據(jù)庫工具 29
2.3.5 Docker命令 31
2.4 Docker鏡像的提交與推送 34
2.4.1 提交鏡像 34
2.4.2 自定義tag標(biāo)簽 35
2.4.3 推送鏡像 35
2.5 本章小結(jié) 36
第3章 構(gòu)建Web服務(wù)與接口 37
3.1 構(gòu)建Web項(xiàng)目 37
3.1.1 使用Maven初始化項(xiàng)目 37
3.1.2 搭建SpringBoot工程 40
3.1.3 編寫Restful風(fēng)格接口 45
3.1.4 dev與prod環(huán)境切換 47
3.2 集成持久層框架 48
3.2.1 集成數(shù)據(jù)源 48
3.2.2 整合MyBatis 50
3.2.3 數(shù)據(jù)構(gòu)建 52
3.2.4 數(shù)據(jù)庫逆向工具 53
3.2.5 編寫service業(yè)務(wù)層 55
3.2.6 @Junit操作持久層 56
3.2.7 對外暴露接口服務(wù) 58
3.3 本章小結(jié) 60
第4章 本地緩存Caffeine 61
4.1 進(jìn)程間與進(jìn)程外緩存 61
4.1.1 什么是緩存 61
4.1.2 進(jìn)程內(nèi)緩存與分類 62
4.1.3 進(jìn)程外緩存 64
4.2 使用Caffeine本地緩存 65
4.2.1 集成Caffeine 65
4.2.2 使用junit進(jìn)行Caffeine測試 66
4.2.3 Caffeine的值為空設(shè)值操作 67
4.3 SpringBoot整合Caffeine本地緩存 68
4.3.1 集成Caffeine配置 68
4.3.2 使用Caffeine 69
4.4 本章小結(jié) 70
第5章 Redis緩存中間件 71
5.1 分布式緩存中間件Redis 71
5.1.1 非關(guān)系型數(shù)據(jù)庫的由來 71
5.1.2 分布式緩存Redis與NoSQL 72
5.1.3 Redis的Key-Value鍵值對 73
5.2 安裝Redis 74
5.2.1 安裝原生Redis 74
5.2.2 操作Redis的基本命令 76
5.2.3 使用可視化工具Redis Desktop Manager 77
5.2.4 使用Docker安裝Redis 79
5.2.5 在Redis容器內(nèi)部運(yùn)行redis-cli 81
5.2.6 容器自動重啟 82
5.3 五大數(shù)據(jù)類型常用操作 82
5.3.1 string字符串類型 83
5.3.2 list數(shù)據(jù)類型 84
5.3.3 hash哈希數(shù)據(jù)類型 85
5.3.4 set無序集合數(shù)據(jù)類型 86
5.3.5 sorted set 可排序集合數(shù)據(jù)類型 87
5.4 Redis的存儲原理 88
5.4.1 Redis是怎么做持久化的 88
5.4.2 RDB持久化機(jī)制 88
5.4.3 RDB的自動保存機(jī)制 90
5.4.4 AOF持久化機(jī)制 92
5.4.5 使用AOF引發(fā)的思考 92
5.4.6 AOF的重寫配置 92
5.4.7 AOF與RDB的混合持久化 93
5.5 本章小結(jié) 95
第6章 分布式緩存的應(yīng)用方案 96
6.1 SpringBoot與Redis集成 96
6.1.1 構(gòu)建SpringBoot項(xiàng)目高可用集群 96
6.1.2 SpringBoot整合Redis 99
6.1.3 Redis的通用工具操作類 102
6.1.4 Redis與本地緩存并肩作戰(zhàn) 109
6.2 分布式緩存問題延伸 111
6.2.1 緩存預(yù)熱 111
6.2.2 Redis緩存穿透 113
6.2.3 Redis緩存擊穿 115
6.2.4 Redis緩存雪崩 116
6.3 分布式系統(tǒng)的CAP理論 117
6.3.1 分布式系統(tǒng) 117
6.3.2 CAP是什么 118
6.3.3 CAP定理 119
6.3.4 CAP的組合搭配 121
6.4 緩存數(shù)據(jù)雙寫方案 121
6.4.1 存儲媒介發(fā)生數(shù)據(jù)不一致 121
6.4.2 數(shù)據(jù)庫與緩存雙寫不一致 123
6.4.3 數(shù)據(jù)庫與緩存雙寫一致方案 124
6.5 本章小結(jié) 126
第7章 Redis分布式鎖 127
7.1 分布式鎖 127
7.1.1 分布式鎖是什么 127
7.1.2 本地鎖是什么 128
7.1.3 分布式鎖的原理 129
7.1.4 數(shù)據(jù)庫悲觀鎖 129
7.1.5 數(shù)據(jù)庫樂觀鎖 130
7.2 Redis分布式鎖 131
7.2.1 setnx鎖機(jī)制 131
7.2.2 基于setnx的實(shí)現(xiàn) 131
7.2.3 鎖的自動續(xù)期 134
7.3 Redisson客戶端 135
7.3.1 Redisson 概述 135
7.3.2 Redisson配置 136
7.3.3 Redisson分布式鎖 137
7.3.4 Redisson公平鎖 138
7.3.5 Redisson聯(lián)鎖 139
7.4 本章小結(jié) 140
第8章 Redis集群高可用 141
8.1 Redis主從架構(gòu) 141
8.1.1 Redis主從復(fù)制原理 141
8.1.2 構(gòu)建Redis 主從架構(gòu) 142
8.2 Redis哨兵架構(gòu) 144
8.2.1 Redis哨兵架構(gòu)原理 144
8.2.2 構(gòu)建Redis哨兵形態(tài) 146
8.3 Redis高可用集群架構(gòu) 147
8.3.1 Redis集群原理 147
8.3.2 構(gòu)建Redis集群形態(tài)的準(zhǔn)備工作 149
8.3.3 Redis集群架構(gòu) Cluster實(shí)操 149
8.3.4 Redis集群的故障轉(zhuǎn)移 152
8.3.5 Redis集群數(shù)據(jù)存取 153
8.3.6 Redis集群水平擴(kuò)容 154
8.3.7 Redis集群的十點(diǎn)總結(jié) 158
8.4 Redis緩存淘汰機(jī)制 158
8.5 本章小結(jié) 159
進(jìn) 階 篇
第9章 nginx網(wǎng)關(guān)中間件 161
9.1 網(wǎng)關(guān)中間件nginx 161
9.1.1 nginx是什么 161
9.1.2 服務(wù)器的選型 162
9.1.3 反向代理與正向代理 164
9.2 安裝nginx與配置 165
9.2.1 下載并安裝nginx的依賴環(huán)境 165
9.2.2 安裝nginx到Linux系統(tǒng)中 166
9.2.3 詳解conf配置 168
9.3 nginx的基本應(yīng)用 171
9.3.1 日志切割(手動) 171
9.3.2 日志切割(自動) 171
9.3.3 location請求的路由規(guī)則 172
9.3.4 靜態(tài)資源服務(wù)器 174
9.4 本章小結(jié) 176
第10章 集群與負(fù)載均衡 177
10.1 集群與分布式 177
10.1.1 集群與分布式的概念 177
10.1.2 負(fù)載均衡的概念 178
10.2 實(shí)現(xiàn)集群負(fù)載均衡 179
10.2.1 配置上游服務(wù)集群 179
10.2.2 負(fù)載均衡之輪詢 180
10.2.3 負(fù)載均衡之權(quán)重 181
10.2.4 負(fù)載均衡之ip_hash 181
10.2.5 負(fù)載均衡之url_hash 182
10.3 一致性哈希原理 182
10.4 OSI網(wǎng)絡(luò)模型原理 183
10.4.1 七層網(wǎng)絡(luò)模型 183
10.4.2 七層模型的歸類與合并 185
10.5 本章小結(jié) 187
第11章 Lua腳本語言基礎(chǔ) 188
11.1 Lua腳本 188
11.1.1 Lua腳本介紹 188
11.1.2 Lua腳本入門 189
11.2 Lua的數(shù)據(jù)類型 189
11.2.1 nil類型 189
11.2.2 boolean類型 190
11.2.3 number類型 190
11.2.4 string類型 191
11.2.5 function類型 191
11.2.6 table類型 192
11.3 Lua的循環(huán)與控制判斷 193
11.3.1 Lua的循環(huán) 193
11.3.2 Lua的控制判斷 195
11.3.3 Lua語法實(shí)操 195
11.4 本章小結(jié) 197
第12章 高性能OpenResty平臺 198
12.1 OpenResty 198
12.1.1 OpenResty 背景介紹 198
12.1.2 OpenResty與nginx的區(qū)別 198
12.1.3 OpenResty 所處架構(gòu)位置 199
12.2 安裝OpenResty 201
12.2.1 OpenResty環(huán)境配置與安裝——方式一 201
12.2.2 OpenResty環(huán)境配置與安裝——方式二(推薦) 201
12.3 OpenResty的目錄結(jié)構(gòu)與運(yùn)行 202
12.3.1 OpenResty的目錄結(jié)構(gòu) 202
12.3.2 測試訪問頁面 203
12.4 為OpenResty配置nginx的環(huán)境變量 203
12.5 本章小結(jié) 204
第13章 多級緩存落地 205
13.1 OpenResty結(jié)合Lua控制請求與響應(yīng) 205
13.1.1 OpenResty結(jié)合Lua自定義數(shù)據(jù)響應(yīng) 205
13.1.2 OpenResty結(jié)合Lua獲得請求相關(guān)參數(shù) 207
13.2 Lua自定義請求反向代理 209
13.2.1 封裝GET請求 209
13.2.2 封裝POST請求 210
13.2.3 Lua控制請求轉(zhuǎn)發(fā) 211
13.3 多級緩存架構(gòu)落地 212
13.3.1 lua-resty-redis 212
13.3.2 封裝Redis通用模塊 214
13.3.3 完成多級緩存架構(gòu)閉環(huán) 216
13.4 本章小結(jié) 217
第14章 多級網(wǎng)關(guān) 218
14.1 多級網(wǎng)關(guān)集群 218
14.1.1 什么是多級網(wǎng)關(guān) 218
14.1.2 nginx構(gòu)建OpenResty集群 219
14.2 OpenResty的本地緩存 221
14.2.1 定義共享字典(本地緩存) 221
14.2.2 共享字典與多級緩存業(yè)務(wù)的結(jié)合 221
14.3 ApiPost性能壓測 223
14.3.1 壓力測試 223
14.3.2 ApiPost介紹 223
14.3.3 使用ApiPost進(jìn)行接口調(diào)試 224
14.3.4 配置ApiPost的壓測場景 225
14.3.5 進(jìn)行接口壓測 226
14.4 本章小結(jié) 227
第15章 多級緩存數(shù)據(jù)同步 228
15.1 緩存數(shù)據(jù)同步方案 228
15.1.1 緩存與數(shù)據(jù)庫不一致的出現(xiàn)場景 228
15.1.2 消息隊(duì)列方案 228
15.1.3 Zookeeper方案 230
15.1.4 Canal方案 231
15.2 消息隊(duì)列 232
15.2.1 什么是消息隊(duì)列 232
15.2.2 消息隊(duì)列的技術(shù)選型 234
15.2.3 生產(chǎn)者與消費(fèi)者 234
15.3 安裝RabbitMQ 236
15.3.1 Docker安裝RabbitMQ 236
15.3.2 RabbitMQ的可視化后臺管理 238
15.3.3 RabbitMQ的模型原理 240
15.4 緩存數(shù)據(jù)的一致性落地 241
15.4.1 緩存數(shù)據(jù)的同步過程 241
15.4.2 SpringBoot集成RabbitMQ 243
15.4.3 配置交換機(jī)與隊(duì)列 244
15.4.4 構(gòu)建生產(chǎn)者—發(fā)送消息 246
15.4.5 構(gòu)建消費(fèi)者—監(jiān)聽隊(duì)列 249
15.4.6 多節(jié)點(diǎn)對同一消息的監(jiān)聽處理 249
15.4.7 完成并測試緩存數(shù)據(jù)的同步 250
15.5 本章小結(jié) 253
第16章 OpenResty實(shí)踐 254
16.1 用戶請求頻率限制與黑名單 254
16.1.1 網(wǎng)關(guān)限流需求說明 254
16.1.2 封裝請求攔截函數(shù) 254
16.1.3 結(jié)合業(yè)務(wù)進(jìn)行攔截 258
16.2 OpenResty集成MySQL 259
16.2.1 解讀lua-resty-mysql示例代碼 259
16.2.2 封裝MySQL請求函數(shù) 261
16.2.3 實(shí)現(xiàn)調(diào)用MySQL業(yè)務(wù) 263
16.2.4 轉(zhuǎn)發(fā)請求到sql查詢的Lua文件 264
16.3 本章小結(jié) 264
云原生與DevOps
第17章 云原生與KubeSphere 266
17.1 DevOps與CICD 266
17.1.1 DevOps概述 266
17.1.2 CICD概述 268
17.2 Kubernetes初探 270
17.2.1 Kubernetes概述 270
17.2.2 Kubernetes 可以用來做什么 271
17.2.3 Kubernetes架構(gòu)原理 272
17.2.4 Kubernetes的Pod容器 274
17.3 KubeSphere的使用與安裝 275
17.3.1 KubeSphere 概述 275
17.3.2 KubeSphere環(huán)境準(zhǔn)備 276
17.3.3 KubeSphere安裝 279
17.3.4 KubeSphere啟用DevOps 282
17.4 KubeSphere多租戶 285
17.4.1 KubeSphere多租戶系統(tǒng) 285
17.4.2 KubeSphere多租戶角色 285
17.4.3 KubeSphere多租戶賬號分配 286
17.4.4 KubeSphere 企業(yè)空間創(chuàng)建與賬號綁定 288
17.4.5 KubeSphere項(xiàng)目負(fù)責(zé)人賬號分配 291
17.5 本章小結(jié) 294
第18章 KubeSphere部署中間件 295
18.1 應(yīng)用的狀態(tài) 295
18.1.1 有狀態(tài)應(yīng)用 295
18.1.2 無狀態(tài)應(yīng)用 295
18.1.3 KubeSphere項(xiàng)目的存儲、服務(wù)與配置 296
18.2 KubeSphere部署中間件MySQL8 299
18.2.1 設(shè)置保密字典 299
18.2.2 設(shè)置配置字典 300
18.2.3 配置MySQL的持久卷PVC 302
18.2.4 創(chuàng)建MySQL的有狀態(tài)服務(wù) 304
18.2.5 為MySQL創(chuàng)建數(shù)據(jù)庫并導(dǎo)入數(shù)據(jù) 309
18.3 部署Redis 312
18.3.1 創(chuàng)建Redis的配置字典與持久卷 312
18.3.2 創(chuàng)建Redis有狀態(tài)服務(wù) 314
18.4 部署RabbitMQ 317
18.4.1 創(chuàng)建RabbitMQ的持久卷與配置字典 317
18.4.2 創(chuàng)建RabbitMQ的無狀態(tài)服務(wù) 318
18.4.3 RabbitMQ無狀態(tài)服務(wù)對外訪問 320
18.5 原生安裝OpenResty 323
18.6 本章小結(jié) 326
第19章 DevOps流水線發(fā)布項(xiàng)目 327
19.1 DevOps前置準(zhǔn)備工作 327
19.1.1 DevOps部署流程 327
19.1.2 為流水線創(chuàng)建憑證 328
19.1.3 項(xiàng)目的生產(chǎn)配置 330
19.1.4 編寫DockerFile 332
19.1.5 編寫k8s-YAML部署文件 334
19.2 開始DevOps流程 338
19.2.1 推送代碼 338
19.2.2 創(chuàng)建項(xiàng)目流水線 342
19.2.3 拉取代碼 344
19.2.4 為流水線構(gòu)建動態(tài)參數(shù) 348
19.2.5 流水線打印動態(tài)參數(shù) 350
19.2.6 為流水線配置環(huán)境變量 350
19.2.7 流水線推送鏡像到DockerHub 351
19.2.8 推送latest鏡像到DockerHub 356
19.2.9 流水線部署項(xiàng)目到KubeSphere環(huán)境中 358
19.2.10 測試生產(chǎn)環(huán)境的項(xiàng)目接口訪問 360
19.3 集群與擴(kuò)容 360
19.3.1 手動擴(kuò)容 360
19.3.2 自動擴(kuò)容 362
19.3.3 OpenResty集群配置 363
19.4 構(gòu)建云負(fù)載均衡器 365
19.5 本章小結(jié) 369
展開全部
高性能架構(gòu):多級網(wǎng)關(guān)與多級緩存實(shí)踐 作者簡介
李晨翔,從事技術(shù)管理10年以上經(jīng)驗(yàn),專注高性能高并發(fā)架構(gòu)、項(xiàng)目管理以及企業(yè)戰(zhàn)略規(guī)劃。在物流電商領(lǐng)域有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。有多年的講師經(jīng)驗(yàn),授課風(fēng)格深入淺出。