本書從時下流行的微服務架構概念出發,結合Spring Cloud解決方案,深入淺出剖析Spring Cloud在建置微服務架構中所需之各個基礎設施和技術要點,包含服務治理、容錯保護、API閘道、設定管理、訊息匯流排等。作者不僅對如何使用各個元件進行詳細介紹,還從原理上下功夫分析剖辨,幫助讀者更進一步了解Spring Cloud執行原理,有助讀者在實戰中有效的校正並更加擴充。
Spring Cloud的誕生對於沒有足夠資金投入或僅止於技術儲備實力的技術團隊是一種福音。利用Spring Cloud整合式解決方案,可以相當輕鬆地架設起微服務架構的軟體系統,大幅減少開發成本,從容應對業務的快速發展。
本書是第一本以Spring Cloud為技術藍本的微服務類別實戰書,不僅結合實際案例介紹Spring Cloud的使用,還從原始程式的角度深入剖析原理實現,強烈推薦每一位開發者和架構師參考閱讀或學習。
作者序
「微服務」架構在這幾年被廣泛傳播,變得非常火熱,以至於關於微服務架構相關的開放原始碼架構和工具都變得越來越活躍,例如:Netflix OSS、Dubbo、Apache Thrift 等。Spring Cloud也因為Spring 社區在企業應用領域的廣泛知名度和強大影響力,受到了廣大架構師與開發者的高度關注。
從接觸Spring Cloud開始,我除了被其龐大的專案結構震撼之外,還被其所要完成的遠大目標所吸引。該專案不同於其他Spring的優秀專案,它不再是一個基礎架構類別,而是一個更高層次的、架構角度的綜合性大型專案,其目標旨在建置一套標準化的微服務解決方案,讓架構師、開發者在使用微服務理念建置應用系統的時候,面對各個環節的問題都可以找到對應的元件來處理。參考網友戲稱的比喻:Spring Cloud可以說是Spring社區為微服務架構提供的「全家桶」套餐。由於「套餐」中的元件透過一個社區進行包裝與整合,使得「套餐」中各個元件之間的配合變得更加和諧,這可以有效減少我們在元件的選型和整合上花費的精力,所以它可以幫助我們快速建置起基礎的微服務架構系統。
雖然,Spring Cloud提供了很多我們期待的內容,但是因其涵蓋的內容非常廣泛,並且知識跨度較大,因此對很多初學者來說就像被專業名詞轟炸了一樣,入門的難度也就大幅加強了。同時,中文文件與資料的匱乏,以及官方文件的內容對於使用描述並不夠細緻等問題,也直接提升了使用者的學習門檻。這些看似都不是什麼大問題,但是卻在某種程度上阻礙了Spring Cloud在中文社區的推廣與發展,畢竟任何一項優秀技術都需要有大批的實作者才能獲得不斷最佳化、增強和發揚光大。作為一名Spring 社區的忠實粉絲和長期實作者,自然希望可以有更多的開發者可以參與到Spring Cloud的使用和貢獻中來,筆者也就萌生了想要撰寫一些入門文章的念頭,一方面對本身知識的掌握做一些整理,另一方面也希望這些內容可以成為後來者的學習資料。於是就開始堅持著寫了一些基礎的入門文章和範例,沒有想到會受到不少Spring 同好的持續關注,在建立了相關的QQ交流群之後,短短一個月的時間,交流群的人數就突破了1000人。由於在交流過程中發現很多問題重複出現,而這些問題並沒有獲得很好的整理,也沒有辦法被搜尋引擎收錄,於是就建立了Spring Cloud中文社區討論區,以幫助收集交流過程中提出和解決的各種問題,方便將來學習者可以搜索到這些前人踩過的坑。
之後,有幸在電子工業出版社電腦出版分社的張春雨先生的邀請下,開始撰寫這本關於Spring Cloud的入門書籍。在這本書的撰寫期間,由於工作、家庭等因素,使得與大家交流的時間變得越來越少,但好在有諸多網友和熱心同好幫忙一起維護著交流群與討論區,為大家提供了很多寶貴的學習資源,我也從中獲得了不少啟發和收穫。同時,感謝後來建議並帶頭整合目前在中文社區Spring Cloud學習資源的許進,他在此期間承擔很多溝通和網站維護工作,為Spring Cloud在中文社區付出不少精力,後續我也會重新加入進來,繼續撰寫線上免費入門教學,以幫助更多的同好快速入門Spring Cloud。也歡迎更多的同好參與進來,一起為社區貢獻力量,以幫助Spring Cloud在中文社區被更進一步地應用與成長。
「微服務」架構在這幾年被廣泛傳播,變得非常火熱,以至於關於微服務架構相關的開放原始碼架構和工具都變得越來越活躍,例如:Netflix OSS、Dubbo、Apache Thrift 等。Spring Cloud也因為Spring 社區在企業應用領域的廣泛知名度和強大影響力,受到了廣大架構師與開發者的高度關注。
從接觸Spring Cloud開始,我除了被其龐大的專案結構震撼之外,還被其所要完成的遠大目標所吸引。該專案不同於其他Spring的優秀專案,它不再是一個基礎架構類別,而是一個更高層次的、架構角度的綜合性大型專案,其目標旨在建置一套標準化的微服務解決方案,...
目錄
前言
CHAPTER 01 01 基礎知識
1.1 什麼是微服務架構
1.2 為什麼選擇Spring Cloud
1.3 Spring Cloud簡介
1.4 版本說明
CHAPTER 02 微服務建置:Spring Boot
2.1 架構簡介
2.2 快速入門
2.3 設定詳解
2.4 監控與管理
2.5 小結
CHAPTER 03 服務治理:Spring Cloud Eureka
3.1 服務治理
3.2 Eureka詳解
3.3 設定詳解
3.4 跨平台支援
CHAPTER 04 用戶端負載平衡:Spring Cloud Ribbon
4.1 用戶端負載平衡
4.2 RestTemplate詳解
4.3 原始程式分析
4.4 設定詳解
4.5 重試機制
CHAPTER 05 服務容錯保護:Spring Cloud Hystrix
5.1 快速入門
5.2 原理分析
5.3 使用詳解
5.4 屬性詳解
5.5 Hystrix儀表板
5.6 Turbine叢集監控
CHAPTER 06 宣告式服務呼叫:Spring Cloud Feign
6.1 快速入門
6.2 參數綁定
6.3 繼承特性
6.4 Ribbon設定
6.5 Hystrix設定
6.6 其他設定
CHAPTER 07 API閘道服務:Spring Cloud Zuul
7.1 快速入門
7.2 路由詳解
7.3 篩檢程式詳解
7.4 動態載入
CHAPTER 08 分散式設定中心:Spring Cloud Config
8.1 快速入門
8.2 服務端詳解
8.3 用戶端詳解
CHAPTER 09 訊息匯流排:Spring Cloud Bus
9.1 訊息代理
9.2 RabbitMQ實現訊息匯流排
9.3 Kafka實現訊息匯流排
9.4 深入了解
CHAPTER 10 訊息驅動的微服務:Spring Cloud Stream
10.1 快速入門
10.2 核心概念
10.3 使用詳解
10.4 綁定器詳解
10.5 設定詳解
CHAPTER 11 分散式服務追蹤:Spring Cloud Sleuth
11.1 快速入門
11.2 追蹤原理
11.3 抽樣收集
11.4 與Logstash整合
11.5 與Zipkin整合
APPENDIX A Starter POMs
後記
前言
CHAPTER 01 01 基礎知識
1.1 什麼是微服務架構
1.2 為什麼選擇Spring Cloud
1.3 Spring Cloud簡介
1.4 版本說明
CHAPTER 02 微服務建置:Spring Boot
2.1 架構簡介
2.2 快速入門
2.3 設定詳解
2.4 監控與管理
2.5 小結
CHAPTER 03 服務治理:Spring Cloud Eureka
3.1 服務治理
3.2 Eureka詳解
3.3 設定詳解
3.4 跨平台支援
CHAPTER 04 用戶端負載平衡:Spring Cloud Ribbon
4.1 用戶端負載平衡
4.2 RestTemplate詳解
4.3 原始程式分析
4.4 設定詳解
4.5 重試機制
CHAPTER 05 服務容錯保護:Spring Cloud Hystrix
...