“物之所至者,志亦至焉;志之所至者,禮亦至焉;禮之所至者,樂亦至焉:樂之所至者,哀亦至焉。”
微服務是目前軟體開發的發展趨勢,越來越多的系統采用微服務方式建構。而今天團長分享的這份筆記内容覆寫面非常廣。從分布式系統到微服務架構,從Spring Boot到SpringCloud的各種元件,從Docker到Kubernetes,從領域驅動設計到響應式程式設計和雲原生開發,都有作者很多獨到的見解。緻力于微服務開發的工程師從中汲取并歸納為自己的知識,真是再好不過了。
不BB上幹貨!
萬物皆從原理開始講起!

- 微服務概述
本章讓我們了解什麼是微服務、微服務架構産生和發展的背景、雲計算時代下微服務與雲原生架構的關系、微服務架構的主要特性,及微服務架構與UNIX設計哲學的内在聯系。
- 微服務的采用前提
軟體世界沒有“銀彈",不存在理想的軟體模型提供全面的解決方案。每一個公司或者企業都需要結合自身的情況和場景來選擇是否采用微服務架構。如果你正在基于微服務架構建構或者改造你的系統,那麼請注意你使用的技術理念和軟體方法論與微服務架構是否存在沖突。總之,在軟體工程中,除了技術因素,組織結構、研發流程等都會對微服務架構能否成功落地産生重要影響。
- 微服務建構
領域驅動設計可以保證業務模型和代碼模型的一緻性,把業務與技術複雜性分離,通過邊界劃分來控制業務的複雜性,目前微服務架構的興起帶來了實作領域驅動設計的最佳實踐環境。軟體建構過程本質上是一個複雜的過程,這種複雜性伴随在軟體工程的整個生命周期。使用微服務架構、領域驅動的軟體模組化模式可以讓我們找到這種複雜性問題的解決之道。
口頭吹沒有用,實踐即真理
- 腳手架
目前,基于腳手架(基底)模式進行軟體建構已經成為微服務架構落地的主流開發方式,可以顯著提升開發人員的工作效率。Spring Boot本身基于Spring架構,繼承了Spring強大的技術特性。本章我們對Spring Boot架構的核心子產品和機制進行了剖析,詳細講解了SpringBoot的自動化配置原理、Starter機制和自定義Starter的工作原理,固化了“約定優于配置""和“開箱即用"”等簡潔的開發理念和高效開發方式。同時,本章也是後續Spring Cloud微服務治理的基礎,在開始技術進階之前,務必掌握Spring Boot基礎原理,這樣才能做到事半功倍。
- 關鍵技術
微服務架構的關鍵技術是為微服務提供高可用、可擴充性、可容錯性的平台基礎設施。Spring Cloud作為微服務的治理平台為我們提供了相關的技術和服務元件,而開源的解決方案往往無法做到滿足個性需求,我們需要根據實際場景和業務特性做定制化開發。定制化開發的前提是我們能夠充分了解這些關鍵技術的底層運作原理和工作機制。
- 系統內建
微服務內建架構傾向于使用标準化的HTTP、基于REST API的架構互動模式進行內建。此外,考慮到性能也可以采用RPC的調用方式。對于異步互動過程,使用消息隊列可以實作微服務之間的充分解耦和異構內建。Spring Cloud提供了Spring Cloud Stream架構,它可以屏蔽底層通信技術細節,并且實作了基于消息的輕量級微服務內建解決方案。還可用使用Spring Cloud Stream實作基于事件驅動和CQRS的系統架構。
- 微服務資料架構
在微服務架構下,我們強調要根據微服務的資料類型和業務場景選擇合适的後端資料存儲類型。對于微服務架構下分布式應用中的資料一緻性管理,不推薦使用分布式事務,微服務資料架構通過放棄分布式網絡的一緻性,來提升微服務之間的互動性能。另外,在微服務資料架構中,我們介紹了常見的TCC、Saga、可靠消息模式,可以作為保證資料之間最終一緻性的解決方案。
- 微服務傳遞
相比單體架構,微服務架構在部署靈活性上有了很大改善,然而頻繁的服務釋出也給微服務架構下的軟體品質帶來了穩定性的挑戰。傳統的手動部署方式已經不适用于微服務架構,目前基于容器的傳遞方式已經成為微服務的标準傳遞方式,通過持續內建傳遞工具,配合自動化、可持續傳遞部署的基礎設施,來支撐微服務應用快速地疊代傳遞,成為軟體傳遞的最佳實踐。
- 服務監控治理
監控系統按照原理和作用大緻可以分為三類:度量類(Metrics)、日志類(Log)、調用鍊類(Tracing)。對于不同的監控對象和監控資料類型,需要采用對應的技術棧和監控手段。對于Spring Boot微服務架構,除了開發架構自帶的生産就緒元件能夠支援服務的健康狀态名額查詢,我們還需要引入第三方ELK架構作為日志監控元件,與Zipkin和SkyWalking等元件共同實作調用鍊監控。
學無止境!進階進階!
- 響應式微服務架構
建構響應式微服務可以獲得異步、響應性、彈性、快速恢複、背壓等系統特性,同時響應式微服務架構在資源占用、高并發、高吞吐、異步處理場景中具有更強的優勢。目前響應式架構技術選型衆多,如果将響應式程式設計應用到大規模生産系統中,則需要進行周密的調研,并對實際項目周期、人員經驗、技術架構等因素進行綜合權衡考慮,避免技術的複雜度問題成為業務發展過程中的瓶頸。
- Kubernetes容器管理
Kubernetes作為容器排程運作平台,保證了微服務的彈性、負載、語言無關、擴縮容等強大的DevOps能力,而Spring Cloud架構提供的開發者經驗是面向開發人員友好的微服務平台,兩個平台都有各自的強項。在微服務實踐過程中,我們需要內建它們各自的優勢,最終訴求是滿足業務場景、解決複雜問題域、提高開發效能、提升服務的傳遞效率。
- 微服務發展趨勢
本書中的内容來源于作者多年的工作積累和實踐總結,從理論到實踐再到進階,以全方位遞進的方式對微服務的設計和應用進行了解讀,能夠讓大家在日常開發工作中少走彎路,有很強的指導意義。需要擷取學習的朋友,請幫忙點贊轉發下,背景私信【學習】或【筆記】免費擷取完整内容下載下傳方式。