微服務項目實戰派——從Spring Boot到Spring Cloud

微服務項目實戰派——從Spring Boot到Spring Cloud

《微服務項目實戰派——從Spring Boot到Spring Cloud》是電子工業出版社出版圖書,作者是姜橋。

基本介紹

  • 書名:微服務項目實戰派——從Spring Boot到Spring Cloud
  • 作者:姜橋
  • 出版社:電子工業出版社
  • 出版時間:2022年1月
  • 頁數:552 頁
  • 定價:139 元
  • 開本:16 開
  • ISBN:9787121422676
內容簡介,圖書目錄,作者簡介,

內容簡介

以項目實例的形式來講解。精選業界普遍採用的技術方案。覆蓋微服務體系的絕大部分內容。循序漸進,實戰性強。
拒絕知識點羅列、demo版,用來自一線的真項目來學習Spring Cloud微服務架構,注重動手實戰。

圖書目錄

第1章 基礎
——從Spring Boot單體套用到Spring Cloud微服務 1
1.1 微服務的概念 2
1.1.1 什麼是微服務 2
1.1.2 從單體套用到微服務 2
1.1.3 主流的微服務技術棧 4
1.2 Spring Boot框架基礎 5
1.2.1 Spring Boot簡介 5
1.2.2 Spring Boot的核心原理 6
1.2.3 Spring Boot的核心註解 12
1.3 開發一個Spring Boot套用 19
1.3.1 步驟1:創建Spring Boot基礎工程 19
1.3.2 步驟2:創建項目配置檔案 22
1.3.3 步驟3:集成MyBatis框架 22
1.3.4 步驟4:編寫服務接口完成資料庫操作 24
1.4 Spring Cloud微服務體系 27
1.4.1 Spring Cloud簡介 27
1.4.2 Spring Boot與Spring Cloud的關係 28
1.4.3 Spring Cloud微服務的核心組件 28
1.4.4 Spring Cloud的核心註解 30
1.4.5 Spring Cloud的技術生態圈 34
1.5 本章小結 35
第2章 【實例】用戶系統
——用Spring Boot開發套用,用Spring Cloud將其改為微服務架構 36
2.1 功能概述 37
2.2 系統設計 37
2.2.1 業務邏輯設計 37
2.2.2 資料庫設計 40
2.3 步驟1:搭建Spring Boot套用的工程代碼 41
2.3.1 創建Spring Boot套用工程 41
2.3.2 創建套用的配置檔案 43
2.3.3 集成資料庫訪問框架MyBatis 44
2.3.4 集成快取資料庫Redis 47
2.4 步驟2:用Spring Boot實現業務邏輯 49
2.4.1 定義用戶微服務服務接口層(Controller層) 49
2.4.2 開發用戶微服務業務層(Service層)代碼 52
2.4.3 開發MyBatis持久層(Dao層)組件 55
2.5 步驟3:將Spring Boot套用升級為Spring Cloud微服務 59
2.5.1 部署服務註冊中心Consul 59
2.5.2 對Spring Boot套用進行微服務改造 60
2.5.3 將Spring Cloud微服務注入服務註冊中心Consul 63
2.6 本章小結 65
第3章 【實例】SSO授權認證系統
——用“Spring Security + Spring Cloud Gateway”構建OAuth 2.0授權認證服務 66
3.1 功能概述 67
3.2 系統設計 67
3.2.1 OAuth 2.0授權認證流程 67
3.2.2 系統結構設計 70
3.2.3 資料庫設計 71
3.3 步驟1:構建Spring Cloud授權認證微服務 75
3.3.1 創建Spring Cloud微服務工程 75
3.3.2 將Spring Cloud微服務注入服務註冊中心Consul 77
3.3.3 集成JDBC數據源,以訪問MySQL資料庫 77
3.3.4 構建OAuth 2.0授權認證微服務 79
3.3.5 開發調用資源微服務的FeignClient代碼 88
3.3.6 開發授權認證的自定義登錄界面 93
3.4 步驟2:構建Spring Cloud資源微服務 96
3.4.1 創建Spring Cloud微服務工程 96
3.4.2 將Spring Cloud微服務注入Consul 98
3.4.3 集成MyBatis框架,以訪問MySQL資料庫 98
3.4.4 構建OAuth 2.0資源微服務 99
3.4.5 實現“用戶受保護信息查詢”的業務邏輯 102
3.5 步驟3:搭建基於Spring Cloud Gateway的服務網關 115
3.5.1 認識微服務網關 115
3.5.2 了解常見的服務網關組件 116
3.5.3 服務網關的具體構建 117
3.5.4 添加安全認證機制 118
3.6 步驟4:演示OAuth 2.0授權認證流程 120
3.6.1 編寫註冊Client端系統的SQL語句 120
3.6.2 演示用戶授權認證登錄的過程 121
3.6.3 通過微服務網關訪問OAuth資源微服務 124
3.7 本章小結 124
第4章 【實例】車輛電子圍欄系統
——用“PostgreSQL + PostGis”實現電子圍欄服務,並利用配置中心管理微服務的多環境配置信息 125
4.1 功能概述 126
4.2 系統設計 126
4.2.1 系統結構設計 126
4.2.2 資料庫設計 127
4.3 步驟1:構建Spring Cloud微服務工程代碼 130
4.3.1 搭建“PostgreSQL + PostGIS”資料庫環境 130
4.3.2 創建Spring Cloud微服務工程 131
4.3.3 將Spring Cloud微服務注入Consul 133
4.3.4 集成MyBatis,以訪問PostgreSQL資料庫 134
4.3.5 通過MyBatis-Plus簡化MyBatis的操作 135
4.4 步驟2:實現微服務的業務邏輯 137
4.4.1 定義服務接口層(Controller層) 137
4.4.2 開發業務層(Service層)代碼 149
4.4.3 開發MyBatis持久層(Dao層)組件 165
4.5 步驟3:演示電子圍欄微服務的簡單操作 173
4.5.1 通過地圖工具,定義電子圍欄的GeoJson信息 173
4.5.2 演示電子圍欄微服務的簡單操作 174
4.6 步驟4:使用Spring Cloud ConfigServer配置中心 179
4.6.1 構建Spring Cloud ConfigServer配置中心微服務 179
4.6.2 將微服務接入Config配置中心 181
4.6.3 利用配置中心管理微服務的多環境配置 183
4.7 本章小結 184
第5章 【實例】電子錢包系統
——用“Feign + Ribbon + Hystrix + Vue.js + Docker”實現微服務的“負載調用 + 熔斷降級 + 部署” 185
5.1 功能概述 186
5.2 系統設計 186
5.2.1 系統流程設計 187
5.2.2 系統結構設計 188
5.2.3 資料庫設計 189
5.3 步驟1:構建Spring Cloud微服務工程代碼 191
5.3.1 創建Spring Cloud微服務工程 191
5.3.2 將Spring Cloud微服務注入Consul 192
5.3.3 集成MyBatis,以訪問MySQL資料庫 193
5.3.4 通過MyBatis-Plus簡化MyBatis的操作 193
5.4 步驟2:實現微服務的業務邏輯 194
5.4.1 定義服務接口層(Controller層) 194
5.4.2 開發業務層(Service層)的代碼 202
5.4.3 開發MyBatis持久層(Dao層)組件 220
5.5 步驟3:集成“Feign + Ribbon + Hystrix”實現微服務的“遠程通信 + 負載調用 + 熔斷降級” 225
5.5.1 集成微服務通信組件“Feign + Ribbon” 226
5.5.2 開發調用“支付微服務”的FeignClient客戶端代碼 226
5.5.3 微服務熔斷降級的概念 230
5.5.4 集成Hystrix實現微服務的熔斷降級 231
5.5.5 測試Hystrix熔斷降級的生效情況 234
5.6 步驟4:基於Vue.js開發電子錢包微服務的充值界面 238
5.6.1 認識Vue.js 238
5.6.2 搭建Node.js環境 238
5.6.3 創建電子錢包微服務的Vue.js前端工程 239
5.6.4 編寫電子錢包微服務的前端功能 241
5.6.5 測試“電子錢包充值”前後端互動流程 246
5.7 步驟5:用Docker部署Spring Cloud微服務 248
5.7.1 認識Docker 249
5.7.2 利用Dockerfile檔案構建微服務鏡像 250
5.7.3 創建docker-compose.yml檔案 252
5.7.4 通過Docker容器化部署微服務 254
5.8 本章小結 255
第6章 【實例】支付系統
——用“Redis分散式鎖 + Mockito”實現微服務場景下的“支付邏輯 + 代碼測試” 256
6.1 功能概述 257
6.2 系統設計 257
6.2.1 支付流程設計 258
6.2.2 系統結構設計 260
6.2.3 資料庫設計 261
6.3 步驟1:構建Spring Cloud微服務工程代碼 264
6.3.1 創建Spring Cloud微服務工程 264
6.3.2 將Spring Cloud微服務注入Consul 265
6.3.3 集成MyBatis,以訪問MySQL資料庫 266
6.3.4 通過MyBatis-Plus簡化MyBatis的操作 266
6.4 步驟2:實現基於Redis的分散式鎖 267
6.4.1 配置Redis服務 267
6.4.2 集成Redis客戶端訪問組件 268
6.4.3 理解Redis分散式鎖的原理 269
6.4.4 實現Redis分散式鎖的客戶端代碼 271
6.5 步驟3:實現微服務的業務邏輯 273
6.5.1 定義服務接口層(Controller層) 273
6.5.2 開發業務層(Service層)代碼 281
6.5.3 開發MyBatis持久層(Dao層)組件 292
6.6 步驟4:接入“支付寶”渠道 298
6.6.1 申請支付寶沙箱環境 298
6.6.2 開發接入支付寶支付的代碼 300
6.6.3 測試“支付寶電腦網頁支付”接口 303
6.6.4 測試支付寶“渠道支付結果通知”的邏輯 306
6.7 步驟5:進行Spring Cloud 微服務代碼單元測試 307
6.7.1 認識單元測試 307
6.7.2 開發Mockito單元測試代碼 308
6.8 本章小結 312
第7章 【實例】A/B測試系統
——用“Spring Boot Starter機制 + Caffeine快取”實現A/B流量切分 313
7.1 功能概述 314
7.2 系統設計 314
7.2.1 系統流程設計 314
7.2.2 系統結構設計 316
7.2.3 資料庫設計 317
7.3 步驟1:構建Spring Cloud微服務工程代碼 319
7.3.1 創建Spring Cloud微服務工程 320
7.3.2 將Spring Cloud微服務注入Consul 321
7.3.3 集成MyBatis,以訪問MySQL資料庫 322
7.3.4 通過MyBatis-Plus簡化MyBatis的操作 323
7.4 步驟2:集成高性能本地快取Caffeine 323
7.4.1 引入Caffeine的依賴 324
7.4.2 開發Caffeine的配置類代碼 324
7.4.3 演示Caffeine的使用效果 326
7.5 步驟3:實現微服務的業務邏輯 329
7.5.1 定義服務接口層(Controller層) 329
7.5.2 開發業務層(Service層)的代碼 345
7.5.3 開發MyBatis持久層(Dao層)組件 366
7.6 步驟4:基於Spring Boot Starter方式編寫“接入SDK” 374
7.6.1 創建Spring Boot Starter工程代碼 374
7.6.2 開發“接入SDK”的代碼 376
7.7 步驟5:接入A/B測試微服務,實現灰度發布 385
7.7.1 創建A/B測試接入方微服務示例工程代碼 385
7.7.2 通過接口調用的方式創建A/B測試 386
7.7.3 開發A/B測試代碼,實現灰度流量切分 388
7.8 本章小結 394
第8章 【實例】分散式任務調度系統
——用“ZooKeeper + ElasticJob”處理分散式任務 395
8.1 功能概述 396
8.2 步驟1:構建分散式任務調度系統 396
8.2.1 認識分散式任務調度框架ElasticJob 396
8.2.2 搭建ZooKeeper分散式協調服務 398
8.2.3 部署ElasticJob的Console管理控制台 400
8.3 步驟2:實現Spring Cloud微服務分散式任務處理 403
8.3.1 創建Spring Cloud微服務工程 403
8.3.2 編寫ElasticJob的“接入SDK” 405
8.3.3 定義微服務分散式任務 412
8.4 本章總結 415
第9章 搭建微服務DevOps發布系統
——用“GitLab + Harbor + Kubernetes”構建Spring Cloud微服務CI/CD自動化發布體系 416
9.1 CI/CD概述 417
9.2 了解DevOps發布系統的設計流程 418
9.3 基礎知識1:GitLab代碼倉庫 419
9.3.1 部署GitLab代碼倉庫 419
9.3.2 配置GitLab 信箱通知 422
9.3.3 設定GitLab的 CI/CD功能 424
9.3.4 安裝Maven及Docker環境 430
9.4 基礎知識2:Docker鏡像倉庫 430
9.4.1 Docker鏡像簡介 431
9.4.2 選擇Docker鏡像倉庫 431
9.4.3 部署Harbor私有鏡像倉庫 432
9.5 基礎知識3:Kubernetes容器編排技術 436
9.5.1 Kubernetes簡介 437
9.5.2 搭建Kubernetes集群 438
9.5.3 Kubernetes的技術原理 453
9.6 自動化發布Spring Cloud微服務 457
9.6.1 創建Spring Cloud微服務的示例工程 457
9.6.2 配置Spring Cloud項目的Docker打包外掛程式 459
9.6.3 準備GitLab CI/CD 伺服器的Kubernetes環境 461
9.6.4 編寫Kubernetes的發布部署檔案 462
9.6.5 定義Spring Cloud微服務的GitLab CI/CD流程 464
9.6.6 將微服務套用自動發布到Kubernetes集群中 466
9.7 本章小結 469
第10章 搭建微服務監控系統
——用“Prometheus + Grafana + SkyWalking”實現度量指標監控及分散式鏈路追蹤 470
10.1 認識監控系統 471
10.1.1 監控對象及分層 471
10.1.2 常見的監控指標及類型 472
10.1.3 主流的監控系統及選型 475
10.2 【實戰】構建微服務度量指標監控系統 477
10.2.1 認識Prometheus 477
10.2.2 步驟1:部署Prometheus Operator 481
10.2.3 步驟2:演示Prometheus的Metrics(度量指標)監控效果 484
10.2.4 步驟3:部署Grafana可視化監控系統 487
10.2.5 步驟4:將Spring Cloud 微服務接入Prometheus 489
10.2.6 步驟6:使用ServiceMonitor管理監控目標 510
10.2.7 步驟7:構建基於Grafana的可視化監控界面 513
10.3 【實戰】構建微服務分散式鏈路追蹤系統 517
10.3.1 認識分散式鏈路追蹤 518
10.3.2 認識SkyWalking 520
10.3.3 步驟1:部署SkyWalking 521
10.3.4 步驟2:將Spring Cloud微服務接入SkyWalking 527
10.3.5 步驟3:通過SkyWalking UI追蹤分散式鏈路 535
10.4 本章小結 537

作者簡介

姜 橋
擁有10年的網際網路系統研發、設計及架構經驗。曾任職於PP錢包、宜信、玖富等網際網路金融公司,後加入摩拜腳踏車,主要負責摩拜支付、對賬等核心繫統的設計研發工作。在摩拜任職期間,參與了摩拜腳踏車整體軟體系統從單體架構到Spring Cloud微服務架構升級改造的全過程。
任職於集度汽車,工作之餘專注於微服務架構領域相關的技術研究及分享,並定期發布至微信公眾號“無敵碼農”。感興趣的朋友可以關注公眾號與作者交流。

相關詞條

熱門詞條

聯絡我們