架構設計(九):估算

2022-12-26 06:01:14

架構設計(九):估算

作者:Grey

原文地址:

部落格園:架構設計(九):估算

CSDN:架構設計(九):估算

估算在系統設計中非常重要,這決定了你的設計是否可以滿足要求,要實現比較靠譜的估算,就需要對如下幾個概念熟練掌握

第一個概念:二的冪

儘管在處理分散式系統時,資料量可能是巨大的,但計算都可以歸結為基礎知識。為了獲得正確的計算結果,關鍵是要知道使用2的冪的資料量單位。一個位元組是一個8位元的序列。一個ASCII字元使用一個位元組的記憶體(8位元)。可參考如下表格

次冪 近似值 名稱
10 1000 1KB
20 100萬 1MB
30 10億 1GB
40 1萬億 1TB
50 1千萬億 1PB

第二個概念:關於延時指標的常見場景

注:以下指標說明來自J. Dean.Google Pro Tip: Use Back-Of-The-Envelope-Calculations To Choose The Best Design ,雖然是基於2010年的狀況,但是目前這些指標還是有一定的參考價值。

操作 參考時間量級
L1快取記憶體 0.5 ns
分支錯誤預測 5 ns
L2快取記憶體 7 ns
互斥器鎖定/解鎖 100 ns
主記憶體 100 ns
用Zippy壓縮1K位元組 10,000 ns
通過1 Gbps網路傳送2K位元組 20,000 ns
從記憶體中連續讀取1MB 250,000 ns
在同一資料中心內的資料往返 500,000 ns
磁碟搜尋 10,000,000 ns
從網路中連續讀取1MB 10,000,000 ns
從磁碟順序讀取1MB 30,000,000 ns

上述場景也有一個視覺化的工具可以檢視,見Latency Numbers Every Programmer Should Know
目前展示到了 2020 年。

通過分析上述數位,可以得到以下結論。

  • 記憶體很快,但磁碟很慢。

  • 如果可能的話,要避免磁碟尋道。

  • 簡單的壓縮演演算法是快速的。

  • 如果可能的話,在通過網際網路傳送資料之前要進行壓縮。

  • 資料中心通常在不同地區,在它們之間傳送資料需要時間

第三個需要了解的概念是:系統可用時間百分比

高可用性是指一個系統在一個理想的長時間內持續執行的能力。高可用性是以百分比來衡量的,100%意味著一個服務沒有停機時間。大多數服務在99%和100%之間。服務水平協定(SLA)是服務提供者的一個常用術語。這是你(服務提供商)和你的客戶之間的協定,這個協定正式定義了你的服務將提供的正常執行時間水平,正常執行時間傳統上是以九為單位衡量。九位數越多,越好。如表2-3所示,九位數與預期的系統停機時間相關。

可用性 平均每天停機時間 平均每年停機時間
99% 14.40分鐘 3.65天
99.9% 1.44分鐘 8.77小時
99.99% 8.64秒 52.6分鐘
99.999% 864毫秒 5.26分鐘
99.9999% 86.4毫秒 31.56秒

雲供應商亞馬遜谷歌微軟將其SLA設定為99.9%或以上。

參考資料

System Design Interview