本文說明了微服務架構風格的優缺點,以及微服務架構的模式集合。html
特色
微服務架構是一組架構模式和特性的集合,這個集合很大程度上定義了什麼是微服務,也說明了如何應用微服務架構來構建大型/複雜應用程序。前端
![](http://static.javashuo.com/static/loading.gif)
遵循微服務架構的模式和特性,經過將一個應用程序設計構建爲一組鬆散耦合的協做服務。每一個服務都實現了一部分的相關功能。對應於Scale Cube(請參考分佈式系統三維可縮放模型)的Y軸。數據庫
服務使用HTTP / REST等同步協議或AMQP等異步協議進行通訊。能夠彼此獨立地開發和部署服務。每一個服務都有本身的數據庫。後端
![](http://static.javashuo.com/static/loading.gif)
優勢
支持大型複雜應用程序的持續交付和部署
- 更好的可測試性 - 測試服務更小,速度更快;
- 更好的可部署性 - 能夠獨立部署服務;
- 可以圍繞多個自動團隊組織開發工做。
每一個微服務的代碼規模更小
- 使開發人員更容易理解和開發;
- 開發人員的在使用IDE時更加高效;
- 應用程序啓動速度更快,加快了部署速度。
改善了整個應用體系的故障隔離能力
消除對技術堆棧的長期綁定
缺點
分佈式系統的額外複雜性
- 開發工具沒有針對分佈式系統的特定支持;
- 集成測試更加困難;
- 必須實現分佈式的通訊機制;
- 處理分佈式事務的複雜度;
- 要處理多個開發團隊之間的協調工做。
部署的複雜性
- 容器化部署的複雜性;
- 容器編排和服務治理的複雜性;
- 須要更多公共服務的支持,例如服務發現,服務指標監控等。
額外的內存消耗
首先要解決的問題
如何將一個大型複雜的應用程序分解爲微服務?安全
分解模式
部署模式
特性
通訊模式
外部訪問模式
服務發現模式
可靠特性
數據管理模式
安全特性
測試特性
可監控特性
UI模式
相關文章