薦書|Spring Cloud 微服務架構進階
徐媽
說:我與榮鑫相識於與一次 SpringCloud 的技術交流,沒想到在一年之後的現在,他的這本《Spring Cloud 微服務架構進階》就已經問世了。關於 SpringCloud 這個技術棧,我曾與 DD(翟永超)交流過,並持相同的觀點:對於經驗豐富的讀者,可以直接上手官方文檔,因為 SpringCloud 的迭代速度實在太快了,DD 的書是基於 D 版本編寫,榮鑫的書是基於 F 版本編寫,這兩本書的問世也不過間隔一年,而特性變更卻不少。對於有如下需求的讀者,我向你推薦此書
想要了解 SpringCloud 新版本的特性
對 SpringCloud 的架構有一個整體的認識,看看別人從文檔中整理出了哪些關鍵點
SpringCloud 的源碼解析
前面的話
我今年年初的時候,籌划了一本技術書籍,即為這篇文章的標題《Spring Cloud 微服務架構進階》。今天正式開始預售了,年初到現在正好十個月,實在不易。寫這篇文章胡亂談談技術之外的一些關於寫書的瑣事吧。
緣由
寫這本書有一些機緣巧合,去年有幾個出版社的編輯通過我博客上的郵箱,發郵件和我聯繫。可能是因為微服務這幾年確實很火吧,編輯們建議我寫一本關於微服務的書。當時一聽而過,並沒有在意(編輯們也是廣撒網,不能當真認為自己的水平達到了),更主要是感覺自己的文筆很菜,技術就那樣,根本沒什麼興趣。不過堅持寫博客確實是一個好的習慣,特別是原創的內容更有價值。筆者的博客知名度很低,但是通過公眾號的方式傳播,也能收穫一些反饋,逐漸增強了我的信心(可能是已經膨脹了吧)。一直到去年年底的時候,覺得自己可以在技術方面更加深入,所以選擇了微服務架構的流行組合框架Spring Cloud作為本書的內容,打算試試寫本書。
關於內容
接觸Spring Cloud還是挺早的了,算是早期關注者吧,之後一直在項目中有實踐和應用。相比於剛出來之前,Spring Cloud已經完善了太多,通過整合現有的開源框架和Spring社區自己開發的一部分組件,使得Spring Cloud功能越來越強大。Spring Cloud使用和整合單個組件還比較簡單,但是在微服務的實踐中,要求我們對這些基礎的組件有更深的了解才行。在平時的應用中,我會去了解和學習各個組件的實現原理,雖然沒有特別細緻,但是也對其中的主要部分比較熟悉。
關於這方面的書籍,其實已經有DIDI(翟永超)的Spring Cloud微服務實戰
和周立Spring Cloud與Docker微服務架構實戰
等書籍,寫得時間比較早,內容質量也挺高了。筆者實在不敢談超越,然而技術的發展和迭代很快,Spring Cloud版本迭到了Finchley
,基於的Spring Boot版本已經是2.x了(2.x已經基於Spring 5),相對來說,好多組件的實現和用法方面變化還是很大。這本《Spring Cloud 微服務架構進階》基於最新的Finchley
,詳細介紹了微服務架構中涉及到的主要Spring Cloud組件,配合基礎應用的案例介紹實現原理。本書適合所有的Java開發者,特別希望能為從事微服務開發和架構的讀者提供一些幫助。
合作
本書是由三位作者共同完成的,另外兩位:@Randy
和@CANGWU
都是非常優秀的大佬,具體的介紹可以通過購買本書(硬廣,hh)。
寫書是一件比較耗費時間和精力的事情,決定做這件事的時候,深知以一人之力很難寫完和寫好,因素還挺多(能力、時間等)。團隊合作的力量是強大的,於是約上另外了兩位厲害的同學,我們開始了分工合作完成書稿,相互之間取長補短。技術書的書寫整體上不是很難,每個功能組件按照基礎應用案例引出實現原理的講解。在這個過程中,有些細節還是值得深入了解的,加深了自己的一些理解,也學習到了不少。
其實書稿的初稿在五月底就完成了,後來作者之間互相審閱,並邀請了幾位業界大佬幫忙審閱,編輯也提出了很多修改的建議,來來回回修改花了一個多月。其間也在等待Finchley
的release版本發布,剛開始寫的時候還是里程碑(Milestone不太穩定)版本,這當中比較痛苦的就是Milestone到release版本會有不少變化,如Spring Cloud Gateway中的過濾器、路由斷言在不斷增加和部分重構。所以當正式版出來之後,三位作者還花了不少時間去對比之前的實現差異,及時修正了一些問題。到了七月底才正式定稿,吳怡編輯在定稿之後也是加緊進行了修訂排版等後續工作,深表感謝。
目錄
全書共十三章,紙質版428頁。介紹一下本書的目錄:
第 1 章 微服務架構介紹
1.3.1 雲原生
1.3.2 The Twelve Factors
1.3.3 容器化
1.3.4 DevOps
1.3.5 面向微服務
1.2.1 ZeroC IceGrid
1.2.2 基於消息隊列
1.2.3 Docker Swarm
1.2.4 Spring Cloud
1.1.1 單體應用
1.1.2 SOA 架構1.1.3 微服務架構
1.1 微服務的出現
1.2 微服務架構的流派
1.3 雲原生與微服務
1.4 本章小結
第 2 章 Spring Cloud 介紹
2.2.1 Spring Cloud 上下文
2.2.2 Spring Cloud Commons: 公共抽象
2.1.1 版本說明
2.1.2 Spring Cloud 組成
2.1 Spring Cloud 總覽
2.2 Spring Cloud 特性
2.3 本章小結
第 3 章 Spring Cloud 的基礎:Spring Boot
3.4.1 默認配置文件
3.4.2 外部化配置
3.4.3 YAML
3.4.4 自動載入外部屬性到 Bean
3.4.5 多 profile
3.4.6 Starters
3.4.7 自製一個 Starter
3.4.8 Actuator
3.3.1 IDEA 生成
3.3.2 initial 生成
3.1.1 Spring Boot 2.0
3.1.2 Spring Boot 與 Spring Cloud
3.1 Spring Boot 簡介
3.2 Spring Boot 核心特性
3.3 構建一個微服務
3.4 Spring Boot 配置文件
3.5 本章小結
第 4 章 服務註冊與發現:Eureka
4.5.1 Eureka Instance 和 Client 的元數據
4.5.2 狀態頁和健康檢查頁埠設置
4.5.3 Region 與 Zone
4.5.4 高可用性服務註冊中心
4.4.1 服務實例註冊表
4.4.2 服務註冊
4.4.3 接受服務心跳
4.4.4 服務剔除
4.4.5 服務下線
4.4.6 集群同步
4.4.7 註冊表拉取
4.5.8 自我保護
4.3.1 讀取應用自身配置信息
4.3.2 服務發現客戶端
4.3.3 拉取註冊表信息
4.3.4 服務註冊
4.3.5 初始化定時任務
4.3.6 服務下線
4.2.1 核心架構圖
4.1.1 Eureka 簡介
4.1.2 搭建 Eureka 服務註冊中心
4.1.3 搭建 Eureka 服務提供者
4.1.4 搭建 Eureka 服務調用者
4.1.5 Eureka 服務註冊和發現
4.1.6 Consul 的簡單應用
4.1 基礎應用
4.2 服務發現原理
4.3 Eureka Client 源碼解析
4.4 Eureka Server 源碼解析
4.5 進階應用
4.6 本章小結
第 5 章 聲明式 Restful 網路客戶端:Spring Cloud OpenFeign
5.3.1 Decoder 與 Encoder 的自定製化
5.3.2 請求/響應壓縮
5.2.1 核心組件與概念
5.2.2 動態註冊 BeanDefinition
5.2.3 實例初始化
5.2.4 函數調用和網路請求
5.1.1 微服務之間的交互
5.1.2 OpenFeign 簡介
5.1.3 代碼示例
5.1 基礎應用
5.2 源碼分析
5.3 進階應用
5.4 本章小結
第 6 章 斷路器:Hystrix
6.4.1 核心配置講解
6.4.2 非同步與非同步回調執行命令
6.4.3 繼承 HystrixCommand
6.4.4 請求合併
6.4.5 Hystrix 儀錶盤
6.3.1 封裝 HystrixCommand
6.3.2 HystrixCommand 類結構
6.3.3 非同步回調執行命令
6.3.4 非同步執行命令和同步執行命令
6.3.5 斷路器邏輯
6.3.6 資源隔離
6.3.7 請求超時監控
6.3.8 失敗回滾邏輯
6.2.1 服務雪崩
6.2.2 斷路器
6.2.3 服務降級操作
6.2.4 資源隔離
6.2.5 Hystrix 實現思路
6.1.1 RestTemplate 與 Hystrix
6.1.2 Feign 與 Hystrix
6.1 基礎應用
6.2 Hystrix 原理
6.3 源碼解析
6.4 進階應用
6.5 本章小結
第 7 章 客戶端負載均衡器:Spring Cloud Netflix Ribbon
7.4.1 Ribbon API
7.4.2 使用 Netty 發送網路請求
7.4.3 只讀資料庫的負載均衡實現
7.3.1 配置和實例初始化
7.3.2 與 OpenFeign 的集成
7.3.3 負載均衡器 LoadBalancerClient
7.3.4 ILoadBalancer
7.3.5 負載均衡策略實現
7.1 負載均衡
7.2 基礎應用
7.3 源碼分析
7.4 進階應用
7.5 本章小結
第 8 章 API 網關:Spring Cloud Gateway
8.4.1 限流機制
8.4.2 熔斷降級
8.4.3 網關重試過濾器
8.3.1 初始化配置
8.3.2 網關處理器
8.3.3 路由定義定位器
8.3.4 路由定位器
8.3.5 路由斷言
8.3.6 網關過濾器
8.3.7 全局過濾器
8.3.8 API 端點
8.2.1 用戶服務
8.2.2 網關服務
8.2.3 客戶端的訪問
8.1 Spring Cloud Gateway 介紹
8.2 基礎應用
8.3 源碼解析
8.4 應用進階
8.5 本章小結
第 9 章 配置中心:Spring Cloud Config
9.3.1 為 config Server 配置多個 repo
9.3.2 客戶端覆寫遠端的配置屬性
9.3.3 屬性覆蓋
9.3.4 安全保護
9.3.5 加密解密
9.3.6 快速響應失敗與重試機制
9.2.1 配置伺服器
9.2.2 配置客戶端
9.1.1 配置客戶端
9.1.2 配置倉庫
9.1.3 服務端
9.1.4 配置驗證
9.1.5 配置動態更新
9.1 基礎應用
9.2 源碼解析
9.3 應用進階
9.4 本章小結
第 10 章 消息驅動:Spring Cloud Stream
10.4.1 Binder For RocketMQ
10.4.2 多實例
10.4.3 分區
10.3.1 動態註冊 BeanDefinition
10.3.2 綁定服務
10.3.3 獲取綁定器
10.3.4 綁定 Producer
10.3.5 消息發送的流程
10.3.6 StreamListener 註解的處理
10.3.7 綁定 Consumer
10.3.8 消息的接收
10.2.1 聲明和綁定 Channels
10.2.2 自定義通道
10.2.3 接收消息
10.2.4 配置
10.1.1 消息隊列常用組件
10.1 消息隊列
10.2 基礎應用
10.3 源碼分析
10.4 進階應用
10.5 本章小結
第 11 章 消息匯流排:Spring Cloud Bus
11.3.1 在自定義的包中註冊事件
11.3.2 自定義監聽器
11.3.3 事件的發起者
11.2.1 事件的定義與事件監聽器
11.2.2 消息的訂閱與發布
11.2.3 控制端點
11.1.1 配置伺服器 Config-Server
11.1.2 配置客戶端 Config-Client
11.1.3 結果驗證
11.1 基礎應用
11.2 源碼解析
11.3 應用進階
11.4 本章小結
第 12 章 認證與授權:Spring Cloud Security
12.4.1 Spring Sercurity 自定製化
12.4.2 OAuth2 自定製化
12.4.3 SSO 單點登錄
12.3.1 SecurityContext 安全上下文
12.3.2 Authentication 認證
12.3.3 Authorization 授權
12.3.4 Spring Security 中的過濾器與攔截器
12.3.5 授權伺服器
12.3.6 資源伺服器
12.3.7 Token 中繼機制
12.2.1 Spring Security 架構概述
12.2.2 Spring Security OAuth2 架構概述
12.2.3 Spring Cloud Security 中的 Security 和 OAuth2
12.1.1 OAuth2 簡介 12.1.2 JWT
12.1.3 搭建授權伺服器
12.1.4 配置資源伺服器
12.1.5 訪問受限資源
12.1 基礎應用
12.2 整體架構
12.3 源碼解析
12.4 進階應用
12.5 本章小結
第 13 章 服務鏈路追蹤:Spring Cloud Sleuth
13.2.1 特性
13.2.2 項目準備
13.2.3 Spring Cloud Sleuth 獨立實現
13.2.4 集成 Zipkin
13.1.1 常用的監控組件
13.1.2 基礎概念
13.1 鏈路監控組件介紹
13.2 基礎應用
13.3 本章小結
最後
最後想說的是,寫書不易,請大家支持正版。作者水平有限,如有問題和疑惑歡迎指正。
本書配套的源碼地址:https://github.com/Advanced-SpringCloud/cloud-book
點擊閱讀原文或者通過《Spring Cloud 微服務架構進階》購買鏈接:https://item.jd.com/12453340.html
推薦閱讀: