架構設計(九):估算
作者:Grey
原文地址:
估算在系統設計中非常重要,這決定了你的設計是否可以滿足要求,要實現比較靠譜的估算,就需要對如下幾個概念熟練掌握
第一個概念:二的冪
儘管在處理分散式系統時,資料量可能是巨大的,但計算都可以歸結為基礎知識。為了獲得正確的計算結果,關鍵是要知道使用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%或以上。