《Spring Cloud與Docker微服務架構實戰》配套代碼

不才寫了本使用Spring Cloud玩轉微服務架構的書,書名是《Spring Cloud與Docker微服務架構實戰》 - 周立,已於2017-01-12交稿。很多朋友想先看看源碼,現將代碼放出。html

本次放出的代碼:git

  • 共計70+個DEMO
  • 覆蓋Eureka、Ribbon、Feign、Hystrix、Zuul、Spring Cloud Config、Spring Cloud Bus、Spring Cloud Sleuth、Docker、Docker Compose等。

1-11章代碼地址:github

12-14章配套代碼地址:正則表達式

書目錄

詳見: http://www.itmuch.com/advertisment/my-spring-book/spring

版權說明

本文采用 CC BY 3.0 CN協議 進行許可。 可自由轉載、引用,但需署名做者且註明文章出處。如轉載至微信公衆號,請在文末添加做者公衆號二維碼。docker

關注我

博客:http://www.itmuch.com編程

 

相關技能樹:緩存

第1章 基礎知識 1安全

什麼是微服務架構 1微信

-- 與單體系統的區別 1

-- 如何實施微服務 2

爲何選擇Spring Cloud 6

Spring Cloud簡介 7

版本說明 8

第2章 微服務構建:Spring Boot 11

框架簡介 12

快速入門 13

-- 項目構建與解析 13

-- 實現RESTful API 17

配置詳解 20

-- 配置文件 20

-- 自定義參數 22

-- 參數引用 22

-- 使用隨機數 23

-- 命令行參數 23

-- 多環境配置 24

-- 加載順序 25

監控與管理 26

-- 初識actuator 27

-- 原生端點 28

小結 38

第3章 服務治理:Spring Cloud Eureka 39

服務治理 39

-- Netflix Eureka 40

--搭建服務註冊中心 41

--註冊服務提供者 43

--高可用註冊中心 46

--服務發現與消費 48

Eureka詳解 51

--基礎架構 52

--服務治理機制 52

--源碼分析 56

配置詳解 65

--服務註冊類配置 65

--服務實例類配置 67

跨平臺支持 71

第4章 客戶端負載均衡:Spring Cloud Ribbon 73

客戶端負載均衡 73

RestTemplate詳解 75

-- GET請求 75

-- POST請求 77

-- PUT請求 79

-- DELETE請求 79

源碼分析 80

-- 負載均衡器 91

-- 負載均衡策略 109

配置詳解 123

--自動化配置 124

-- Camden版本對RibbonClient配置的優化 125

-- 參數配置 127

-- 與Eureka結合 127

重試機制 128

第5章 服務容錯保護:Spring Cloud Hystrix 130

快速入門 131

原理分析 135

-- 工做流程 135

-- 斷路器原理 144

-- 依賴隔離 148

使用詳解 151

-- 建立請求命令 151

-- 定義服務降級 154

-- 異常處理 157

-- 命令名稱、分組以及線程池劃分 158

-- 請求緩存 159

-- 請求合併 166

屬性詳解 172

-- Command屬性 174

-- collapser屬性 184

-- threadPool屬性 185

Hystrix儀表盤 187

Turbine集羣監控 192

-- 構建監控聚合服務 192

-- 與消息代理結合 196

第6章 聲明式服務調用:Spring Cloud Feign 199

快速入門 200

參數綁定 202

繼承特性 205

Ribbon配置 209

全局配置 209

指定服務配置 209

重試機制 210

Hystrix配置 211

全局配置 211

禁用Hystrix 211

指定命令配置 212

服務降級配置 212

其餘配置 214

第7章 API網關服務:Spring Cloud Zuul 217

快速入門 219

-- 構建網關 220

-- 請求路由 221

-- 請求過濾 223

路由詳解 226

-- 傳統路由配置 226

-- 服務路由配置 228

-- 服務路由的默認規則 229

-- 自定義路由映射規則 229

-- 路徑匹配 230

-- 路由前綴 233

-- 本地跳轉 234

-- Cookie與頭信息 235

-- Hystrix和Ribbon支持 236

過濾器詳解 238

-- 過濾器 238

-- 請求生命週期 239

-- 核心過濾器 240

-- 異常處理 244

-- 禁用過濾器 256

動態加載 257

-- 動態路由 257

-- 動態過濾器 261

第8章 分佈式配置中心:Spring Cloud Config 267

快速入門 267

-- 構建配置中心 268

-- 配置規則詳解 269

-- 客戶端配置映射 272

服務端詳解 274

-- 基礎架構 274

-- Git配置倉庫 276

-- SVN配置倉庫 279

-- 本地倉庫 279

-- 本地文件系統 279

-- 健康監測 280

-- 屬性覆蓋 281

-- 安全保護 281

-- 加密解密 282

-- 高可用配置 286

客戶端詳解 286

-- URI指定配置中心 287

-- 服務化配置中心 287

-- 失敗快速響應與重試 290

-- 獲取遠程配置 292

-- 動態刷新配置 293

第9章 消息總線:Spring Cloud Bus 295

消息代理 295

RabbitMQ實現消息總線 296

-- 基本概念 297

-- 安裝與使用 298

-- 快速入門 302

-- 整合Spring Cloud Bus 306

-- 原理分析 307

-- 指定刷新範圍 308

-- 架構優化 309

-- RabbitMQ配置 310

Kafka實現消息總線 312

-- Kafka簡介 312

-- 快速入門 313

--整合Spring Cloud Bus 315

-- Kafka配置 318

深刻理解 318

-- 源碼分析 320

-- 其餘消息代理的支持 342

第10章 消息驅動的微服務:Spring Cloud Stream 344

快速入門 344

核心概念 349

-- 綁定器 350

-- 發佈-訂閱模式 351

-- 消費組 353

-- 消息分區 354

使用詳解 355

-- 開啓綁定功能 355

-- 綁定消息通道 356

-- 消息生產與消費 360

-- 響應式編程 366

-- 消費組與消息分區 368

-- 消息類型 370

綁定器詳解 373

-- 綁定器SPI 373

-- 自動化配置 374

-- 多綁定器配置 374

-- RabbitMQ與Kafka綁定器 376

配置詳解 376

-- 基礎配置 377

-- 綁定通道配置 377

-- 綁定器配置 379

第11章 分佈式服務跟蹤:Spring Cloud Sleuth 386

快速入門 386

-- 準備工做 386

-- 實現跟蹤 389

跟蹤原理 390

抽樣收集 392

與Logstash整合 394

與Zipkin整合 397

-- HTTP收集 398

-- 消息中間件收集 402

-- 收集原理 404

-- 數據存儲 414

-- API接口 417

附錄A Starter POMs 419

後記 421

 

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

https://item.jd.com/12168358.html

相關文章
相關標籤/搜索