Spring Cloud 微服務架構進階

前面的話

我今年年初的時候,籌劃了一本技術書籍,即爲這篇文章的標題《Spring Cloud 微服務架構進階》。今天正式開始預售了,年初到如今正好十個月,實在不易。寫這篇文章胡亂談談技術以外的一些關於寫書的雜事吧。html

原因

寫這本書有一些機緣巧合,去年有幾個出版社的編輯經過我博客上的郵箱,發郵件和我聯繫。多是由於微服務這幾年確實很火吧,編輯們建議我寫一本關於微服務的書。當時一聽而過,並無在乎(編輯們也是廣撒網,不能當真認爲本身的水平達到了),更主要是感受本身的文筆很菜,技術就那樣,根本沒什麼興趣。不過堅持寫博客確實是一個好的習慣,特別是原創的內容更有價值。筆者的博客知名度很低,可是經過公衆號的方式傳播,也能收穫一些反饋,逐漸加強了個人信心(多是已經膨脹了吧)。一直到去年年末的時候,以爲本身能夠在技術方面更加深刻,因此選擇了微服務架構的流行組合框架Spring Cloud做爲本書的內容,打算試試寫本書。 git

封面

關於內容

接觸Spring Cloud仍是挺早的了,算是早期關注者吧,以後一直在項目中有實踐和應用。相比於剛出來以前,Spring Cloud已經完善了太多,經過整合現有的開源框架和Spring社區本身開發的一部分組件,使得Spring Cloud功能愈來愈強大。Spring Cloud使用和整合單個組件還比較簡單,可是在微服務的實踐中,要求咱們對這些基礎的組件有更深的瞭解才行。在平時的應用中,我會去了解和學習各個組件的實現原理,雖然沒有特別細緻,可是也對其中的主要部分比較熟悉。github

