動機

這次是設計流程與估算

設計系統,要先做出評估與假設

分成user與system

user部分要問,誰會用、怎麼用、多少人

對system而言,會先收到request,之後變成data,之後要io

所以system部分要問,做什麼、input/output是、每秒處理多少request、希望處理多少資料、預期的讀、寫比例

系統設計流程

  1. 描述使用的場景、限制及假設
  • user
    • 誰會使用這個系統
    • 他們怎麼使用系統
    • 有多少使用者
  • system
    • 系統的作用是什麼
    • 系統的輸入和輸出是什麼
    • 輸入
      • 希望每秒處理多少請求
        • 預期希望處理多少資料
          • 預期的讀、寫比例為何
  • user*N == req*N ==> (system :: read/write) == res ==> user
  1. 建立一個高階的設計
  • 畫出主要的元件與其相互連接情況
  1. 設計核心的元件
  • 對每一個核心元件進行深入的分析 (要用什麼實作, SQL/NoSQL, schema, …)
  1. 評估你的設計
  • 確認及指出你的設計的瓶頸與限制

估算

  • Read 1 MB sequentially from memory: 250 us
  • Read 1 MB sequentially from SSD: 1,000 us,1 ms (~1GB/sec SSD, 4X memory)
  • Read 1 MB sequentially from 1 Gbps: 10,000 us,10 ms (40x memory, 10X SSD)
  • Read 1 MB sequentially from disk: 30,000 us,30 ms (120x memory, 30X SSD)