簡單的說,微服務是架構設計方式,分布式是系統部署方式,兩者概念不同
微服務是啥?
這里不引用書本上的復雜概論了,簡單來說微服務就是很小的服務,小到一個服務只對應一個單一的功能,只做一件事。這個服務可以單獨部署運行,服務之間可以通過RPC來相互交互,每個微服務都是由獨立的小團隊開發,測試,部署,上線,負責它的整個生命周期。
微服務架構又是啥?
在做架構設計的時候,先做邏輯架構,再做物理架構,當你拿到需求后,估算過最大用戶量和並發量后,計算單個應用服務器能否滿足需求,如果用戶量只有幾百人的小應用,單體應用就能搞定,即所有應用部署在一個應用服務器里,如果是很大用戶量,且某些功能會被頻繁訪問,或者某些功能計算量很大,建議將應用拆解為多個子系統,各自負責各自功能,這就是微服務架構。
那么分布式又是啥?
分布式服務顧名思義服務是分散部署在不同的機器上的,一個服務可能負責幾個功能,是一種面向SOA架構的,服務之間也是通過rpc來交互或者是webservice來交互的。邏輯架構設計完后就該做物理架構設計,系統應用部署在超過一台服務器或虛擬機上,且各分開部署的部分彼此通過各種通訊協議交互信息,就可算作分布式部署,生產環境下的微服務肯定是分布式部署的,分布式部署的應用不一定是微服務架構的,比如集群部署,它是把相同應用復制到不同服務器上,但是邏輯功能上還是單體應用。
微服務相比分布式服務來說,它的粒度更小,服務之間耦合度更低,由於每個微服務都由獨立的小團隊負責,因此它敏捷性更高,分布式服務最后都會向微服務架構演化,這是一種趨勢, 不過服務微服務化后帶來的挑戰也是顯而易見的,例如服務粒度小,數量大,后期運維將會很難。