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