動機
這次是設計流程與估算
設計系統,要先做出評估與假設
分成user與system
user部分要問,誰會用、怎麼用、多少人
對system而言,會先收到request,之後變成data,之後要io
所以system部分要問,做什麼、input/output是、每秒處理多少request、希望處理多少資料、預期的讀、寫比例
系統設計流程
- 描述使用的場景、限制及假設
- user
- 誰會使用這個系統
- 他們怎麼使用系統
- 有多少使用者
- system
- 系統的作用是什麼
- 系統的輸入和輸出是什麼
- 輸入
- 希望每秒處理多少請求
- 預期希望處理多少資料
- 預期的讀、寫比例為何
- 預期希望處理多少資料
- 希望每秒處理多少請求
user*N == req*N ==> (system :: read/write) == res ==> user
- 建立一個高階的設計
- 畫出主要的元件與其相互連接情況
- 設計核心的元件
- 對每一個核心元件進行深入的分析 (要用什麼實作, SQL/NoSQL, schema, …)
- 評估你的設計
- 確認及指出你的設計的瓶頸與限制
估算
- 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)