薦書|Spring Cloud 微服務架構進階

徐媽

說:

 我與榮鑫相識於與一次 SpringCloud 的技術交流,沒想到在一年之後的現在,他的這本《Spring Cloud 微服務架構進階》就已經問世了。關於 SpringCloud 這個技術棧,我曾與 DD(翟永超)交流過,並持相同的觀點:對於經驗豐富的讀者,可以直接上手官方文檔,因為 SpringCloud 的迭代速度實在太快了,DD 的書是基於 D 版本編寫,榮鑫的書是基於 F 版本編寫,這兩本書的問世也不過間隔一年,而特性變更卻不少。對於有如下需求的讀者,我向你推薦此書

  1. 想要了解 SpringCloud 新版本的特性

  2. 對 SpringCloud 的架構有一個整體的認識,看看別人從文檔中整理出了哪些關鍵點

  3. 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


推薦閱讀:

TAG:架構 | Spring | 薦書 | 服務 | 微服務架構 |