分布式系統是當前比較熱門的話題,說到分布式就不得不提集群和單機,如果要學習分布式就要先對他的概念和功能有所了解
一、單機
單機就是把做的系統部署到一台服務器上,,所有的請求業務都由這台服務器處理。顯然,當業務增長到一定程度的時候,服務器的硬件會無法滿足業務需求。很多人就會想到多部署幾台服務器,這就是集群。
二、 集群
集群就是單機的多實例,在多個服務器上部署多個服務,每個服務就是一個節點,部署N個節點,處理業務的能力就提升 N倍(大約),這些節點的集合就叫做集群。
優點:操作簡單,容易部署;
缺點:每個節點負載相同(耦合度高),每個具體業務的訪問量可能差異很大,比如美團外賣美食外賣的訪問量一定大於鮮花外賣的訪問量,這就造成了資源浪費
三、分布式(微服務)
分布式結構就是將一個完整的系統,按照業務功能,拆分成一個個獨立的子系統,在分布式結構中,每個子系統就被稱為“服務”。這些子系統能夠獨立運行在web容器中,它們之間通過RPC方式通信。
優點:資源利用率高
缺點:安全性低,如果一台服務器出現問題整個系統就會崩塌
四、總結
所以好的設計應該是分布式和集群的結合,先分布式再集群,具體實現就是業務拆分成很多子業務,然后針對每個子業務進行集群部署,這樣每個子業務如果出了問題,整個系統完全不會受影響。
微服務的設計是為了不因為某個模塊的升級和BUG影響現有的系統業務。微服務與分布式的細微差別是,微服務的應用不一定是分散在多個服務器上,他也可以是同一個服務器。
優點:
- 系統之間的耦合度大大降低,可以獨立開發、獨立部署、獨立測試,系統與系統之間的邊界非常明確,排錯也變得相當容易,開發效率大大提升。
- 系統之間的耦合度降低,從而系統更易於擴展。我們可以針對性地擴展某些服務,就是對子系統集群。例如雙十一時,訂單子系統、支付子系統需要集群,賬戶管理子系統不需要集群。
- 服務的復用性更高。比如,當我們將用戶系統作為單獨的服務后,該公司所有的產品都可以使用該系統作為用戶系統,無需重復開發。