1. 程式人生 > >Spring Cloud與Docker微服務架構實戰 PDF

Spring Cloud與Docker微服務架構實戰 PDF

電子版百度雲下載

連結: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ

提取碼: 關注公眾號【GitHubCN】回覆2019獲取

本書的程式碼

共計70+個DEMO
覆蓋Eureka、Ribbon、Feign、Hystrix、Zuul、Spring Cloud Config、Spring Cloud Bus、Spring Cloud Sleuth、Docker、Docker Compose等。
1-11章程式碼地址:

https://github.com/itmuch/spring-cloud-docker-microservice-book-code

http://git.oschina.net/itmuch/spring-cloud-docker-microservice-book-code
12-14章配套程式碼地址:

https://github.com/itmuch/spring-cloud-docker-microservice-book-code-docker
http://git.oschina.net/itmuch/spring-cloud-docker-microservice-book-code-docker

目錄

1 微服務架構概述 1

1.1 單體應用架構存在的問題1

1.2 如何解決單體應用架構存在的問題3

1.3 什麼是微服務3

1.4 微服務架構的優點與挑戰5

1.4.1 微服務架構的優點5

1.4.2 微服務架構面臨的挑戰5

1.5 微服務設計原則6

1.6 如何實現微服務架構7

1.6.1 技術選型7

1.6.2 架構圖及常用元件8

2 微服務開發框架——Spring Cloud 10

2.1 Spring Cloud 簡介10

2.2 Spring Cloud 特點10

2.3 Spring Cloud 版本11

2.3.1 版本簡介11

2.3.2 子專案一覽12

2.3.3 Spring Cloud/Spring Boot 版本相容性13

3 開始使用Spring Cloud 實戰微服務 14

3.1 Spring Cloud 實戰前提14

3.1.1 技術儲備14

3.1.2 工具及軟體版本15

3.2 服務提供者與服務消費者16

3.3 編寫服務提供者16

3.3.1 手動編寫專案17

3.3.2 使用Spring Initializr 快速建立Spring Boot 專案21

3.4 編寫服務消費者23

3.5 為專案整合Spring Boot Actuator 25

3.6 硬編碼有哪些問題27

4 微服務註冊與發現. 29

4.1 服務發現簡介29

4.2 Eureka 簡介31

4.3 Eureka 原理31

4.4 編寫Eureka Server 33

4.5 將微服務註冊到Eureka Server 上35

4.6 Eureka Server 的高可用36

4.6.1 將應用註冊到Eureka Server 叢集上38

4.7 為Eureka Server 新增使用者認證39

4.7.1 將微服務註冊到需認證的Eureka Server 40

4.8 理解Eureka 的元資料41

4.8.1 改造使用者微服務41

4.8.2 改造電影微服務41

4.9 Eureka Server 的REST 端點43

4.9.1 示例45

4.9.2 登出微服務例項49

4.10 Eureka 的自我保護模式51

4.11 多網絡卡環境下的IP 選擇52

4.11.1 忽略指定名稱的網絡卡52

4.11.2 使用正則表示式,指定使用的網路地址52

4.11.3 只使用站點本地地址53

4.11.4 手動指定IP 地址53

4.12 Eureka 的健康檢查53

5 使用Ribbon 實現客戶端側負載均衡 56

5.1 Ribbon 簡介56

5.2 為服務消費者整合Ribbon 57

5.3 使用Java 程式碼自定義Ribbon 配置60

5.4 使用屬性自定義Ribbon 配置63

5.5 脫離Eureka 使用Ribbon 64

6 使用Feign 實現宣告式REST 呼叫. 66

6.1 Feign 簡介67

6.2 為服務消費者整合Feign 67

6.3 自定義Feign 配置69

6.4 手動建立Feign 72

6.4.1 修改使用者微服務72

6.4.2 修改電影微服務76

6.5 Feign 對繼承的支援78

6.6 Feign 對壓縮的支援79

6.7 Feign 的日誌80

