什麼是分散式的「三圍」?你知道嗎?
在分散式系統中,幾個關鍵的衡量指標包括效能、資源、可用性和可擴展性。這些指標至關重要,因為效能直接影響系統的反應速度和吞吐量;資源衡量系統對運算和儲存資源的有效利用;可用性確保系統在故障時仍能正常運行,以滿足使用者需求;而可擴展性則關係到系統在面對增加的負荷時的適應能力。這些指標共同決定了分散式系統的整體效率和可靠性。
分散式系統的指標
分散式技術的起源表明,分散式系統的出現旨在透過廉價的普通機器來解決單一電腦在處理複雜、大規模資料和任務時所面臨的效能瓶頸、資源不足以及可用性和可擴展性問題。換句話說,分散式系統的目標是利用更多的機器來處理更大量的資料和更複雜的任務。因此,效能、資源、可用性和可擴展性成為了分散式系統的重要指標,可以說它們構成了分散式系統的核心要素。
性能(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),也就是係統擴展後相對於擴充前的效能提升。如果擴展的目標是提高系統的吞吐量,可以用擴展後的吞吐量與擴展前的吞吐量之比來衡量。如果目標是縮短完成時間,則可以用擴展前的完成時間與擴展後的完成時間之比進行評估。