內容簡介
本書以實戰化訓練為宗旨,用詳盡的案例講述 Spring Cloud 的項目搭建方法和常用技術。每個案例都配有詳細講解和代碼,可以幫助讀者快速掌握書中的各個知識點。本書首先介紹系統架構的發展歷史、常見的微服務架構、Spring Boot 和 Spring Cloud 的關係;然後介紹Spring Cloud 開發環境的搭建,如 JDK、IntelliJ IDEA、Maven 的安裝和配置;繼而介紹微服務環境的創建、微服務項目案例的搭建和微服務的調用;後介紹常用的微服務技術,如 Eureka、Ribbon、Feign、Hystrix、Spring Cloud Gateway、Spring Cloud Stream 和 Spring Cloud Config。
本書適合具備 Java 基礎的開發人員、對微服務架構和 Spring Cloud 感興趣的讀者、想要了解 Spring 或Spring Cloud 的開發人員閱讀。對嘗試選擇或實施微服務架構的團隊來說,本書具有較高的參考價值。
圖書目錄
001 第 1 章 認識微服務
002 1.1 系統架構的發展歷史
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 章 準備開發環境
014 2.1 Java 開發環境 JDK
014 2.1.1 下載 JDK
016 2.1.2 安裝 JDK
018 2.1.3 配置 Java 環境變數
019 2.2 開發工具 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 環境變數
029 2.3.4 配置 Maven 本地倉庫和下載源
030 2.3.5 與 IntelliJ IDEA 集成
031 第 3 章 貫穿案例
032 3.1 資料庫
033 3.2 創建工程
033 3.2.1 創建父工程
035 3.2.2 創建子工程—用戶微服務
040 3.2.3 創建子工程—商品微服務
045 3.2.4 創建子工程—訂單微服務
049 3.3 使用 Postman 測試微服務
049 3.3.1 測試新增
050 3.3.2 測試查詢全部
050 3.3.3 測試根據 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 服務註冊和發現
056 4.1 認識 Eureka
056 4.1.1 服務註冊和服務發現
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 的元數據完成服務調用
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 服務節點剔除問題
071 4.4.3 監控頁面顯示 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 實現負載均衡調用
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 的實現
105 5.3.4 負載均衡策略實現
115 第 6 章 基於 Feign 服務調用
116 6.1 認識 Feign
116 6.1.1 Java 項目中接口的調用方式
117 6.1.2 Feign 和 Ribbon 的關係
117 6.2 使用 Feign 實現服務調用
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 動態註冊 BeanDefinition
133 6.4.3 實例初始化
136 6.4.4 函式調用和網路請求
143 第 7 章 Hystrix 服務熔斷
144 7.1 認識 Hystrix
144 7.1.1 雪崩效應
145 7.1.2 執行緒隔離
146 7.1.3 服務熔斷
147 7.2 使用 REST 實現服務熔斷
147 7.2.1 坐標依賴
147 7.2.2 工程改造
150 7.2.3 代碼測試
150 7.3 使用 Feign 實現服務熔斷
151 7.3.1 坐標依賴
151 7.3.2 工程改造
153 7.3.3 代碼測試
153 7.4 使用 Hystrix 實現監控
154 7.4.1 使用 Hystrix Dashboard 查看監控數據
157 7.4.2 使用 Hystrix Turbine 聚合監控數據
159 7.4.3 斷路器的狀態
162 7.4.4 斷路器的隔離策略
163 7.5 源碼分析
164 7.5.1 封裝 HystrixCommand
169 7.5.2 斷路器邏輯
175 第 8 章 Spring Cloud Gateway 服務網關
176 8.1 認識 Spring Cloud Gateway
177 8.1.1 微服務網關概述
178 8.1.2 微服務網關工作流程
178 8.2 實現服務網關
179 8.2.1 創建子工程——服務網關
179 8.2.2 坐標依賴
179 8.2.3 工程改造
182 8.2.4 代碼測試
183 8.3 路由規則
183 8.3.1 路由規則概述
188 8.3.2 動態路由
189 8.3.3 重寫轉發路徑
191 8.4 過濾器
191 8.4.1 過濾器基礎
192 8.4.2 局部過濾器
194 8.4.3 全局過濾器
196 8.5 網關限流
197 8.5.1 常見的限流算法
197 8.5.2 基於過濾器的限流
201 8.5.3 基於 Sentinel 的限流
205 8.6 源碼解析
206 8.6.1 初始化配置
207 8.6.2 網關處理器
209 8.6.3 路由定義定位器
211 8.6.4 路由定位器
211 8.6.5 路由斷言
212 8.6.6 網關過濾器
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 發布訂閱模式
220 9.2 實現訊息驅動
220 9.2.1 安裝 RabbitMQ
224 9.2.2 訊息生產者
226 9.2.3 訊息消費者
229 9.2.4 自定義訊息通道
231 9.3 消費者組
232 9.3.1 工程改造
234 9.3.2 代碼測試
234 9.4 消費分區
235 9.4.1 工程改造
237 9.4.2 代碼測試
238 9.5 源碼解析
239 9.5.1 動態註冊 BeanDefinition
241 9.5.2 訊息傳送的流程
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 實現配置中心
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 配置客戶端
作者簡介
周喜平,教授,研究方向為軟體工程、軟體開發技術。河南省優秀教師,河南省教育廳學術帶頭人,河南省高等學校計算機類專業教學指導委員會委員。發表論文30餘篇,出版專著7部,主持和參與科研項目20餘項,其中“河南省外經貿廳辦工自動化系統”“電力及施工企業固定資產管理系統”“惠農資金管理系統”“地市級居民醫療保險信息管理系統”“純電動汽車高並發數據採集平台”“基於標準分的教師評教系統”“智慧消防雲平台”等項目均採用Java工具實現。