6.8 使用Feign 構造多引數請求82

6.8.1 GET 請求多引數的URL 82

6.8.2 POST 請求包含多個引數83

7 使用Hystrix 實現微服務的容錯處理. 85

7.1 實現容錯的手段85

7.1.1 雪崩效應85

7.1.2 如何容錯86

7.2 使用Hystrix 實現容錯88

7.2.1 Hystrix 簡介88

7.2.2 通用方式整合Hystrix 89

7.2.3 Hystrix 斷路器的狀態監控與深入理解91

7.2.4 Hystrix 執行緒隔離策略與傳播上下文93

7.2.5 Feign 使用Hystrix 96

7.3 Hystrix 的監控101

7.3.1 Feign 專案的Hystrix 監控102

7.4 使用Hystrix Dashboard 視覺化監控資料103

7.5 使用Turbine 聚合監控資料105

7.5.1 Turbine 簡介105

7.5.2 使用Turbine 監控多個微服務105

7.5.3 使用訊息中介軟體收集資料108

8 使用Zuul 構建微服務閘道器.. 113

8.1 為什麼要使用微服務閘道器113

8.2 Zuul 簡介115

8.3 編寫Zuul 微服務閘道器115

8.4 Zuul 的路由端點118

8.5 Zuul 的路由配置詳解119

8.6 Zuul 的安全與Header 122

8.6.1 敏感Header 的設定122

8.6.2 忽略Header 123

8.7 使用Zuul 上傳檔案124

8.7.1 編寫檔案上傳微服務124

8.8 Zuul 的過濾器127

8.8.1 過濾器型別與請求生命週期127

8.8.2 編寫Zuul 過濾器128

8.8.3 禁用Zuul 過濾器130

8.9 Zuul 的容錯與回退130

8.9.1 為Zuul 添加回退131

8.10 Zuul 的高可用133

8.10.1 Zuul 客戶端也註冊到了Eureka Server 上133

8.10.2 Zuul 客戶端未註冊到Eureka Server 上133

8.11 使用Sidecar 整合非JVM 微服務134

8.11.1 編寫Node.js 微服務135

8.11.2 編寫Sidecar 136

8.11.3 Sidecar 的端點138

8.11.4 Sidecar 與Node.js 微服務分離部署139

8.11.5 Sidecar 原理分析139

9 使用Spring Cloud Config 統一管理微服務配置 142

9.1 為什麼要統一管理微服務配置142

9.2 Spring Cloud Config 簡介143

9.3 編寫Config Server 144

9.3.1 Config Server 的端點145

9.4 編寫Config Client 147

9.5 Config Server 的Git 倉庫配置詳解149

9.6 Config Server 的健康狀況指示器152

9.7 配置內容的加解密153

9.7.1 安裝JCE 153

9.7.2 Config Server 的加解密端點153

9.7.3 對稱加密153

9.7.4 儲存加密的內容154

9.7.5 非對稱加密155

9.8 使用/refresh 端點手動重新整理配置155

9.9 使用Spring Cloud Bus 自動重新整理配置157

9.9.1 Spring Cloud Bus 簡介157

9.9.2 實現自動重新整理158

9.9.3 區域性重新整理159

9.9.4 架構改進159

9.9.5 跟蹤匯流排事件160

9.10 Spring Cloud Config 與Eureka 配合使用161

9.11 Spring Cloud Config 的使用者認證162

9.11.1 Config Client 連線需使用者認證的Config Server 163

9.12 Config Server 的高可用164

9.12.1 Git 倉庫的高可用164

9.12.2 RabbitMQ 的高可用164

9.12.3 Config Server 自身的高可用165

10 使用Spring Cloud Sleuth 實現微服務跟蹤. 167

10.1 為什麼要實現微服務跟蹤167

10.2 Spring Cloud Sleuth 簡介168

10.3 整合Spring Cloud Sleuth 170

10.4 Spring Cloud Sleuth 與ELK 配合使用172

