徐媽說:
我與榮鑫相識於與一次 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