springCloud(1):微服務簡介
一、什麽是微服務
微服務架構風格是一種將一個單一應用程序開發為一組小型服務的方法,每個服務運行在自己的進程中,服務間通信采用輕量級通信機制(通常用HTTP資源API)。
二、微服務架構特性
1、每個微服務可獨立運行在自己的進程裏
2、一系列獨立運行的微服務共同構建起整個系統
3、每個服務為獨立的業務開發,一個微服務只關註某個特定的功能,如:訂單管理
4、微服務之間通過一些輕量級的通信機制進行通信,例如:通過RESTful API進行調用
5、可以使用不同的語言與數據存儲技術
6、全自動的部署機制
三、微服務的優點與挑戰
3.1、優點
1、易於開發和維護
一個微服務只會關註一個特定的業務功能。
2、單個微服務啟動較快
單個微服務代碼量較少
3、局部修改容易部署
單體應用只要要修改就得重新部署整個應用,微服務解決了這一問題
4、技術棧不受限
語言不受限制
5、按需伸縮
可根據需要,實現細粒度的擴展
3.2、挑戰
1、運維成本較高
更多的服務意味著更多的運維投入
2、分布式固有的復雜性
使用微服務構建的是分布式系統,對於一個分布式系統,系統容錯、網絡延遲、分布式事務等都會帶來巨大的挑戰
3、接口調整成本高
微服務之間通過接口進行通信,如果修改某一個微服務的API,可能所有使用了該接口的微服務都需要做調整
4、重復勞動
很多服務可能都會使用到相同的功能,而這個功能並沒有達到分解為一個微服務的程度。
四、微服務設計原則
4.1、單一職責原則
指的是一個單元(類、方法或者服務等)只應關註整個系統功能中單獨、有界限的一部分。(SOLID原則之一)
4.2、服務自治原則
指每個微服務應具備獨立的業務能力 、依賴與運行環境。應該與其它服務高度解耦,每個微服務從開發、測試、構建、部署,都應當可以獨立運行,而不應該依賴其它的服務
4.3、輕量級通信原則
輕量級的通信機制應具備兩點:
1、體量較輕
2、跨語言
微服務架構中,常用的協議有REST、AMQP、STOMP、MQTT等
4.4、微服務粒度
微服務的粒度是難點,也常常是爭論的焦點。應當使用合理的粒度劃分微服務,而不是一味的把服務做小。
五、微服務架構的實現
不僅需要開發框架的支持,還需要一些自動化的部署工具,以及IaaS、PaaS或CaaS的支持。
開發框架的選擇:
可以使用Spring Cloud作為微服務開發框架。當然也可以使用Dubbo等
本文出自 “我愛大金子” 博客,請務必保留此出處http://1754966750.blog.51cto.com/7455444/1941022
springCloud(1):微服務簡介