關於這方面的書籍,其實已經有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.1 微服務的出現
      • 1.1.1 單體應用
      • 1.1.2 SOA 架構 1.1.3 微服務架構
    • 1.2 微服務架構的流派
      • 1.2.1 ZeroC IceGrid
      • 1.2.2 基於消息隊列
      • 1.2.3 Docker Swarm
      • 1.2.4 Spring Cloud
    • 1.3 雲原生與微服務
      • 1.3.1 雲原生
      • 1.3.2 The Twelve Factors
      • 1.3.3 容器化
      • 1.3.4 DevOps
      • 1.3.5 面向微服務
    • 1.4 本章小結
  • 第 2 章 Spring Cloud 介紹
    • 2.1 Spring Cloud 總覽
      • 2.1.1 版本說明
      • 2.1.2 Spring Cloud 組成
    • 2.2 Spring Cloud 特性
      • 2.2.1 Spring Cloud 上下文
      • 2.2.2 Spring Cloud Commons: 公共抽象
    • 2.3 本章小結
  • 第 3 章 Spring Cloud 的基礎:Spring Boot
    • 3.1 Spring Boot 簡介
      • 3.1.1 Spring Boot 2.0
      • 3.1.2 Spring Boot 與 Spring Cloud
    • 3.2 Spring Boot 核心特性
    • 3.3 構建一個微服務
      • 3.3.1 IDEA 生成
      • 3.3.2 initial 生成
    • 3.4 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.5 本章小結
  • 第 4 章 服務註冊與發現:Eureka
    • 4.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.2 服務發現原理
      • 4.2.1 核心架構圖
    • 4.3 Eureka Client 源碼解析
      • 4.3.1 讀取應用自身配置信息
      • 4.3.2 服務發現客戶端
      • 4.3.3 拉取註冊表信息
      • 4.3.4 服務註冊
      • 4.3.5 初始化定時任務
      • 4.3.6 服務下線
    • 4.4 Eureka Server 源碼解析
      • 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.5 進階應用
      • 4.5.1 Eureka Instance 和 Client 的元數據
      • 4.5.2 狀態頁和健康檢查頁端口設置
      • 4.5.3 Region 與 Zone
      • 4.5.4 高可用性服務註冊中心
    • 4.6 本章小結
  • 第 5 章 聲明式 Restful 網絡客戶端:Spring Cloud OpenFeign
    • 5.1 基礎應用
      • 5.1.1 微服務之間的交互
      • 5.1.2 OpenFeign 簡介
      • 5.1.3 代碼示例
    • 5.2 源碼分析
      • 5.2.1 核心組件與概念
      • 5.2.2 動態註冊 BeanDefinition
      • 5.2.3 實例初始化
      • 5.2.4 函數調用和網絡請求
    • 5.3 進階應用
      • 5.3.1 Decoder 與 Encoder 的自定製化
      • 5.3.2 請求/響應壓縮
    • 5.4 本章小結
  • 第 6 章 斷路器:Hystrix
    • 6.1 基礎應用
      • 6.1.1 RestTemplate 與 Hystrix
      • 6.1.2 Feign 與 Hystrix
    • 6.2 Hystrix 原理
      • 6.2.1 服務雪崩
      • 6.2.2 斷路器
      • 6.2.3 服務降級操做
      • 6.2.4 資源隔離
      • 6.2.5 Hystrix 實現思路
    • 6.3 源碼解析
      • 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.4 進階應用
      • 6.4.1 核心配置講解
      • 6.4.2 異步與異步回調執行命令
      • 6.4.3 繼承 HystrixCommand
      • 6.4.4 請求合併
      • 6.4.5 Hystrix 儀表盤
    • 6.5 本章小結
  • 第 7 章 客戶端負載均衡器:Spring Cloud Netflix Ribbon
    • 7.1 負載均衡
    • 7.2 基礎應用
    • 7.3 源碼分析
      • 7.3.1 配置和實例初始化
      • 7.3.2 與 OpenFeign 的集成
      • 7.3.3 負載均衡器 LoadBalancerClient
      • 7.3.4 ILoadBalancer
      • 7.3.5 負載均衡策略實現
    • 7.4 進階應用
      • 7.4.1 Ribbon API
      • 7.4.2 使用 Netty 發送網絡請求
      • 7.4.3 只讀數據庫的負載均衡實現
    • 7.5 本章小結
  • 第 8 章 API 網關:Spring Cloud Gateway
    • 8.1 Spring Cloud Gateway 介紹
    • 8.2 基礎應用
      • 8.2.1 用戶服務
      • 8.2.2 網關服務
      • 8.2.3 客戶端的訪問
    • 8.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.4 應用進階
      • 8.4.1 限流機制
      • 8.4.2 熔斷降級
      • 8.4.3 網關重試過濾器
    • 8.5 本章小結
  • 第 9 章 配置中心:Spring Cloud Config
    • 9.1 基礎應用
      • 9.1.1 配置客戶端
      • 9.1.2 配置倉庫
      • 9.1.3 服務端
      • 9.1.4 配置驗證
      • 9.1.5 配置動態更新
    • 9.2 源碼解析
      • 9.2.1 配置服務器
      • 9.2.2 配置客戶端
    • 9.3 應用進階
      • 9.3.1 爲 config Server 配置多個 repo
      • 9.3.2 客戶端覆寫遠端的配置屬性
      • 9.3.3 屬性覆蓋
      • 9.3.4 安全保護
      • 9.3.5 加密解密
      • 9.3.6 快速響應失敗與重試機制
    • 9.4 本章小結
  • 第 10 章 消息驅動:Spring Cloud Stream
    • 10.1 消息隊列
      • 10.1.1 消息隊列經常使用組件
    • 10.2 基礎應用
      • 10.2.1 聲明和綁定 Channels
      • 10.2.2 自定義通道
      • 10.2.3 接收消息
      • 10.2.4 配置
    • 10.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.4 進階應用
      • 10.4.1 Binder For RocketMQ
      • 10.4.2 多實例
      • 10.4.3 分區
    • 10.5 本章小結
  • 第 11 章 消息總線:Spring Cloud Bus
    • 11.1 基礎應用
      • 11.1.1 配置服務器 Config-Server
      • 11.1.2 配置客戶端 Config-Client
      • 11.1.3 結果驗證
    • 11.2 源碼解析
      • 11.2.1 事件的定義與事件監聽器
      • 11.2.2 消息的訂閱與發佈
      • 11.2.3 控制端點
    • 11.3 應用進階
      • 11.3.1 在自定義的包中註冊事件
      • 11.3.2 自定義監聽器
      • 11.3.3 事件的發起者
    • 11.4 本章小結
  • 第 12 章 認證與受權:Spring Cloud Security
    • 12.1 基礎應用
      • 12.1.1 OAuth2 簡介 12.1.2 JWT
      • 12.1.3 搭建受權服務器
      • 12.1.4 配置資源服務器
      • 12.1.5 訪問受限資源
    • 12.2 總體架構
      • 12.2.1 Spring Security 架構概述
      • 12.2.2 Spring Security OAuth2 架構概述
      • 12.2.3 Spring Cloud Security 中的 Security 和 OAuth2
    • 12.3 源碼解析
      • 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.4 進階應用
      • 12.4.1 Spring Sercurity 自定製化
      • 12.4.2 OAuth2 自定製化
      • 12.4.3 SSO 單點登陸
    • 12.5 本章小結
  • 第 13 章 服務鏈路追蹤:Spring Cloud Sleuth
    • 13.1 鏈路監控組件介紹
      • 13.1.1 經常使用的監控組件
      • 13.1.2 基礎概念
    • 13.2 基礎應用
      • 13.2.1 特性
      • 13.2.2 項目準備
      • 13.2.3 Spring Cloud Sleuth 獨立實現
      • 13.2.4 集成 Zipkin
    • 13.3 本章小結

最後

最後想說的是,寫書不易,請你們支持正版。做者水平有限,若有問題和疑惑歡迎指正。架構

本書配套的源碼地址github.com/Advanced-Sp…負載均衡

《Spring Cloud 微服務架構進階》預售地址:item.jd.com/12453340.ht…

訂閱最新文章,歡迎關注個人公衆號

微信公衆號
相關文章
相關標籤/搜索