分佈式系統設計概述

概述

  • 分佈式系統主要用於解決單機在處理高併發請求,海量數據存儲和海量數據計算分析時的瓶頸,通過將系統拆分爲各個子系統,各個子系統可以在各自的機器上部署從而來實現整個系統的橫向拓展。其中針對系統業務的差異,分佈式系統設計的思路也會存在差異,以下主要是針對企業級應用服務,數據存儲訪問,數據計算分析服務來做個分析。

1. 企業應用服務

集羣部署
  • 應對高併發請求的處理,同一個服務部署多個節點來解決單機處理能力有限和單點問題,而實現這個的前提是服務節點的無狀態,即不在服務進程的內存維護數據,這樣每個服務節點都可以隨時停止運行和重啓。通過負載均衡機制來將請求分散到這多個服務節點,從而實現動態的橫向拓展;
分佈式架構
  • 分佈式應用是指一個系統由多個子服務組成,每個子服務對應一個獨立的進程,部署在不同的節點,各子系統通過網絡來進行交互協作,所以服務請求的處理開銷主要是在網絡通信方面。分佈式應用相對於單體應用雖然由於各子服務需要通過網絡來進行協作而增加了網絡開銷,但是提高了應用的拓展性,可維護性,併發性,可靠性和整體的性能,不過也存在缺點就是服務調用追蹤更加複雜,網絡的不穩定性增加了服務調用的時間延遲和出錯的概率。

2. 數據存儲服務

  • 應對海量數據的存儲,分散數據到多個節點存儲來解決單機存儲空間問題,同時每個數據節點包含多個備份節點來實現數據冗餘存儲來避免節點宕機導致數據丟失,但是需要在多個主從數據節點之間進行數據同步來保持數據一致性。所以數據存儲訪問的分佈式系統設計一般需要考慮數據的複製同步和數據一致性要求,即通常需要在數據可用性和數據一致性之間做個折中,如果要強一致性,則每次數據寫入都需要在主從節點之間寫入成功才返回,在這個過程中客戶端無法讀取這個數據;如果要求可用性,則可以在主節點寫入成功,或者部分從節點寫入成功,如Quorum機制,則成功響應客戶端。

3. 數據計算服務

  • 應對海量數據的離線和實時計算分析,首先數據計算通常涉及海量數據,而數據通常被分散存儲在多個節點來解決單機存儲空間的問題。爲了提高計算速度,需要在每個數據節點進行計算,然後在主節點進行結果彙總。而數據計算方面爲了避免數據通過網絡傳輸,通常計算任務調度服務會將計算任務分配到數據節點上來進行計算,在計算完成時只需要同步計算結果給主節點彙總即可。

CAP理論與BASE理論

  • 以上系統都涉及到多個子節點和不同節點之間數據存在相關性,如企業的分佈式應用就是一次請求調用涉及的多個子服務的各自數據,數據存儲訪問就是一個數據的多個備份數據。而由於是存在於不同機器節點的服務,需要通過網絡來通信協作,而網絡的不穩定是固然存在的。所以也就產生了分佈式系統設計的CAP理論來闡述分佈式系統只能存在數據強一致性和服務高可用的其中一種,二者無法同時滿足。而在實際進行分佈式系統設計時,則一般基於BASE理論,即基本可用,軟狀態和最終一致性。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章