博客 / 詳情

返回

ByteByteGo學習筆記:系統設計中的估算技巧

在系統設計中,估算系統容量和性能需求是一項至關重要的技能。

一、二次冪(Power of Two)

在處理分佈式系統時,數據量可能會變得非常龐大。為了進行正確的計算,瞭解數據量單位的冪次是非常關鍵的。一個ASCII字符佔用1字節(8位),下面是一些常見的數據量單位:

  • 2^10(1千):1千字節(KB)
  • 2^20(1百萬):1兆字節(MB)
  • 2^30(10億):1吉字節(GB)
  • 2^40(1萬億):1太字節(TB)
  • 2^50(1百萬億):1拍字節(PB)

二、程序員應知的延遲數字

瞭解不同計算機操作的延遲時間對於系統設計至關重要。以下是一些常見的操作及其對應的時間:

  • L1緩存引用:0.5 ns
  • 分支錯誤預測:5 ns
  • L2緩存引用:7 ns
  • 互斥鎖/解鎖:100 ns
  • 主內存引用:100 ns
  • 使用Zippy壓縮1KB:10,000 ns = 10 µs
  • 通過1 Gbps網絡發送2KB:20,000 ns = 20 µs
  • 從內存中順序讀取1MB:250,000 ns = 250 µs
  • 在同一數據中心的往返時間:500,000 ns = 500 µs
  • 磁盤尋道:10,000,000 ns = 10 ms
  • 從網絡中順序讀取1MB:10,000,000 ns = 10 ms
  • 從磁盤中順序讀取1MB:30,000,000 ns = 30 ms
  • 從加利福尼亞發送數據包到荷蘭:150,000,000 ns = 150 ms

谷歌的一位軟件工程師開發了一個工具,將這些數據可視化,有助於理解

image

三、可用性數字

高可用性是指系統在期望的時間內持續運行的能力。高可用性通常以百分比表示,100%表示系統無停機時間。大多數服務的可用性在99%到100%之間。
服務水平協議(SLA)是服務提供商與客户之間的正式協議,定義了服務提供商將交付的服務水平。雲服務提供商如Amazon、Google和Microsoft通常將SLA設定為99.9%或更高。可用性通常以九的個數來衡量,九的個數越多,系統停機時間越少。
以下是一些常見的可用性百分比及其對應的停機時間:

  • 99%:每年3.65天停機
  • 99.9%:每年8.76小時停機
  • 99.99%:每年52.56分鐘停機
  • 99.999%:每年5.26分鐘停機
  • 99.9999%:每年31.56秒停機

    四、估算Twitter的容量和存儲需求

    假設:

  • 每月有3億活躍用户。
  • 50%的用户每天使用Twitter。
  • 用户平均每天發佈2條推文
  • 10%的推文包含媒體
  • 數據保存5年

估算:

  • 每秒查詢數(QPS):

    • 每日活躍用户(DAU)= 3億 * 50% = 1.5億
    • 推文QPS = 1.5億 * 2條推文/24小時/3600秒 ≈ 3500
    • 峯值QPS = 2 * QPS = 7000
  • 平均推文大小:

    • tweet_id 64字節
    • 文本140字節
    • 媒體1MB
  • 媒體存儲:1.5億 2 10% * 1MB = 30 TB每天
  • 5年媒體存儲:30 TB 365 5 = 55 PB

參考博文
ByteByteGo

user avatar fedl 頭像 yaha_5f66c6f02983e 頭像 phytium_developers 頭像 software_arch 頭像 chuck1sn 頭像
5 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.