簡單的說,微服務是架構設計方式,分布式是系統部署方式,兩者概念不同。
?
微服務
簡單來說微服務就是很小的服務,小到一個服務只對應一個單一的功能,只做一件事。這個服務可以單獨部署運行,服務之間可以通過RPC來相互交互,每個微服務都是由獨立的小團隊開發,測試,部署,上線,負責它的整個生命周期。
在做架構設計的時候,先做邏輯架構,再做物理架構,當你拿到需求后,估算過最大用戶量和并發量后,計算單個應用服務器能否滿足需求,如果用戶量只有幾百人的小應用,單體應用就能搞定,即所有應用部署在一個應用服務器里,如果是很大用戶量,且某些功能會被頻繁訪問,或者某些功能計算量很大,建議將應用拆解為多個子系統,各自負責各自功能,這就是微服務架構。
微服務架構,核心就是為了解決應用微服務化之后的服務治理問題。
微服務的特征
- 一個微服務應用都是單一職責的,只做一件事,一個微服務解決一個業務問題(注意是一個業務問題而不是一個接口)
- 這個微服務應用可以單獨部署運行,服務之間可以通過 RPC 來相互交互。每個微服務都是由獨立的小團隊開發,測試,部署,上線,負責它的整個生命周期
滿足以上兩點就可以認為是典型的微服務。
分布式
在《分布式系統原理與范型》一書中有如下定義:
分布式系統是若干獨立計算機的集合,這些計算機對于用戶來說就像單個相關系統。
分布式系統是由一組通過網絡進行通信、為了完成共同的任務而協調工作的計算機節點組成的系統。分布式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、存儲任務。 其目的是利用更多的機器,處理更多的數據。
分布式服務顧名思義服務是分散部署在不同的機器上的,一個服務可能負責幾個功能,是一種面向SOA架構的,服務之間也是通過rpc來交互或者是webservice來交互的。邏輯架構設計完后就該做物理架構設計,系統應用部署在超過一臺服務器或虛擬機上,且各分開部署的部分彼此通過各種通訊協議交互信息,就可算作分布式部署,生產環境下的微服務肯定是分布式部署的,分布式部署的應用不一定是微服務架構的,比如集群部署,它是把相同應用復制到不同服務器上,但是邏輯功能上還是單體應用。
?
兩者區別
微服務是架構設計方式
分布式是系統部署方式
微服務相比分布式服務來說,它的微服務應用粒度更小,服務之間耦合度更低,由于每個微服務都由獨立的小團隊負責,因此它敏捷性更高,分布式服務最后都會向微服務架構演化,這是一種趨勢, 不過服務微服務化后帶來的挑戰也是顯而易見的,例如服務粒度小,數量大,后期運維將會很難。
?