這篇文章主要描述分散式系統的發展歷程和分散式系統的衡量指標。發展歷程包括了單機模式、數據並行模式和任務並行模式。分散式系統的衡量指標包括性能、資源占用、可用性和可擴展性。 ...
分散式系統發展歷程
分散式的發展過程經歷了三個階段:
- 單機模式(單兵模式)
- 數據並行或者數據分散式(游擊隊模式)
- 任務並行或者任務分散式(集團軍模式)
什麼是單機模式,它的優缺點是什麼?
單機模式是指所有應用程式和數據均步數在同一臺電腦或者伺服器上,由一臺電腦完成所有的處理。
它的好處是功能、代碼和數據集中,便於維護、管理和執行。
它的主要問題是性能受限、存在單點失敗的問題。
什麼是數據分散式模式,它的優缺點是什麼?
它是指採用消息共用模式使用多台電腦並行運行或者執行多任務,核心原理是每台電腦上執行相同的程式,將數據進行拆分放到不同的電腦上進行計算。它強調對數據進行拆分,任務程式在每台機器上運行。
將程式從單機模式進化到數據分散式模式,需要兩個步驟:
- 將應用和數據分離,分別部署到不同的伺服器上。
- 對數據進行拆分,將同一類型的數據拆分到兩個甚至更多的資料庫中,這樣應用伺服器上的任務就可以針對不同數據並行執行了。
這種模式的好處在於可以利用多台電腦並行處理多個請求,使得我們可以在相同的時間內完成更多的請求處理,解決了單機模式的計算效率瓶頸問題。
這種模式的主要問題是對提升單個任務的執行性能及降低時延無效。
什麼是任務分散式模式,它的優缺點是什麼?
它是指將單個複雜的任務拆分為多個子任務,從而使得多個子任務可以在不同的電腦上並行執行。
任務並行模式完成一項複雜任務包括兩個核心步驟:
- 將單任務拆分成多個子任務。
- 讓多個子任務並行執行。
這種模式的好處在於提升了性能、擴展性和可維護性,它的主要問題是帶來了設計上的複雜性。
什麼是分散式?
分散式指將相同或者相關的程式運行在多台電腦上,從而實現特定目標的一種計算方式。
數據並行和任務並行都算是分散式的一種形態。
如何選擇數據並行還是任務並行呢?一個簡單的原則:任務執行時間短,數據規模大,類型相同且無依賴,則採用數據並行;任務複雜,執行時間長,任務可拆分,則可以考慮任務並行。在實際項目中,我們往往會兩種模式並用。
分散式系統的衡量標準
分散式的目的是用更多的機器,處理更多的數據和更複雜的任務。
性能、資源、可用性和可擴展性是分散式系統的重要指標。
性能指標主要用來衡量一個系統處理各種任務的能力。常見的性能指標包括吞吐量、響應時間和完成時間。
吞吐量指系統在一定時間內可以處理的任務數。常見的吞吐量包括QPS、TPS和BPS:
- QPS,即查詢數每秒,用於衡量一個系統每秒處理的查詢數,通常用於讀操作,越高說明對讀操作的支持越好。
- TPS,即事務數每秒,用於衡量一個系統每秒處理的事務數,通常用於寫操作,越高說明對寫操作的支持越好。
- BPS,即比特數每秒,用於衡量一個系統每秒處理的數據量。
響應時間是指系統響應一個請求或輸入需要花費的時間。它直接影響用戶體驗,對於時延敏感的業務非常重要。
完成時間是指系統真正完成一個請求或處理需要花費的時間。
資源占用是指一個系統提供正常能力需要占用的硬體資源,例如CPU、記憶體、硬碟等。
有兩個資源占用情況需要註意:
- 空載資源占用,一個系統再沒有任何負載時的資源占用。
- 滿載資源占用,一個系統滿負荷時的資源占用。
可用性是指系統在面對各種異常時可以正確提供服務的能力。
可用性有兩種不同的衡量方式:
- 系統停止服務時間與總的時間之比
- 某功能的失敗次數與總的請求次數之比
可靠性(Reliability)與可用性(Availability)有什麼區別?
- 可靠性是指一個系統完全不出故障的概率,更多用於硬體領域。
- 可用性是指在允許部分組件失效的情況下,一個系統對外仍能正常提供服務的概率。
可擴展性是指分散式系統通過擴展集群機器規模提高系統性能(吞吐量、響應時間、完成時間)、存儲容量、計算能力的特征,是分散式系統的特有性質。
衡量可擴展性的常見指標是加速比(Speedup),也就是一個系統進行擴展後相對擴展前的性能提升。
上述這些測量指標,有些指標會彼此約束。不同的分散式系統,針對測量指標,會有不同的側重:
- 電商系統最看重吞吐量。
- IoT最看重資源占用指標。
- 電信業務最看重響應時間、完成時間以及可用性。
- HPC看到通過水平擴展提供系統的加速比。
- 大數據最看重可擴展性。
- 雲計算最看重資源開銷。
- 區塊鏈最看重吞吐量和完成時間。