內容簡介
《Spring Cloud與Docker高並發微服務架構境采說設計實施》從架構設計、套用開發和運維部署三個方面出發,對微服務架構設計的實施進行了全方位的闡述和深入實踐,並結合生產實際講解了Spring Cloud、Docker 和Jenkins 等工具的具體使用方法。《Spring Cloud與Docker高並發微服務架構設計實施》中通過一個網際網路電商平台實例實現了高並發的微服章檔舉務架構設計,並通過詳細的開發和實施過程,演示了構建一個安全可靠、穩定高效並可持續擴展的系統平台的方法。
《Spring Cloud與Docker高並發微服務架構設計實施》適合網際網路套用開發設計人員參考學習。
圖書目錄
第一部分架 構 篇
1 微服務架構與 Spring Cloud 2
1.1 微服務概念的由來 2
1.2 微服務的定義 3
1.3 微服務架構與整體式架構的區別 5
1.4 微服務架構與SOA 的比較 8
1.5 為什麼要使用微服務架構 9
1.6 為實施微服務架構做好準備 10
1.6.1 思想觀念的轉變 10
1.6.2 團隊管理方式的改變 11
1.6.3 自動化基礎設施的建設 11
1.7 為什麼要使用Spring Cloud 12
1.8 Spring Cloud 組件介紹 13
1.9 Spring Cloud 的版本說明 15
1.10 小結 17
2 微服務架構最佳設計 18
2.1 合理劃分微服務 19
2.2 微服務治理 19
2.3 Rest API 微服務設計 21
2.3.1 使用資料庫集群 22
2.3.2 讀寫分離設計 22
2.3.3 使用快取 22
2.3.4 保證Rest API 微服務的獨立性 23
2.4 Web UI 微服務設計 23
2.4.1 使用FeignClient 實現負載均衡調用 23
2.4.2 使用Hystrix 實現容錯設計 23
2.4.3 使用肯民汽姜非阻塞的異步編程技術實現高並發調用 24
2.4.4 使用分散式檔案系統 24
2.5 微服務之間調用戒判籃規則設計 24
2.6 數據最終一致性設計 25
2.7 分散式集群架構設計 26
2.8 微服務運行環境安全設計 27
2.9 小結 27
3 電商平台微服務設計實例 29
3.1 電商平台總體設計 29
3.1.1 總體業務流程設計 29
3.1.2 總體業務功能設計 31
3.2 電商平台業務模型設計 32
3.2.1 移動商城業務模型 32
3.2.2 商家管理後台業務模型 33
3.2.3 平台管理後台業務模型 33
3.3 創建Rest API 微服務 34
3.4 創建Web UI 微服務 36
3.4.1 移動商城Web UI 微服務 36
3.4.2 商家管理後台的Web UI 微服務 37
3.4.3 平台管理後台Web UI 微服務 37
3.5 電商平台微服務體系結構 38
3.6 小結 39
第二部分 開 發 篇
4 開發工具選用及 Spring Boot 基礎 41
4.1 開發工具選擇 42
4.2 開發環境配置 42
4.3 創建Spring Boot 工程 43
4.4 使用JPA 47
4.4.1 數據源配置 48
4.4.2 JPA 配置 48
4.4.3 數據實體設計 49
4.4.4 存儲庫接口設計 49
4.4.5 單元測試 50
4.5 使用Thymeleaf 51
4.5.1 控制器設計 51
4.5.2 視圖設計 52
4.6 運行與部署 52
4.7 小結 54
5 電商平台微服務工程設計 55
5.1 微服務工程結構 55
5.2 電商平台微服務工程組建 57
5.3 資料庫再檔應料選型 57
5.4 微服務工程創建步驟 58
5.5 項目基本配置 60
5.6 創建模組 64
5.7 小結 66
6 微服務治理基礎服務開發 67
6.1 註冊管理中心 68
6.1.1 創建註冊管理中心 68
6.1.2 運行註冊管理中心 70
6.1.3 微服務怎樣使用註冊管理全催中心 70
6.1.4 構建高可用的註冊管理中心 72
6.2 配置管理中心 73
6.2.1 創建配置管理中心 73
6.2.2 微服務如何使用配置管理中心 76
6.2.3 線上更新配置信息 77
6.3 微服務監控中心拔愚戒 78
6.3.1 使用斷路器儀錶盤實現監控 79
6.3.2 聚合服務監控管理中心 81
6.4 服務跟蹤分析中心 86
6.4.1 創建服務跟蹤分析中心 86
6.4.2 在微服務中啟用服務跟蹤功能 90
6.5 日誌分析平台 93
6.5.1 創建日誌分析平台 93
6.5.2 使用日誌分析平台 93
6.6 小結 94
7 Rest API 微服務開發 96
7.1 領域業務開發 96
7.1.1 使用Druid 數據源 98
7.1.2 JPA 及其配置 100
7.1.3 數據實體建模 101
7.1.4 查詢對象設計 104
7.1.5 實體持久化設計 106
7.1.6 持久化測試 107
7.1.7 領域服務開發 109
7.1.8 領域服務的單元測試 111
7.1.9 使用Redis 實現快取設計 112
7.2 Rest API 套用開發 117
7.2.1 Rest API 套用配置 117
7.2.2 啟動程式設計 119
7.2.3 接口開發 119
7.3 使用訊息處理事件 123
7.3.1 訊息生產者設計 124
7.3.2 訊息消費者設計 125
7.3.3 使用訊息測試 128
7.4 小結 129
8 Web UI 微服務開發 131
8.1 高並發接口調用分層設計 131
8.2 通過FeignClient 調用Rest API 132
8.3 使用Hystrix 斷路器 134
8.4 使用非阻塞異步編程方法 136
8.4.1 CompletableFuture 介紹 137
8.4.2 性能比較測試 140
8.5 Web 套用開發 145
8.5.1 項目引用配置 145
8.5.2 應用程式配置 146
8.5.3 業務功能開發 148
8.6 開發環境的熱部署設定 154
8.7 使用分散式檔案系統 157
8.7.1 分散式檔案系統客戶端開發 157
8.7.2 商品圖片上傳設計 159
8.7.3 富文本編輯器上傳檔案設計 160
8.7.4 建立本地檔案信息庫 163
8.8 小結 166
9 電商平台移動商城開發 167
9.1 移動商城首頁設計 168
9.2 使用負載均衡的導航設計 174
9.3 按分類查詢設計 176
9.4 商品詳情頁設計 179
9.5 購買下單實現 181
9.6 用戶登錄與賬戶切換設計 184
9.6.1 用戶登錄設計 184
9.6.2 切換賬號設計 186
9.7 訂單查詢設計 188
9.8 集成測試 191
9.9 小結 192
10 商家管理後台與 SSO 設計 193
10.1 商家許可權管理體系設計及開發 194
10.1.1 商家許可權體系建模 195
10.1.2 商家許可權體系的持久化設計 199
10.1.3 商家許可權體系的領域服務開發 201
10.2 商家管理微服務開發 204
10.2.1 商家領域服務層單元測試 204
10.2.2 商家服務的接口開發 208
10.3 SSO 設計 213
10.3.1 SSO 基本配置 213
10.3.2 在SSO 中使用商家的許可權體系 214
10.3.3 用戶登錄設計 216
10.3.4 有關驗證碼的說明 218
10.3.5 SSO 的主頁設計 220
10.3.6 OAuth2 服務端設計 222
10.4 SSO 客戶端設計 224
10.4.1 客戶端的項目管理配置 224
10.4.2 客戶端的安全管理配置 225
10.4.3 許可權驗證實現原理 226
10.4.4 如何在套用中接入SSO 228
10.4.5 有關跨站請求偽造防禦的相關設定 230
10.4.6 根據用戶許可權自動分配選單 230
10.5 小結 232
11 平台管理後台開發 233
11.1 平台管理後台領域設計 233
11.1.1 領域實體建模 233
11.1.2 實體的行為設計 236
11.1.3 領域服務開發 236
11.1.4 領域服務單元測試 239
11.2 平台管理後台訪問控制設計 240
11.2.1 使用平台管理的用戶體系 240
11.2.2 許可權管理設計 242
11.3 商家的註冊設計 245
11.4 商家選單體系管理開發 248
11.4.1 分類選單管理開發 248
11.4.2 模組選單管理開發 249
11.4.3 訪問資源管理開發 252
11.5 商家角色管理開發 255
11.6 小結 257
第三部分運 維 篇
12 伺服器架構設計與 Docker 使用 259
12.1 伺服器組建 259
12.2 安全的伺服器架構設計 260
12.2.1 防火牆安裝及配置 260
12.2.2 建立安全的區域網路環境 264
12.3 伺服器資源分配 266
12.4 CentOS 安裝 269
12.4.1 IP 地址設定 270
12.4.2 安全設定 270
12.4.3 語言配置 270
12.4.4 時間同步配置 271
12.5 Docker 和docker-compose 安裝 271
12.5.1 Docker 安裝及使用 272
12.5.2 docker-compose 安裝及使用 275
12.6 使用Docker 搭建微服務治理環境 279
12.6.1 伺服器1 的部署配置 279
12.6.2 伺服器2 的部署配置 281
12.7 使用Docker 部署日誌分析平台 283
12.8 使用Docker 部署微服務套用 286
12.9 小結 286
13 資料庫集群設計與高可用讀寫分離實施 288
13.1 MySQL 安裝 289
13.2 主從同步設定 291
13.3 主主同步設定 294
13.4 資料庫代理中間件選擇 296
13.5 使用OneProxy 實現讀寫分離設計 297
13.5.1 OneProxy 安裝 297
13.5.2 高可用讀寫分離配置 298
13.6 OneProxy 分庫分區設計 302
13.6.1 按範圍分庫分表 303
13.6.2 按值分庫分表 303
13.6.3 按哈希算法分庫分表 304
13.7 雙機熱備設計 306
13.8 小結 307
14 分散式檔案系統等基礎設施安裝與配置 308
14.1 高可用的分散式檔案系統構建 308
14.1.1 FastDFS 安裝 310
14.1.2 跟蹤伺服器配置 310
14.1.3 存儲節點配置 311
14.1.4 上傳檔案測試 312
14.1.5 Nginx 安裝及負載均衡配置 313
14.1.6 開機啟動設定 317
14.2 GitLab 安裝 322
14.3 Redis 安裝 324
14.4 RabbitMQ 安裝 326
14.5 小結 327
15 使用自動化構建工具 Jenkins 實現CI/CD 328
15.1 持續交付工作流程 330
15.2 Jenkins 安裝 331
15.3 Jenkins 基本配置 333
15.4 Jenkins 自動部署實例 335
15.4.1 創建任務 336
15.4.2 任務配置 337
15.4.3 執行任務 340
15.5 小結 343
後記 345
參考文獻 346
3.3 創建Rest API 微服務 34
3.4 創建Web UI 微服務 36
3.4.1 移動商城Web UI 微服務 36
3.4.2 商家管理後台的Web UI 微服務 37
3.4.3 平台管理後台Web UI 微服務 37
3.5 電商平台微服務體系結構 38
3.6 小結 39
第二部分 開 發 篇
4 開發工具選用及 Spring Boot 基礎 41
4.1 開發工具選擇 42
4.2 開發環境配置 42
4.3 創建Spring Boot 工程 43
4.4 使用JPA 47
4.4.1 數據源配置 48
4.4.2 JPA 配置 48
4.4.3 數據實體設計 49
4.4.4 存儲庫接口設計 49
4.4.5 單元測試 50
4.5 使用Thymeleaf 51
4.5.1 控制器設計 51
4.5.2 視圖設計 52
4.6 運行與部署 52
4.7 小結 54
5 電商平台微服務工程設計 55
5.1 微服務工程結構 55
5.2 電商平台微服務工程組建 57
5.3 資料庫選型 57
5.4 微服務工程創建步驟 58
5.5 項目基本配置 60
5.6 創建模組 64
5.7 小結 66
6 微服務治理基礎服務開發 67
6.1 註冊管理中心 68
6.1.1 創建註冊管理中心 68
6.1.2 運行註冊管理中心 70
6.1.3 微服務怎樣使用註冊管理中心 70
6.1.4 構建高可用的註冊管理中心 72
6.2 配置管理中心 73
6.2.1 創建配置管理中心 73
6.2.2 微服務如何使用配置管理中心 76
6.2.3 線上更新配置信息 77
6.3 微服務監控中心 78
6.3.1 使用斷路器儀錶盤實現監控 79
6.3.2 聚合服務監控管理中心 81
6.4 服務跟蹤分析中心 86
6.4.1 創建服務跟蹤分析中心 86
6.4.2 在微服務中啟用服務跟蹤功能 90
6.5 日誌分析平台 93
6.5.1 創建日誌分析平台 93
6.5.2 使用日誌分析平台 93
6.6 小結 94
7 Rest API 微服務開發 96
7.1 領域業務開發 96
7.1.1 使用Druid 數據源 98
7.1.2 JPA 及其配置 100
7.1.3 數據實體建模 101
7.1.4 查詢對象設計 104
7.1.5 實體持久化設計 106
7.1.6 持久化測試 107
7.1.7 領域服務開發 109
7.1.8 領域服務的單元測試 111
7.1.9 使用Redis 實現快取設計 112
7.2 Rest API 套用開發 117
7.2.1 Rest API 套用配置 117
7.2.2 啟動程式設計 119
7.2.3 接口開發 119
7.3 使用訊息處理事件 123
7.3.1 訊息生產者設計 124
7.3.2 訊息消費者設計 125
7.3.3 使用訊息測試 128
7.4 小結 129
8 Web UI 微服務開發 131
8.1 高並發接口調用分層設計 131
8.2 通過FeignClient 調用Rest API 132
8.3 使用Hystrix 斷路器 134
8.4 使用非阻塞異步編程方法 136
8.4.1 CompletableFuture 介紹 137
8.4.2 性能比較測試 140
8.5 Web 套用開發 145
8.5.1 項目引用配置 145
8.5.2 應用程式配置 146
8.5.3 業務功能開發 148
8.6 開發環境的熱部署設定 154
8.7 使用分散式檔案系統 157
8.7.1 分散式檔案系統客戶端開發 157
8.7.2 商品圖片上傳設計 159
8.7.3 富文本編輯器上傳檔案設計 160
8.7.4 建立本地檔案信息庫 163
8.8 小結 166
9 電商平台移動商城開發 167
9.1 移動商城首頁設計 168
9.2 使用負載均衡的導航設計 174
9.3 按分類查詢設計 176
9.4 商品詳情頁設計 179
9.5 購買下單實現 181
9.6 用戶登錄與賬戶切換設計 184
9.6.1 用戶登錄設計 184
9.6.2 切換賬號設計 186
9.7 訂單查詢設計 188
9.8 集成測試 191
9.9 小結 192
10 商家管理後台與 SSO 設計 193
10.1 商家許可權管理體系設計及開發 194
10.1.1 商家許可權體系建模 195
10.1.2 商家許可權體系的持久化設計 199
10.1.3 商家許可權體系的領域服務開發 201
10.2 商家管理微服務開發 204
10.2.1 商家領域服務層單元測試 204
10.2.2 商家服務的接口開發 208
10.3 SSO 設計 213
10.3.1 SSO 基本配置 213
10.3.2 在SSO 中使用商家的許可權體系 214
10.3.3 用戶登錄設計 216
10.3.4 有關驗證碼的說明 218
10.3.5 SSO 的主頁設計 220
10.3.6 OAuth2 服務端設計 222
10.4 SSO 客戶端設計 224
10.4.1 客戶端的項目管理配置 224
10.4.2 客戶端的安全管理配置 225
10.4.3 許可權驗證實現原理 226
10.4.4 如何在套用中接入SSO 228
10.4.5 有關跨站請求偽造防禦的相關設定 230
10.4.6 根據用戶許可權自動分配選單 230
10.5 小結 232
11 平台管理後台開發 233
11.1 平台管理後台領域設計 233
11.1.1 領域實體建模 233
11.1.2 實體的行為設計 236
11.1.3 領域服務開發 236
11.1.4 領域服務單元測試 239
11.2 平台管理後台訪問控制設計 240
11.2.1 使用平台管理的用戶體系 240
11.2.2 許可權管理設計 242
11.3 商家的註冊設計 245
11.4 商家選單體系管理開發 248
11.4.1 分類選單管理開發 248
11.4.2 模組選單管理開發 249
11.4.3 訪問資源管理開發 252
11.5 商家角色管理開發 255
11.6 小結 257
第三部分運 維 篇
12 伺服器架構設計與 Docker 使用 259
12.1 伺服器組建 259
12.2 安全的伺服器架構設計 260
12.2.1 防火牆安裝及配置 260
12.2.2 建立安全的區域網路環境 264
12.3 伺服器資源分配 266
12.4 CentOS 安裝 269
12.4.1 IP 地址設定 270
12.4.2 安全設定 270
12.4.3 語言配置 270
12.4.4 時間同步配置 271
12.5 Docker 和docker-compose 安裝 271
12.5.1 Docker 安裝及使用 272
12.5.2 docker-compose 安裝及使用 275
12.6 使用Docker 搭建微服務治理環境 279
12.6.1 伺服器1 的部署配置 279
12.6.2 伺服器2 的部署配置 281
12.7 使用Docker 部署日誌分析平台 283
12.8 使用Docker 部署微服務套用 286
12.9 小結 286
13 資料庫集群設計與高可用讀寫分離實施 288
13.1 MySQL 安裝 289
13.2 主從同步設定 291
13.3 主主同步設定 294
13.4 資料庫代理中間件選擇 296
13.5 使用OneProxy 實現讀寫分離設計 297
13.5.1 OneProxy 安裝 297
13.5.2 高可用讀寫分離配置 298
13.6 OneProxy 分庫分區設計 302
13.6.1 按範圍分庫分表 303
13.6.2 按值分庫分表 303
13.6.3 按哈希算法分庫分表 304
13.7 雙機熱備設計 306
13.8 小結 307
14 分散式檔案系統等基礎設施安裝與配置 308
14.1 高可用的分散式檔案系統構建 308
14.1.1 FastDFS 安裝 310
14.1.2 跟蹤伺服器配置 310
14.1.3 存儲節點配置 311
14.1.4 上傳檔案測試 312
14.1.5 Nginx 安裝及負載均衡配置 313
14.1.6 開機啟動設定 317
14.2 GitLab 安裝 322
14.3 Redis 安裝 324
14.4 RabbitMQ 安裝 326
14.5 小結 327
15 使用自動化構建工具 Jenkins 實現CI/CD 328
15.1 持續交付工作流程 330
15.2 Jenkins 安裝 331
15.3 Jenkins 基本配置 333
15.4 Jenkins 自動部署實例 335
15.4.1 創建任務 336
15.4.2 任務配置 337
15.4.3 執行任務 340
15.5 小結 343
後記 345
參考文獻 346