歡迎光臨
每天分享高質量文章

薦書|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

贊(0)

分享創造快樂