10.5 Spring Cloud Sleuth 與Zipkin 配合使用176

10.5.1 Zipkin 簡介176

10.5.2 編寫Zipkin Server 176

10.5.3 微服務整合Zipkin 178

10.5.4 使用訊息中介軟體收集資料181

10.5.5 儲存跟蹤資料183

11 Spring Cloud 常見問題與總結.. 186

11.1 Eureka 常見問題186

11.1.1 Eureka 註冊服務慢186

11.1.2 已停止的微服務節點登出慢或不登出187

11.1.3 如何自定義微服務的Instance ID 188

11.1.4 Eureka 的UNKNOWN 問題總結與解決189

11.2 Hystrix/Feign 整合Hystrix 後首次請求失敗190

11.2.1 原因分析191

11.2.2 解決方案191

11.3 Turbine 聚合的資料不完整191

11.3.1 解決方案192

11.4 Spring Cloud 各元件配置屬性193

11.4.1 Spring Cloud 的配置193

11.4.2 原生配置193

11.5 Spring Cloud 定位問題思路總結194

12 Docker 入門. 197

12.1 Docker 簡介197

12.2 Docker 的架構197

12.3 安裝Docker 199

12.3.1 系統要求199

12.3.2 移除非官方軟體包199

12.3.3 設定Yum 源199

12.3.4 安裝Dokcer 200

12.3.5 解除安裝Docker 201

12.4 配置映象加速器201

12.5 Docker 常用命令202

12.5.1 Docker 映象常用命令202

12.5.2 Docker 容器常用命令204

13 將微服務執行在Docker 上 209

13.1 使用Dockerfile 構建Docker 映象209

13.1.1 Dockerfile 常用指令210

13.1.2 使用Dockerfile 構建映象215

13.2 使用Docker Registry 管理Docker 映象217

13.2.1 使用Docker Hub 管理映象217

13.2.2 使用私有倉庫管理映象219

13.3 使用Maven 外掛構建Docker 映象220

13.3.1 快速入門221

13.3.2 外掛讀取Dockerfile 進行構建222

13.3.3 將外掛繫結在某個phase 執行223

13.3.4 推送映象224

13.4 常見問題與總結226

14 使用Docker Compose 編排微服務. 227

14.1 Docker Compose 簡介227 .

14.2 安裝Docker Compose 227

14.2.1 安裝Compose 228

14.2.2 安裝Compose 命令補全工具228

14.3 Docker Compose 快速入門229

14.3.1 基本步驟229

14.3.2 入門示例229

14.3.3 工程、服務、容器230

14.4 docker-compose.yml 常用命令230

14.4.1 build 230

14.4.2 command 231

14.4.3 dns 231

14.4.4 dns_search 231

14.4.5 environment 231

14.4.6 env_file 232

14.4.7 expose 232

14.4.8 external_links 232

14.4.9 image 232

14.4.10 links 232

14.4.11 networks 233

14.4.12 network_mode 233

14.4.13 ports 233

14.4.14 volumes 233

14.4.15 volumes_from 234

14.5 docker-compose 常用命令234

14.5.1 build 234

14.5.2 help 235

14.5.3 kill 235

14.5.4 logs 235

14.5.5 port 235

14.5.6 ps 235

14.5.7 pull 235

14.5.8 rm 236

14.5.9 run 236

14.5.10 scale 236

14.5.11 start 236

14.5.12 stop 236

14.5.13 up 236

14.6 Docker Compose 網路設定237

14.6.1 基本概念237

14.6.2 更新容器237

14.6.3 links 238

14.6.4 指定自定義網路238

14.6.5 配置預設網路239

14.6.6 使用已存在的網路239

14.7 綜合實戰:使用Docker Comose 編排Spring Cloud 微服務240

14.7.1 編排Spring Cloud 微服務240

14.7.2 編排高可用的Eureka Server 243

14.7.3 編排高可用Spring Cloud 微服務叢集及動態伸縮245

14.8 常見問題與總結247