如何設計一個系統
#第一步:描述使用場景,限制和假設(推薦學習:PHP影片教學)
把所有需要的東西聚集在一起,審視問題。不停的提問,以至於我們可以明確地使用場景和約束。討論假設。
誰會使用它?
他們會怎麼使用它?
有多少用戶?
系統的作用是什麼?
系統的輸入輸出分別是什麼?
我們希望處理多少資料?
我們希望的讀寫比率?
第二步:創造一個高階的設計
使用所有重要的元件來描繪出一個高層級的設計
畫出主要的元件與連結
證明你的想法
第三個步驟:設計核心元件
對每一個核心元件進行詳細深入的分析。舉例來說,如果你被問到設計一個url 縮寫服務,開始討論:
產生並儲存一個完整url 的hash
MD5 和Base62
#Hash 碰撞
SQL 還是NoSQL
資料庫模型
將一個hashed url 翻譯成完整的url
資料庫尋找
API 與物件導向設計
第四步:度量設計
確認和處理瓶頸以及一些限制。
舉例來說就是你需要下面的這些來完成拓展性的議題嗎?
負載平衡
水平拓展
快取
#資料庫分片
論述可能的解決方案與代價。每件事情都需要取捨。
可以使用可拓展系統的設計原則來處理瓶頸。
預估計算量
你或許會被要求透過手算來進行一些估算。
涉及的附錄涉及到的是下面的這些資源:
使用預估計算量
2 的次方表
每個程式設計師都應該知道的延遲數
更多PHP相關技術文章,請造訪PHP圖文教學欄位進行學習!
以上是如何設計系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!