本書是Spring Cloud的入門書。首先,簡要概述了微服務并分析了當前互聯(lián)網架構趨勢。其次,系統(tǒng)地介紹了Spring Boot的相關知識,從基礎用法到核心組件。再次,從具體的案例出發(fā),依次講解了Spring Cloud*常用的組件,將理論與實踐相結合,使讀者在學習Spring Cloud的過程中還能了解一個產品從無到有的全過程。*后,結合目前*流行的容器技術,介紹了Kubernetes如何配合Docker進行系統(tǒng)的分布式部署。 本書適合具有一定Java基礎和Spring MVC基礎的人群以及希望往架構師方向發(fā)展的開發(fā)者閱讀。
這是一本來自一線專家的Spring Cloud從入門到實戰(zhàn)的教程圖書。它具有以下特點: -從基礎用法到核心組件,系統(tǒng)介紹Spring Boot相關知識 -包含流行的容器技術,完成Kubernetes配合Docker的分布式部署 -理論結合案例,高效學習Spring Cloud常用的組件 -以實踐為目的,快速了解一個產品從無到有的全過程
李熠,全棧工程師,畢業(yè)于成都電子科技大學計算機科學與技術專業(yè),擁有7年互聯(lián)網軟件開發(fā)、技術架構和管理等方面的經驗,對 Spring Boot、Spring Cloud、微服務、持續(xù)集成有一定見地。曾任映潮科技系統(tǒng)架構師、鏈一科技 CTO,現(xiàn)就職于中國石油規(guī)劃總院。 熱愛技術,喜歡鉆研,特別喜歡挑戰(zhàn)技術難題,CSDN 博客(https://blog.csdn.net /lynnlovemin)專家、GitChat 專欄作者,并在 GitHub 上開源了多個項目(詳見 https://github.com/lynnlovemin)。技術全面,對 Vue.js、React.js 等比較熟悉,擅長 Java、JavaScript、Linux 服務器,可獨立實現(xiàn)一套涵蓋前后端的系統(tǒng)。
第 一部分 基礎篇
第 1章 微服務概述 2
1.1 應用架構概述 2
1.1.1 單體架構 2
1.1.2 微服務架構 3
1.1.3 如何選擇架構風格 4
1.2 微服務現(xiàn)狀及發(fā)展趨勢 4
1.2.1 微服務現(xiàn)狀 4
1.2.2 微服務發(fā)展趨勢 5
1.3 微服務架構面臨的挑戰(zhàn) 5
1.4 怎樣實現(xiàn)微服務架構 6
1.4.1 技術選型 6
1.4.2 整體架構思路 7
1.5 小結 7
第 2章 Spring Boot基礎 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 更改默認的JSON轉換器 21
2.7 打包發(fā)布到服務器上 22
2.7.1 使用內置Tomcat發(fā)布jar包 22
2.7.2 打包成war包發(fā)布 24
2.8 WebFlux快速入門 27
2.9 小結 29
第3章 Spring Boot核心原理 31
3.1 起步依賴機制 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 小結 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 技術儲備 42
4.4.2 準備工作 42
4.4.3 從Hello World開始你的實戰(zhàn)
之旅 43
4.5 小結 52
第二部分 實戰(zhàn)篇
第5章 項目準備階段 54
5.1 項目介紹 54
5.2 需求分析 54
5.3 產品設計 55
5.4 架構方案分析 58
5.4.1 技術選型 58
5.4.2 架構圖設計 58
5.4.3 根據架構圖創(chuàng)建工程 59
5.5 數(shù)據庫結構設計 62
5.6 小結 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 輸入參數(shù)的合法性校驗 80
6.4 異常的統(tǒng)一處理 82
6.5 更換JSON轉換器 83
6.6 Redis的封裝 84
6.7 小結 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 添加用戶認證 96
7.6 開啟自我保護模式 99
7.7 注冊中心的健康檢查 100
7.8 多網卡環(huán)境下的IP選擇問題 101
7.9 小結 103
第8章 配置中心:Spring Cloud
Config 105
8.1 Spring Cloud Config簡介 105
8.2 創(chuàng)建配置中心 105
8.3 對配置內容進行加密 111
8.3.1 安裝JCE 111
8.3.2 對稱加密 112
8.3.3 對配置內容加密 114
8.3.4 非對稱加密 114
8.4 配置自動刷新 118
8.4.1 使用refresh端點刷新配置 118
8.4.2 Spring Cloud Bus自動刷新配置 119
8.5 添加用戶認證 122
8.6 小結 123
第9章 服務網關:Spring Cloud
Gateway 125
9.1 Gateway簡介 125
9.2 創(chuàng)建服務網關 125
9.3 利用過濾器攔截API請求 128
9.4 請求失敗處理 130
9.5 小結 133
第 10章 功能開發(fā) 135
10.1 開發(fā)前的準備 135
10.1.1 MyBatis的集成 135
10.1.2 Elasticsearch的集成 137
10.2 利用代碼生成器提升開發(fā)效率 140
10.3 使用代碼生成器生成的代碼操作
數(shù)據庫 147
10.4 MyBatis應對復雜SQL 149
10.4.1 注解 149
10.4.2 Provider 150
10.5 功能開發(fā) 151
10.6 網關鑒權 154
10.6.1 防止參數(shù)被篡改 155
10.6.2 攔截非法請求 157
10.7 單元測試 159
10.8 小結 160
第三部分 高級篇
第 11章 服務間通信: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 小結 173
第 12章 服務鏈路追蹤:Spring
Cloud Sleuth 175
12.1 Spring Cloud Sleuth簡介 175
12.2 利用鏈路追蹤監(jiān)聽網絡請求 176
12.2.1 服務端的實現(xiàn) 176
12.2.2 客戶端集成Spring Cloud
Sleuth 179
12.3 通過消息中間件實現(xiàn)鏈路追蹤 180
12.4 存儲追蹤數(shù)據 182
12.5 小結 184
第 13章 服務治理:Spring Cloud
Consul和Spring Cloud
ZooKeeper 186
13.1 服務治理簡介 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 小結 193
第四部分 部署篇
第 14章 系統(tǒng)發(fā)布上線 195
14.1 發(fā)布前準備 195
14.1.1 虛擬機的安裝 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)建任務 215
14.3.3 構建項目 220
14.4 小結 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)境準備 229
15.2.2 集群搭建 230
15.2.3 分布式應用部署 232
15.3 小結 237
附錄A 如何編寫優(yōu)雅的Java代碼 239
附錄B IDEA插件之Alibaba Cloud
Toolkit 258