什麼是分佈式?
分佈式也就是微服務中的一種體系結構,那麼提到分佈式、就要先說說單機和集羣
1、單機結構
單機就是全部業務所有寫在一個項目中,部署服務到一臺服務器上,全部請求業務都由這臺服務器處理,顯示,當業務增加到必定程度的時候,服務器的硬件會沒法知足業務需求,天然而然的想到一個程序步行就部署多個。
2、集羣
-
集羣就是單機的多實例,在多個服務器上部署多個服務,每一個服務就是一個節點,部署N個節點,處理業務的能力就提高N倍,這些節點的結合就叫作集羣。
-
負載均衡:協調羣裏的每一個節點均衡地接收業務請求。通俗的講就是服務A和服務B相同時間段內處理的同類業務請求數量是類似的
集羣的特色:

-
擴展性好:集羣只是單機的多個複製,沒有改變單機的原有的代碼結構,每次部署新節點只須要複製部署便可。
-
單個節點業務耦合度高、資源浪費:節點是多個業務處理集合(耦合度高),每一個具體業務的訪問量可能差別很大,好比JD上帳戶管理模塊的訪問量確定低於訂單模塊。
-
然而帳戶管理模塊和訂單模塊的部署數量是同樣的(由於每一個節點裏獨有這兩個模塊),相對於訂單模塊來講,部署一樣多的帳戶管理模塊就是浪費。
-
那就把單機節點不一樣的業務處理模塊拆開,這就是分佈式了。
3、分佈式(微服務)
分佈式結構就是一個完整的系統,按照業務功能,拆分紅一個個獨立的子系統,在分佈式結構中,每一個子系統就被稱爲「服務」。這些子系統可以獨立運行在Web容器中,他們之間經過RPC方式通訊。
舉個例子,假如須要開發一個在線商城。按照微服務的思想,咱們須要按照功能模塊拆分紅多個獨立的服務,如:用戶服務、產品服務、訂單服務、後臺管理服務、數據分析服務等。
這一個個服務都是一個個獨立的項目,能夠獨立運行。若是服務之間有依賴關係,那麼經過RPC方式調用。

分佈式的優勢:
-
系統之間的耦合度大大下降,能夠獨立開發、獨立部署、獨立測試,系統與系統之間的邊界很是明確,排錯也變得至關於容易,開發效率大大提高。
-
系統之間的耦合性下降,從而系統更易於擴展,咱們能夠針對性地擴展某些服務,就是對子系統集羣。例如:雙十一時,訂單子系統、支持子系統須要集羣,帳號管理子系統不須要集羣。
-
服務的複用性更高,好比:咱們將用戶系統做爲單獨的服務後,該公司全部的產品均可以使用該系統做爲用戶系統,無需重複開發。
4、分佈式與集羣的區別
-
將一套系統拆分紅不一樣子系統部署在不一樣服務器上(這叫分佈式)
-
署多個相同的子系統在不一樣的服務器上(這叫集羣)
-
部署在不一樣服務器上的同一個子系統應作負載均衡。
-
分佈式:一個業務拆分爲多個子業務,部署在多個服務器上 。
-
集羣:同一個業務,部署在多個服務器上 。
5、圖解分佈式


6、我的理解 用生活中的例子來講明: 小飯店原來只有一個廚師,切菜洗菜備料炒菜全乾。後來客人多了,廚房一個廚師忙不過來,又請了個廚師,兩個廚師都能炒同樣的菜,兩個廚師的關係是集羣。 爲了讓廚師專心炒菜,把菜作到極致,再請了個配菜師負責切菜,備菜,備料 ... 廚師和配菜師的關係是分佈式。 一個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關係是集羣。 一個配菜師因故請假了,可是其他的配菜師仍是該作什麼作什麼,只是沒請假的配菜師任務均勻的加量了,但他們的任務和職責是不變的,這是集羣。
歡迎關注本站公眾號,獲取更多信息