微服務項目實戰派 — 從 Spring Boot 到 Spring Cloud
薑橋
- 出版商: 電子工業
- 出版日期: 2021-11-01
- 定價: $834
- 售價: 8.5 折 $709
- 語言: 簡體中文
- 頁數: 552
- 裝訂: 平裝
- ISBN: 7121422670
- ISBN-13: 9787121422676
-
相關分類:
Microservices 微服務、SOA、Java 相關技術
-
相關翻譯:
最實用業界專案精選:用 Spring Boot 和 Spring Cloud 頂級開發 (繁中版)
立即出貨
買這商品的人也買了...
-
$940$700 -
$580$452 -
$650$553 -
$594$564 -
$594$564 -
$714$678 -
$880$748 -
$534$507 -
$680$537 -
$580$458 -
$580$458 -
$505Spring Boot + Spring Cloud + Spring Cloud Alibab 微服務訓練營
-
$620$484 -
$580$458 -
$800$624 -
$708$673 -
$1,000$850 -
$620$489 -
$602Docker + Kubernetes 容器實戰派
-
$520$411 -
$654$621 -
$880$695 -
$806Spring Boot 3 核心技術與最佳實踐
-
$1,080$853 -
$607Spring Boot 3.0 開發實戰
相關主題
商品描述
隨著微服務概念的興起,如何快速實施微服務成了一個重要話題。在Java服務端領域,Spring Cloud微服務體系事實上已經成為整個Java後端架構的標配。如果你打算從事Java服務端開發,或者你所在公司正打算轉型微服務,那麽Spring Cloud是無論如何都繞不開的存在。本書以項目實戰的形式來介紹Spring Cloud微服務體系。書中所有實例都來自作者多年工作實踐,內容覆蓋構建Spring Cloud微服務所需的絕大部分內容——包括微服務工程搭建、微服務網關、熔斷限流、分佈式任務調度、自動化CI/CD構建、Kubernetes容器化部署、微服務監控系統、分佈式鏈路追蹤等。
作者簡介
姜 橋
擁有10年的互聯網系統研發、設計及架構經驗。曾任職於PP錢包、宜信、玖富等互聯網金融公司,後加入摩拜單車,主要負責摩拜支付、對賬等核心系統的設計研發工作。在摩拜任職期間,參與了摩拜單車整體軟件系統從單體架構到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 搭建N0de.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】接入“支付b”渠道 298
6.6.1 申請支付b沙箱環境 298
6.6.2 開發接入支付b支付的代碼 300
6.6.3 測試“支付b電腦網頁支付”接口 303
6.6.4 測試支付b“渠道支付結果通知”的邏輯 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