微服務項目實戰派——從SpringBoot到SpringCloud 版權信息
- ISBN:9787121422676
- 條形碼:9787121422676 ; 978-7-121-42267-6
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
微服務項目實戰派——從SpringBoot到SpringCloud 本書特色
適讀人群 :希望快速提升項目經驗的Java初學者、正在轉型微服務架構的傳統項目研發人員、希望提升Spring Cloud微服務全棧技術經驗的高級開發人員、對特定系統設計感興趣的產品經理及研發人員(1)以項目實例的形式來講解。
(2)精選業界普遍采用的技術方案。
(3)覆蓋微服務體系的絕大部分內容。
(4)循序漸進,實戰性強。
微服務項目實戰派——從SpringBoot到SpringCloud 內容簡介
隨著微服務概念的興起,如何快速實施微服務成了一個重要話題。在Java服務端領域,Spring Cloud微服務體系事實上已經成為整個Java后端架構的標配。如果你打算從事Java服務端開發,或者你所在公司正打算轉型微服務,那么Spring Cloud是無論如何都繞不開的存在。本書以項目實戰的形式來介紹Spring Cloud微服務體系。書中所有實例都來自作者多年工作實踐,內容覆蓋構建Spring Cloud微服務所需的絕大部分內容――包括微服務工程搭建、微服務網關、熔斷限流、分布式任務調度、自動化CI/CD構建、Kubernetes容器化部署、微服務監控系統、分布式鏈路追蹤等。
微服務項目實戰派——從SpringBoot到SpringCloud 目錄
章 基礎 ――從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 0章 搭建微服務監控系統 ――用“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
展開全部
微服務項目實戰派——從SpringBoot到SpringCloud 作者簡介
姜 橋擁有10年的互聯網系統研發、設計及架構經驗。曾任職于PP錢包、宜信、玖富等互聯網金融公司,后加入摩拜單車,主要負責摩拜支付、對賬等核心系統的設計研發工作。在摩拜任職期間,參與了摩拜單車整體軟件系統從單體架構到Spring Cloud微服務架構升級改造的全過程。目前任職于集度汽車,工作之余專注于微服務架構領域相關的技術研究及分享,并定期發布至微信公眾號“無敵碼農”。感興趣的朋友可以關注公眾號與作者交流。