Why Microservices?
回答這個問題前,我們先看下之前大行其道的單體架構 - Monolithic Architecture,對於非專業人士來講,所謂的單體架構,其就像一個超大容器,容器內集中包含了該應用的所有軟件組件,並且組件與組件之間緊密耦合。
對於這種架構,其缺陷或者說潛在不足也很明顯,簡單總結如下:
- 臃腫僵化不靈活: 單體架構很難採用多種技術
- 可靠性較差: 這種架構最明顯的特徵就是牽一髮而動全身,一個小小的功能失效可能會導致整個系統的不可用
- 擴展性較差: 應用本身無法輕易的進行擴展,一旦需要進行對某個或者某些功能進行擴展或者更新,我們需要重新構建整個系統
- 阻礙連續性的開發: 應用的許多功能特性無法被同時構建和部署
- 開發速度慢: 單體應用的開發耗時較長,因爲我們需要依次構建相應的功能模塊
- 不適用於複雜的應用: 複雜應用的各個功能特性緊耦合
何爲微服務?
微服務,又稱微服務架構,這種架構聚焦業務領域,將應用通過一個個小而自治的服務組織起來。在微服務架構中,每一個服務都是自包含的且唯一實現某個單一業務功能。
微服務與傳統單體架構的區別
爲了便於理解,我們這裏以我們常見的電子商務應用爲示例說明,很明顯,傳統的單體架構下,所有服務共享一個應用實例並且共享同一個後臺數據庫,而微服務架構下則應用本身業務功能劃分爲不同的微小服務,每個服務都自行處理各自業務數據,處理不同的業務功能。
微服務架構
接下來,我們進一步瞭解下微服務架構究竟有哪些特徵以及什麼是微服務,看下面的架構圖例。
- 設備不同,各客戶端所使用的服務也不盡相同,比如:檢索、構建、配置抑或其他管理功能
- 基於各自業務領域的不同,每個服務都相對獨立,而且會根據實際被進一步細化爲更小粒度的服務
- 每個服務都有各自的負載均衡和運行環境,並且各自擁有相對獨立的數據源
- 服務間的通信通常採用無狀態通信協議,比如:REST或者消息總線
- 藉助服務發現機制,服務消費方與提供方可以彼此無憂通信,並可進行一些自動化及監控操作
- 服務與客戶端的交互都是通過服務網關進行的
- 所有內部聯通節點均與服務網關相連,即一旦你連接到服務網關,你即可訪問網關後的所有服務端口
微服務的主要特徵
- 解耦
- 組件化
- 業務功能化
- 自治
- 持續集成
- 單一責任
- 去中心化
- 敏捷
微服務架構的優勢
- 獨立部署
- 獨立開發
- 故障隔離
- 混合技術棧
- 細粒度級擴展,即單個組件可以自由橫向擴展
微服務架構設計最佳實踐
原文鏈接: