良馬難乘,然可以任重致遠;良才難令,然可以致君見尊。——墨子
曾經有一個客戶把他們遇到的微服務問題列出來給我看,當時我覺得頭緒萬千但又無從說起,於是想到了墨子的這句話。
如果現在有人問我這個問題,那麼我會推薦他們一-邊看Chris Richardson的這本書,一邊在實踐中嘗試和體驗各種模式的優勢與特點,然後大家 一起討論遇到的問題並提出解決思路。
大概從五六年前開始,我在工作中越來越多地談到了微服務,並參與了一些客戶應用的微服務改造,其中不乏成功的例子,當然也有沒達到預期的情況。隨着網絡基礎設施的高速發展,以及越來越多的企業和組織需要通過互聯網提供服務,在考慮構建可以支持海量請求以及多變業務的軟件平臺時,微服務架構成爲多數人的首選。微服務架構的出現是符合事物發展規律的:當問題足夠大、有足夠多的不確定性因素時,人們習慣把大的問題拆分成小的問題,通過分割、抽象和重用小而可靠的功能模塊來構建整體的方案。但是當這些小的、可重用的部分越來越多時,又會出現新的問題。在相似的階段,人們遇到的問題通常也是相似的,這個時候我們需要- -些共識,需要用一些通用的詞彙來描述問題以及解題思路和方案,這也是人們知識的總結。微服務模式就是這樣一種總結和概括,是一種可以通用的共識,用於描述微服務領域中的問題及解決方案、方法和思路。這是我向大家推薦這本書的理由之一:討論微服務的時候,這本書提供了必要的共同語言。
我想對本書的讀者說:
第一,要記住微服務不是解決所有問題的萬能“銀彈"。
第二,編寫整潔的代碼和使用自動化測試至關重要,因爲這是現代軟件開發的基礎。
第三,關注微服務的本質,即服務的分解和定義,而不是技術,如容器和其他工具。
第四,確保你的服務松耦合,並且可以獨立開發、測試和部署,不要搞成分佈式單體(Distributed Monolith),那將會是巨大的災難。
下面來看看本書的大致內容
第 1 章 逃離單體地獄
單體地獄的特徵,如何藉助微服務架構逃離單體地獄
微服務架構的基本特徵,它的好處和弊端
開發大型複雜應用時,如何藉助微服務實現DevOps式開發風格
微服務架構的模式語言及爲什麼使用它
第 2 章 服務的拆分策略
理解軟件架構,以及它爲什麼如此重要
使用拆分模式中的業務能力模式和子域模式進行單體應用到服務的拆分
使用領域驅動設計中的限界上下文概念來分解數據,並讓服務拆分變得更容易
第 3 章 微服務架構中的進程間通信
通信模式的具體應用:遠程過程調用、斷路器、客戶端發現、自注冊、服務端發現、第三方註冊、異步消息、事務性發件箱、事務日誌拖尾、輪詢發佈者
進程間通信在微服務架構中的重要性
定義和演化API
如何在各種進程間通信技術之間進行權衡
使用異步消息對服務的好處
把消息作爲數據庫事務的一部分可靠發送
第 4 章 使用 Saga 管理事務
第 5 章 微服務架構中的業務邏輯設計
第 6 章 使用事件溯源開發業務邏輯
第 7 章 在微服務架構中實現查詢
第 8 章 外部 API 模式
第 9 章 微服務架構中的測試策略 (上)
第 10 章 微服務架構中的測試策略 (下)
第 11 章 開發面向生產環境的微服務應用
第 12 章 部署微服務應用
第 13 章 微服務架構的重構策略
最後分享下這本書
如有需要這份(MICROSERVICES PATTERNS)微服務架構設計模式的朋友點贊文章關注我,然後私信“666”即可獲得領取方式。
本書的目標是讓架構師和程序員學會使用微服務架構成功開發應用程序。
書中不僅討論了微服務架構的好處,還描述了它們的弊端。
讀者將掌握如何在使用單體架構和使用微服務架構之間做出正確的權衡。