●目 錄 * 1章 微服務簡介 11.1 單體架構及其存在的不足 11.1.1 單體架構簡介 11.1.2 單體架構存在的不足 21.1.3 單體架構使用服務器集群及存在的不足 21.2 微服務 31.2.1 什麼是微服務 41.2.2 微服務的優勢 81.3 微服務的不足 91.3.1 微服務的復雜度 91.3.2 分布式事務 91.3.3 服務的劃分 111.3.4 服務的部署 111.4 微服務和SOA的關繫 121.5 微服務的設計原則 12* 2章 Spring Cloud簡介 142.1 微服務應該具備的功能 142.1.1 服務的注冊與發現 152.1.2 服務的負載均衡 152.1.3 服務的容錯 172.1.4 服務網關 182.1.5 服務配置的統一管理 192.1.6 服務鏈路追蹤 202.2 Spring Cloud 212.2.1 簡介 212.2.2 常用組件 212.2.3 項目一覽表 232.3 Dubbo簡介 242.4 Spring Cloud與Dubbo比較 252.5 Kubernetes簡介 262.6 Spring Could與Kubernetes比較 272.7 總結 29第3章 構建微服務的準備 303.1 JDK的安裝 303.1.1 JDK的和安裝 303.1.2 環境變量的配置 303.2 IDEA的安裝 313.2.1 IDEA的 313.2.2 用IDEA創建一個Spring Boot工程 323.2.3 用IDEA啟動多個Spring Boot工程實例 343.3 構建工具Maven的使用 353.3.1 Maven簡介 353.3.2 Maven的安裝 353.3.3 Maven的核心概念 373.3.4 編寫Pom文件 373.3.5 Maven構建項目的生命周期 393.3.6 常用的Maven命令 40第4章 開發框架Spring Boot 434.1 Spring Boot簡介 434.1.1 Spring Boot的特點 434.1.2 Spring Boot的優點 444.2 用IDEA構建Spring Boot工程 444.2.1 項目結構 444.2.2 在Spring Boot工程中構建Web 454.2.3 Spring Boot的測試 464.3 Spring Boot配置文件詳解 464.3.1 自定義屬性 474.3.2 將配置文件的屬性賦給實體類 474.3.3 自定義配置文件 494.3.4 多個環境的配置文件 504.4 運行狀態監控Actuator 504.4.1 查看運行程序的健康狀態 524.4.2 查看運行程序的Bean 534.4.3 使用Actuator關閉應用程序 554.4.4 使用shell連接Actuator 564.5 Spring Boot整合JPA 574.6 Spring Boot整合Redis 604.6.1 Redis簡介 604.6.2 Redis的安裝 604.6.3 在Spring Boot中使用Redis 604.7 Spring Boot整合Swagger2,搭建Restful API在線文檔 62第5章 服務注冊和發現Eureka 665.1 Eureka簡介 665.1.1 什麼是Eureka 665.1.2 為什麼選擇Eureka 665.1.3 Eureka的基本架構 675.2 編寫Eureka Server 675.3 編寫Eureka Client 705.4 源碼解析Eureka 735.4.1 Eureka的一些概念 735.4.2 Eureka的高可用架構 745.4.3 Register服務注冊 745.4.4 Renew服務續約 785.4.5 為什麼Eureka Client獲取服務實例這麼慢 805.4.6 Eureka 的自我保護模式 805.5 構建高可用的Eureka Server集群 815.6 總結 83第6章 負載均衡Ribbon 846.1 RestTemplate簡介 846.2 Ribbon簡介 856.3 使用RestTemplate和Ribbon來消費服務 856.4 LoadBalancerClient簡介 886.5 源碼解析Ribbon 90第7章 聲明式調用Feign 1017.1 寫一個Feign客戶端 1017.2 FeignClient詳解 1057.3 FeignClient的配置 1067.4 從源碼的角度講解Feign的工作原理 1077.5 在Feign中使用HttpClient和OkHttp 1107.6 Feign是如何實現負載均衡的 1127.7 總結 114第8章 熔斷器Hystrix 1158.1 什麼是Hystrix 1158.2 Hystrix解決了什麼問題 1158.3 Hystrix的設計原則 1178.4 Hystrix的工作機制 1178.5 在RestTemplate和Ribbon上使用熔斷器 1188.6 在Feign上使用熔斷器 1198.7 使用Hystrix Dashboard監控熔斷器的狀態 1208.7.1 在RestTemplate中使用Hystrix Dashboard 1208.7.2 在Feign中使用Hystrix Dashboard 1238.8 使用Turbine聚合監控 124第9章 路由網關Spring Cloud Zuul 1269.1 為什麼需要Zuul 1269.2 Zuul的工作原理 1269.3 案例實戰 1289.3.1 搭建Zuul服務 1289.3.2 在Zuul上配置API接口的版本號 1319.3.3 在Zuul上配置熔斷器 1329.3.4 在Zuul中使用過濾器 1339.3.5 Zuul的常見使用方式 135* 10章 配置中心Spring Cloud Config 13710.1 Config Server從本地讀取配置 文件 13710.1.1 構建Config Server 13710.1.2 構建Config Client 13810.2 Config Server從遠程Git倉庫讀取配置文件 14010.3 構建高可用的Config Server 14110.3.1 構建Eureka Server 14110.3.2 改造Config Server 14210.3.3 改造Config Client 14310.4 使用Spring Cloud Bus刷新配置 144* 11章 服務鏈路追蹤Spring Cloud Sleuth 14711.1 為什麼需要Spring Cloud Sleuth 14711.2 基本術語 14711.3 案例講解 14811.3.1 構建Zipkin Server 14811.3.2 構建User Service 14911.3.3 構建Gateway Service 15111.3.4 項目演示 15211.4 在鏈路數據中添加自定義數據 15311.5 使用RabbitMQ 傳輸鏈路數據 15411.6 在MySQL數據庫中存儲鏈路數據 15511.6.1 使用Http傳輸鏈路數據,並存儲在MySQL數據庫中 15611.6.2 使用RabbitMQ傳輸鏈路數據,並存儲在MySQL數據庫中 15711.7 在ElasticSearch中存儲鏈路數據 15811.8 用Kibana展示鏈路數據 159* 12章 微服務監控Spring Boot Admin 16112.1 使用Spring Boot Admin監控Spring Cloud微服務 16112.1.1 構建Admin Server 16112.1.2 構建Admin Client 16312.2 在Spring Boot Admin中集成Turbine 16612.2.1 改造Eureka Client 16612.2.2 另行構建Eureka Client 16712.2.3 構建Turbine工程 16812.2.4 在Admin Server中集成Turbine 16912.3 在Spring Boot Admin中添加安全登錄界面 172* 13章 Spring Boot Security詳解 17413.1 Spring Security簡介 17413.1.1 什麼是Spring Security 17413.1.2 為什麼選擇Spring Security 17413.1.3 Spring Security提供的安全模塊 17513.2 Spring Boot Security與Spring Security的關繫 17613.3 Spring Boot Security案例詳解 17613.3.1 構建Spring Boot Security工程 17613.3.2 配置Spring Security 17813.3.3 編寫相關界面 18013.3.4 Spring Security方法級別上的保護 18513.3.5 從數據庫中讀取用戶的認證信息 18813.4 總結 193* 14章 使用Spring Cloud OAuth2保護微服務繫統 19514.1 什麼是OAuth2 19514.2 如何使用Spring OAuth2 19614.2.1 OAuth2 Provider 19614.2.2 OAuth2 Client 20014.3 案例分析 20114.3.1 編寫Eureka Server 20214.3.2 編寫Uaa授 權服務 20214.3.3 編寫service-hi資源服務 20914.4 總結 215* 15章 使用Spring Security OAuth2和JWT保護微服務繫統 21715.1 JWT簡介 21715.1.1 什麼是JWT 21715.1.2 JWT的結構 21815.1.3 JWT的應用場景 21915.1.4 如何使用JWT 21915.2 案例分析 21915.2.1 案例架構設計 21915.2.2 編寫主Maven工程 22015.2.3 編寫Eureka Server 22115.2.4 編寫Uaa授 權服務 22215.2.5 編寫user-service資源服務 22715.3 總結 236* 16章 使用Spring Cloud構建微服務綜合案例 23716.1 案例介紹 23716.1.1 工程結構 23716.1.2 使用的技術棧 23816.1.3 工程架構 23816.1.4 功能展示 24016.2 案例詳解 24416.2.1 準備工作 24416.2.2 構建主Maven工程 24416.2.3 構建eureka-server工程 24516.2.4 構建config-server工程 24616.2.5 構建zipkin-service工程 24716.2.6 構建monitoring-service工程 24816.2.7 構建uaa-service工程 25016.2.8 構建gateway-service工程 25116.2.9 構建admin-service工程 25316.2.10 構建user-service工程 25316.2.11 構建blog-service工程 25616.2.12 構建log-service工程 25616.3 啟動源碼工程 26016.4 項目演示 26116.5 總結 262
內容簡介
本書共分16章,全面涵蓋了Spring Cloud構建微服務相關的知識點。* 1、2章詳細介紹了微服務架構和Spring Cloud。第3、4章講解了用Spring Cloud構建微服務的準備工作。第5~12章以案例為切入點,講解了Spring Cloud構建微服務的基礎組件,包括Eureka、Ribbon、Feign、Hystrix、Zuul、Config、Sleuth、Admint等組件。* 13~15章講述了使用Spring Cloud OAuth2來保護微服務繫統的相關知識。* 16章用一個綜合案例,全面講解了如何使用Spring Cloud構建微服務,可以作為實際開發的樣例工程。本書既適合Spring Cloud初學者入門使用,又適合正在做微服務實踐的架構師或打算實施微服......