什么是分布式的“三圍”?你知道嗎?
在分布式系統中,幾個關鍵的衡量指標包括性能、資源、可用性和可擴展性。這些指標至關重要,因為性能直接影響系統的響應速度和吞吐量;資源衡量系統對計算和存儲資源的有效利用;可用性確保系統在故障時仍能正常運行,以滿足用戶需求;而可擴展性則關系到系統在面對增加的負載時的適應能力。這些指標共同決定了分布式系統的整體效率和可靠性。
分布式系統的指標
分布式技術的起源表明,分布式系統的出現旨在通過廉價的普通機器來解決單個計算機在處理復雜、大規模數據和任務時所面臨的性能瓶頸、資源不足以及可用性和可擴展性問題。換句話說,分布式系統的目標是利用更多的機器來處理更大量的數據和更復雜的任務。因此,性能、資源、可用性和可擴展性成為了分布式系統的重要指標,可以說它們構成了分布式系統的核心要素。
圖片
性能(Performance)
性能指標主要用于衡量系統處理各種任務的能力,無論是分布式系統還是單機系統,性能要求都是重要的考量。由于不同系統和服務的目標各異,因此關注的性能指標也會有所不同,甚至可能相互矛盾。常見的性能指標包括吞吐量、響應時間和完成時間。
吞吐量指的是系統在一定時間內可以處理的任務數量,是評估系統性能的直接體現。常見的吞吐量指標有:
- QPS(Queries Per Second):每秒查詢數,用于衡量系統每秒能處理的查詢數量。
- TPS(Transactions Per Second):每秒事務數,用于衡量系統每秒能處理的事務數量。
- BPS(Bits Per Second):每秒比特數,用于衡量系統每秒處理的數據量。
響應時間是指系統對請求或輸入的響應所需時間,它直接影響用戶體驗,尤其對時延敏感的業務尤為重要。
完成時間則指系統真正完成一個請求或處理所需的總時間。任務并行(或任務分布式)模式的一個主要目的就是縮短整個任務的完成時間,尤其是在需要處理海量數據或大規模任務時,用戶對完成時間的感受尤為顯著。
資源占用(Resource Usage)
資源占用指的是系統正常運行所需的硬件資源,如CPU、內存和硬盤等。當系統在沒有任何負載時的資源占用被稱為空載資源占用,這反映了系統自身的資源使用情況。對于同樣的功能,空載資源占用越少,說明系統設計越優秀,更容易受到用戶的青睞。另一方面,當系統在滿負載狀態下的資源占用稱為滿載資源占用,它展示了系統全力運行時所需的資源量,體現了系統的處理能力。在相同硬件配置下,運行的業務越多而資源占用越少,表明該系統的設計更加出色。
可用性(Availability)
可用性通常指的是系統在面對各種異常時能否正確提供服務的能力,是分布式系統的重要指標之一,反映了系統的魯棒性和容錯能力。可用性可以通過系統停止服務的時間與總運行時間的比值來衡量。例如,如果一個網站的總運行時間為24小時,而在這段時間內出現故障導致不可用的時間為4小時,則其可用性為4/24=0.167,即約16.7%的時間不可用,或者83.3%的時間可用。此外,系統的可用性還可以通過某個功能的失敗次數與總請求次數的比值來衡量,比如在1000次網站請求中有10次失敗,那么可用性為99%。
可擴展性(Scalability)
可擴展性指的是分布式系統通過增加集群機器規模來提升系統性能(如吞吐量、響應時間和完成時間)、存儲容量和計算能力的特性,這也是分布式系統的一大優勢。其設計初衷在于利用多機集群的能力來解決單機無法應對的問題。完成某一具體任務所需的機器數量,即集群規模,取決于單個機器的性能和任務需求。
隨著業務需求的增加,除了通過升級單機的性能進行垂直(縱向)擴展外,另一種方式是通過增加機器數量進行水平(橫向)擴展。垂直擴展指的是增強單機的硬件能力,如增加CPU或內存,而水平擴展則是增加計算機的數量。理想的分布式系統追求“線性擴展性”,即某一指標能夠隨著集群中機器數量的增加而呈線性增長。
衡量系統可擴展性的常見指標是加速比(Speedup),即系統擴展后相對于擴展前的性能提升。如果擴展的目標是提高系統的吞吐量,可以用擴展后的吞吐量與擴展前的吞吐量之比來衡量。如果目標是縮短完成時間,則可以用擴展前的完成時間與擴展后的完成時間之比進行評估。