本書是Spring Cloud的入門書。首先,簡要概述了微服務(wù)并分析了當(dāng)前互聯(lián)網(wǎng)架構(gòu)趨勢。其次,系統(tǒng)地介紹了Spring Boot的相關(guān)知識,從基礎(chǔ)用法到核心組件。再次,從具體的案例出發(fā),依次講解了Spring Cloud*常用的組件,將理論與實踐相結(jié)合,使讀者在學(xué)習(xí)Spring Cloud的過程中還能了解一個產(chǎn)品從無到有的全過程。*后,結(jié)合目前*流行的容器技術(shù),介紹了Kubernetes如何配合Docker進(jìn)行系統(tǒng)的分布式部署。 本書適合具有一定Java基礎(chǔ)和Spring MVC基礎(chǔ)的人群以及希望往架構(gòu)師方向發(fā)展的開發(fā)者閱讀。
這是一本來自一線專家的Spring Cloud從入門到實戰(zhàn)的教程圖書。它具有以下特點: -從基礎(chǔ)用法到核心組件,系統(tǒng)介紹Spring Boot相關(guān)知識 -包含流行的容器技術(shù),完成Kubernetes配合Docker的分布式部署 -理論結(jié)合案例,高效學(xué)習(xí)Spring Cloud常用的組件 -以實踐為目的,快速了解一個產(chǎn)品從無到有的全過程
李熠,全棧工程師,畢業(yè)于成都電子科技大學(xué)計算機(jī)科學(xué)與技術(shù)專業(yè),擁有7年互聯(lián)網(wǎng)軟件開發(fā)、技術(shù)架構(gòu)和管理等方面的經(jīng)驗,對 Spring Boot、Spring Cloud、微服務(wù)、持續(xù)集成有一定見地。曾任映潮科技系統(tǒng)架構(gòu)師、鏈一科技 CTO,現(xiàn)就職于中國石油規(guī)劃總院。 熱愛技術(shù),喜歡鉆研,特別喜歡挑戰(zhàn)技術(shù)難題,CSDN 博客(https://blog.csdn.net /lynnlovemin)專家、GitChat 專欄作者,并在 GitHub 上開源了多個項目(詳見 https://github.com/lynnlovemin)。技術(shù)全面,對 Vue.js、React.js 等比較熟悉,擅長 Java、JavaScript、Linux 服務(wù)器,可獨立實現(xiàn)一套涵蓋前后端的系統(tǒng)。
第 一部分 基礎(chǔ)篇
第 1章 微服務(wù)概述 2
1.1 應(yīng)用架構(gòu)概述 2
1.1.1 單體架構(gòu) 2
1.1.2 微服務(wù)架構(gòu) 3
1.1.3 如何選擇架構(gòu)風(fēng)格 4
1.2 微服務(wù)現(xiàn)狀及發(fā)展趨勢 4
1.2.1 微服務(wù)現(xiàn)狀 4
1.2.2 微服務(wù)發(fā)展趨勢 5
1.3 微服務(wù)架構(gòu)面臨的挑戰(zhàn) 5
1.4 怎樣實現(xiàn)微服務(wù)架構(gòu) 6
1.4.1 技術(shù)選型 6
1.4.2 整體架構(gòu)思路 7
1.5 小結(jié) 7
第 2章 Spring Boot基礎(chǔ) 9
2.1 Spring Boot簡介 9
2.2 第 一個Spring Boot工程 9
2.3 使用YAML文件配置屬性 12
2.3.1 YAML的基本用法 12
2.3.2 多環(huán)境配置 13
2.4 常用注解 14
2.4.1 @SpringBootApplication 15
2.4.2 @SpringBootConfiguration 15
2.4.3 @Bean 16
2.4.4 @Value 18
2.5 Spring Boot集成模板引擎 19
2.6 更改默認(rèn)的JSON轉(zhuǎn)換器 21
2.7 打包發(fā)布到服務(wù)器上 22
2.7.1 使用內(nèi)置Tomcat發(fā)布jar包 22
2.7.2 打包成war包發(fā)布 24
2.8 WebFlux快速入門 27
2.9 小結(jié) 29
第3章 Spring Boot核心原理 31
3.1 起步依賴機(jī)制 31
3.2 自動配置管理 32
3.3 Actuator監(jiān)控管理 34
3.4 Spring Boot CLI命令行工具 36
3.4.1 安裝 36
3.4.2 用法 37
3.5 小結(jié) 38
第4章 Spring Cloud概述 40
4.1 簡介 40
4.2 優(yōu)缺點 41
4.3 現(xiàn)狀 41
4.4 開始Spring Cloud實戰(zhàn) 42
4.4.1 技術(shù)儲備 42
4.4.2 準(zhǔn)備工作 42
4.4.3 從Hello World開始你的實戰(zhàn)
之旅 43
4.5 小結(jié) 52
第二部分 實戰(zhàn)篇
第5章 項目準(zhǔn)備階段 54
5.1 項目介紹 54
5.2 需求分析 54
5.3 產(chǎn)品設(shè)計 55
5.4 架構(gòu)方案分析 58
5.4.1 技術(shù)選型 58
5.4.2 架構(gòu)圖設(shè)計 58
5.4.3 根據(jù)架構(gòu)圖創(chuàng)建工程 59
5.5 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計 62
5.6 小結(jié) 63
第6章 公共模塊封裝 65
6.1 common工程常用類庫的封裝 65
6.1.1 日期時間的處理 65
6.1.2 字符串的處理 68
6.1.3 加密/解密封裝 69
6.1.4 消息隊列的封裝 74
6.2 接口版本管理 78
6.3 輸入?yún)?shù)的合法性校驗 80
6.4 異常的統(tǒng)一處理 82
6.5 更換JSON轉(zhuǎn)換器 83
6.6 Redis的封裝 84
6.7 小結(jié) 85
第7章 注冊中心:Spring Cloud
Netflix Eureka 87
7.1 Eureka簡介 87
7.2 創(chuàng)建注冊中心 87
7.3 創(chuàng)建客戶端工程以驗證注冊中心 91
7.4 實現(xiàn)注冊中心的高可用 92
7.5 添加用戶認(rèn)證 96
7.6 開啟自我保護(hù)模式 99
7.7 注冊中心的健康檢查 100
7.8 多網(wǎng)卡環(huán)境下的IP選擇問題 101
7.9 小結(jié) 103
第8章 配置中心:Spring Cloud
Config 105
8.1 Spring Cloud Config簡介 105
8.2 創(chuàng)建配置中心 105
8.3 對配置內(nèi)容進(jìn)行加密 111
8.3.1 安裝JCE 111
8.3.2 對稱加密 112
8.3.3 對配置內(nèi)容加密 114
8.3.4 非對稱加密 114
8.4 配置自動刷新 118
8.4.1 使用refresh端點刷新配置 118
8.4.2 Spring Cloud Bus自動刷新配置 119
8.5 添加用戶認(rèn)證 122
8.6 小結(jié) 123
第9章 服務(wù)網(wǎng)關(guān):Spring Cloud
Gateway 125
9.1 Gateway簡介 125
9.2 創(chuàng)建服務(wù)網(wǎng)關(guān) 125
9.3 利用過濾器攔截API請求 128
9.4 請求失敗處理 130
9.5 小結(jié) 133
第 10章 功能開發(fā) 135
10.1 開發(fā)前的準(zhǔn)備 135
10.1.1 MyBatis的集成 135
10.1.2 Elasticsearch的集成 137
10.2 利用代碼生成器提升開發(fā)效率 140
10.3 使用代碼生成器生成的代碼操作
數(shù)據(jù)庫 147
10.4 MyBatis應(yīng)對復(fù)雜SQL 149
10.4.1 注解 149
10.4.2 Provider 150
10.5 功能開發(fā) 151
10.6 網(wǎng)關(guān)鑒權(quán) 154
10.6.1 防止參數(shù)被篡改 155
10.6.2 攔截非法請求 157
10.7 單元測試 159
10.8 小結(jié) 160
第三部分 高級篇
第 11章 服務(wù)間通信:Spring Cloud
Netflix Ribbon和Spring
Cloud OpenFeign 162
11.1 Spring Cloud Netflix Ribbon的使用 162
11.2 Spring Cloud OpenFeign 164
11.3 自定義OpenFeign配置 166
11.4 Spring Cloud OpenFeign熔斷 167
11.4.1 Spring Cloud Netflix Hystrix
簡介 167
11.4.2 Spring Cloud Netflix Hystrix
的使用 168
11.4.3 OpenFeign集成Hystrix
熔斷器 172
11.5 小結(jié) 173
第 12章 服務(wù)鏈路追蹤:Spring
Cloud Sleuth 175
12.1 Spring Cloud Sleuth簡介 175
12.2 利用鏈路追蹤監(jiān)聽網(wǎng)絡(luò)請求 176
12.2.1 服務(wù)端的實現(xiàn) 176
12.2.2 客戶端集成Spring Cloud
Sleuth 179
12.3 通過消息中間件實現(xiàn)鏈路追蹤 180
12.4 存儲追蹤數(shù)據(jù) 182
12.5 小結(jié) 184
第 13章 服務(wù)治理:Spring Cloud
Consul和Spring Cloud
ZooKeeper 186
13.1 服務(wù)治理簡介 186
13.2 Spring Cloud Consul的使用 186
13.2.1 Consul的安裝與部署 187
13.2.2 Spring Cloud集成Consul 189
13.3 Spring Cloud ZooKeeper的使用 190
13.3.1 ZooKeeper的安裝和部署 191
13.3.2 Spring Cloud集成ZooKeeper 191
13.4 小結(jié) 193
第四部分 部署篇
第 14章 系統(tǒng)發(fā)布上線 195
14.1 發(fā)布前準(zhǔn)備 195
14.1.1 虛擬機(jī)的安裝 195
14.1.2 Linux常用命令 198
14.1.3 安裝常用軟件 198
14.2 編譯、打包、發(fā)布 207
14.3 利用Jenkins實現(xiàn)持續(xù)集成 210
14.3.1 安裝并配置Jenkins 210
14.3.2 創(chuàng)建任務(wù) 215
14.3.3 構(gòu)建項目 220
14.4 小結(jié) 221
第 15章 使用Kubernetes部署分布式
集群 223
15.1 Docker介紹 223
15.1.1 Docker安裝 223
15.1.2 Docker鏡像 224
15.1.3 Docker容器 228
15.2 K8S集群環(huán)境搭建 229
15.2.1 環(huán)境準(zhǔn)備 229
15.2.2 集群搭建 230
15.2.3 分布式應(yīng)用部署 232
15.3 小結(jié) 237
附錄A 如何編寫優(yōu)雅的Java代碼 239
附錄B IDEA插件之Alibaba Cloud
Toolkit 258