Spring Cloud微服務(wù)架構(gòu)實(shí)戰(zhàn)
本書以實(shí)戰(zhàn)化訓(xùn)練為宗旨,用詳盡的案例講述 Spring Cloud 的項(xiàng)目搭建方法和常用技術(shù)。每個(gè)案例都配有詳細(xì)講解和代碼,可以幫助讀者快速掌握書中的各個(gè)知識點(diǎn)。本書首先介紹系統(tǒng)架構(gòu)的發(fā)展歷史、常見的微服務(wù)架構(gòu)、Spring Boot 和 Spring Cloud 的關(guān)系;然后介紹Spring Cloud 開發(fā)環(huán)境的搭建,如 JDK、IntelliJ IDEA、Maven 的安裝和配置;繼而介紹微服務(wù)環(huán)境的創(chuàng)建、微服務(wù)項(xiàng)目案例的搭建和微服務(wù)的調(diào)用;最后介紹常用的微服務(wù)技術(shù),如 Eureka、Ribbon、Feign、Hystrix、Spring Cloud Gateway、Spring Cloud Stream 和 Spring Cloud Config。
本書適合具備 Java 基礎(chǔ)的開發(fā)人員、對微服務(wù)架構(gòu)和 Spring Cloud 感興趣的讀者、想要了解 Spring 或Spring Cloud 的開發(fā)人員閱讀。對嘗試選擇或?qū)嵤┪⒎⻊?wù)架構(gòu)的團(tuán)隊(duì)來說,本書具有較高的參考價(jià)值。
● 系統(tǒng)深入:由淺入深,詳細(xì)介紹微服務(wù)相關(guān)知識,依次擊破操作難點(diǎn)
● 快速進(jìn)階:通過基本知識,引出進(jìn)階知識,進(jìn)一步提升開發(fā)技術(shù)
● 案例豐富:書中列舉多個(gè)案例,在實(shí)戰(zhàn)中學(xué)習(xí),增加實(shí)戰(zhàn)經(jīng)驗(yàn)
周喜平,教授,研究方向?yàn)檐浖こ、軟件開發(fā)技術(shù)。河南省優(yōu)秀教師,河南省教育廳學(xué)術(shù)帶頭人,河南省高等學(xué)校計(jì)算機(jī)類專業(yè)教學(xué)指導(dǎo)委員會(huì)委員。發(fā)表論文30余篇,出版專著7部,主持和參與科研項(xiàng)目20余項(xiàng),其中“河南省外經(jīng)貿(mào)廳辦工自動(dòng)化系統(tǒng)”“電力及施工企業(yè)固定資產(chǎn)管理系統(tǒng)”“惠農(nóng)資金管理系統(tǒng)”“地市級居民醫(yī)療保險(xiǎn)信息管理系統(tǒng)”“純電動(dòng)汽車高并發(fā)數(shù)據(jù)采集平臺”“基于標(biāo)準(zhǔn)分的教師評教系統(tǒng)”“智慧消防云平臺”等項(xiàng)目均采用Java工具實(shí)現(xiàn)。
001 第 1 章 認(rèn)識微服務(wù)
002 1.1 系統(tǒng)架構(gòu)的發(fā)展歷史
002 1.1.1 單體架構(gòu)
003 1.1.2 垂直架構(gòu)
003 1.1.3 分布式架構(gòu)
004 1.1.4 面向服務(wù)的架構(gòu)
004 1.1.5 微服務(wù)架構(gòu)
005 1.2 常見的微服務(wù)架構(gòu)
006 1.2.1 Spring Cloud
008 1.2.2 Dubbo
009 1.2.3 Dropwizard
009 1.2.4 Cricket
009 1.2.5 Jersey
009 1.2.6 Play
009 1.3 Spring Boot 和 Spring Cloud 的關(guān)系
010 1.3.1 認(rèn)識 Spring Boot
011 1.3.2 Spring Boot 整合 Spring Cloud
013 第 2 章 準(zhǔn)備開發(fā)環(huán)境
014 2.1 Java 開發(fā)環(huán)境 JDK
014 2.1.1 下載 JDK
016 2.1.2 安裝 JDK
018 2.1.3 配置 Java 環(huán)境變量
019 2.2 開發(fā)工具 IntelliJ IDEA
019 2.2.1 下載 IntelliJ IDEA
020 2.2.2 安裝 IntelliJ IDEA
026 2.3 項(xiàng)目管理工具 Maven
027 2.3.1 下載 Maven
028 2.3.2 安裝 Maven
028 2.3.3 配置 Maven 環(huán)境變量
029 2.3.4 配置 Maven 本地倉庫和下載源
030 2.3.5 與 IntelliJ IDEA 集成
031 第 3 章 貫穿案例
032 3.1 數(shù)據(jù)庫
033 3.2 創(chuàng)建工程
033 3.2.1 創(chuàng)建父工程
035 3.2.2 創(chuàng)建子工程—用戶微服務(wù)
040 3.2.3 創(chuàng)建子工程—商品微服務(wù)
045 3.2.4 創(chuàng)建子工程—訂單微服務(wù)
049 3.3 使用 Postman 測試微服務(wù)
049 3.3.1 測試新增
050 3.3.2 測試查詢?nèi)?050 3.3.3 測試根據(jù) id 查詢單個(gè)
051 3.3.4 測試修改
052 3.3.5 測試刪除
053 3.4 調(diào)用微服務(wù)
053 3.4.1 介紹 RestTemplate 類
053 3.4.2 使用 RestTemplate 調(diào)用微服務(wù)
054 3.4.3 分析硬編碼存在的問題
055 第 4 章 Eureka 服務(wù)注冊和發(fā)現(xiàn)
056 4.1 認(rèn)識 Eureka
056 4.1.1 服務(wù)注冊和服務(wù)發(fā)現(xiàn)
057 4.1.2 注冊中心
059 4.1.3 Eureka 框架的原理
060 4.2 使用 Eureka
060 4.2.1 搭建 Eureka 注冊中心
063 4.2.2 將服務(wù)注冊到 Eureka 注冊中心
064 4.2.3 使用 Eureka 的元數(shù)據(jù)完成服務(wù)調(diào)用
065 4.3 Eureka 服務(wù)端高可用集群
066 4.3.1 搭建 Eureka 服務(wù)端高可用集群
068 4.3.2 將服務(wù)注冊到 Eureka 服務(wù)端集群
070 4.4 Eureka 常見問題
070 4.4.1 服務(wù)注冊慢
070 4.4.2 服務(wù)節(jié)點(diǎn)剔除問題
071 4.4.3 監(jiān)控頁面顯示 IP 地址信息
071 4.5 Eureka 源碼解析
072 4.5.1 服務(wù)注冊表
073 4.5.2 服務(wù)注冊
075 4.5.3 接收服務(wù)心跳
076 4.5.4 服務(wù)剔除
078 4.5.5 服務(wù)下線
080 4.5.6 集群同步
084 4.5.7 獲取注冊表中服務(wù)實(shí)例的信息
089 第 5 章 基于 Ribbon 服務(wù)調(diào)用
090 5.1 認(rèn)識 Ribbon
090 5.1.1 微服務(wù)之間的交互
091 5.1.2 Ribbon 的兩個(gè)主要作用
091 5.1.3 客戶端的負(fù)載均衡
093 5.2 基于 Ribbon 實(shí)現(xiàn)負(fù)載均衡調(diào)用
093 5.2.1 坐標(biāo)依賴
094 5.2.2 工程改造
097 5.2.3 代碼測試
098 5.3 Ribbon 源碼解析
098 5.3.1 配置和實(shí)例初始化
100 5.3.2 負(fù)載均衡器
102 5.3.3 ILoadBalancer 的實(shí)現(xiàn)
105 5.3.4 負(fù)載均衡策略實(shí)現(xiàn)
115 第 6 章 基于 Feign 服務(wù)調(diào)用
116 6.1 認(rèn)識 Feign
116 6.1.1 Java 項(xiàng)目中接口的調(diào)用方式
117 6.1.2 Feign 和 Ribbon 的關(guān)系
117 6.2 使用 Feign 實(shí)現(xiàn)服務(wù)調(diào)用
117 6.2.1 坐標(biāo)依賴
117 6.2.2 工程改造
119 6.2.3 代碼測試
120 6.3 Feign 自定義配置和使用
120 6.3.1 日志配置
122 6.3.2 超時(shí)時(shí)間配置
122 6.3.3 客戶端組件配置
123 6.3.4 壓縮配置
124 6.3.5 使用配置文件自定義 Feign 的配置
125 6.4 源碼分析
125 6.4.1 核心組件與概念
126 6.4.2 動(dòng)態(tài)注冊 BeanDefinition
133 6.4.3 實(shí)例初始化
136 6.4.4 函數(shù)調(diào)用和網(wǎng)絡(luò)請求
143 第 7 章 Hystrix 服務(wù)熔斷
144 7.1 認(rèn)識 Hystrix
144 7.1.1 雪崩效應(yīng)
145 7.1.2 線程隔離
146 7.1.3 服務(wù)熔斷
147 7.2 使用 REST 實(shí)現(xiàn)服務(wù)熔斷
147 7.2.1 坐標(biāo)依賴
147 7.2.2 工程改造
150 7.2.3 代碼測試
150 7.3 使用 Feign 實(shí)現(xiàn)服務(wù)熔斷
151 7.3.1 坐標(biāo)依賴
151 7.3.2 工程改造
153 7.3.3 代碼測試
153 7.4 使用 Hystrix 實(shí)現(xiàn)監(jiān)控
154 7.4.1 使用 Hystrix Dashboard 查看監(jiān)控?cái)?shù)據(jù)
157 7.4.2 使用 Hystrix Turbine 聚合監(jiān)控?cái)?shù)據(jù)
159 7.4.3 斷路器的狀態(tài)
162 7.4.4 斷路器的隔離策略
163 7.5 源碼分析
164 7.5.1 封裝 HystrixCommand
169 7.5.2 斷路器邏輯
175 第 8 章 Spring Cloud Gateway 服務(wù)網(wǎng)關(guān)
176 8.1 認(rèn)識 Spring Cloud Gateway
177 8.1.1 微服務(wù)網(wǎng)關(guān)概述
178 8.1.2 微服務(wù)網(wǎng)關(guān)工作流程
178 8.2 實(shí)現(xiàn)服務(wù)網(wǎng)關(guān)
179 8.2.1 創(chuàng)建子工程——服務(wù)網(wǎng)關(guān)
179 8.2.2 坐標(biāo)依賴
179 8.2.3 工程改造
182 8.2.4 代碼測試
183 8.3 路由規(guī)則
183 8.3.1 路由規(guī)則概述
188 8.3.2 動(dòng)態(tài)路由
189 8.3.3 重寫轉(zhuǎn)發(fā)路徑
191 8.4 過濾器
191 8.4.1 過濾器基礎(chǔ)
192 8.4.2 局部過濾器
194 8.4.3 全局過濾器
196 8.5 網(wǎng)關(guān)限流
197 8.5.1 常見的限流算法
197 8.5.2 基于過濾器的限流
201 8.5.3 基于 Sentinel 的限流
205 8.6 源碼解析
206 8.6.1 初始化配置
207 8.6.2 網(wǎng)關(guān)處理器
209 8.6.3 路由定義定位器
211 8.6.4 路由定位器
211 8.6.5 路由斷言
212 8.6.6 網(wǎng)關(guān)過濾器
213 8.6.7 全局過濾器
213 8.6.8 API 端點(diǎn)
215 第 9 章 Spring Cloud Stream 消息驅(qū)動(dòng)
216 9.1 認(rèn)識 Spring Cloud Stream
216 9.1.1 消息隊(duì)列
218 9.1.2 綁定器
219 9.1.3 發(fā)布訂閱模式
220 9.2 實(shí)現(xiàn)消息驅(qū)動(dòng)
220 9.2.1 安裝 RabbitMQ
224 9.2.2 消息生產(chǎn)者
226 9.2.3 消息消費(fèi)者
229 9.2.4 自定義消息通道
231 9.3 消費(fèi)者組
232 9.3.1 工程改造
234 9.3.2 代碼測試
234 9.4 消費(fèi)分區(qū)
235 9.4.1 工程改造
237 9.4.2 代碼測試
238 9.5 源碼解析
239 9.5.1 動(dòng)態(tài)注冊 BeanDefinition
241 9.5.2 消息發(fā)送的流程
243 9.5.3 @StreamListener 注解的處理
249 第 10 章 Spring Cloud Config 分布式配置中心
250 10.1 認(rèn)識 Spring Cloud Config
251 10.1.1 配置中心概述
251 10.1.2 其他配置中心
251 10.2 實(shí)現(xiàn)配置中心
251 10.2.1 配置管理
254 10.2.2 服務(wù)端
257 10.2.3 客戶端
259 10.2.4 配置刷新
264 10.3 服務(wù)總線
264 10.3.1 消息代理
265 10.3.2 工程改造
270 10.4 源碼解析
271 10.4.1 配置服務(wù)器
280 10.4.2 配置客戶端