后端開發(fā)-系統(tǒng)設計開放性試題思路

? 之前在面試頭條后端開發(fā)崗位,碰到了一個開放型問題:設計一個短域名系統(tǒng)。leetcode有該方案的討論,側重于算法實現(xiàn),本文主要討論整體網(wǎng)站設計。

? 由于是開發(fā)性試題,一般是不提示,不限制,因此清晰的思路尤為重要。對于系統(tǒng)設計,個人工作經(jīng)驗總結是,抓住數(shù)據(jù)流向這條線來解答。一般分為數(shù)據(jù)源(數(shù)據(jù)怎么來,規(guī)模多大),數(shù)據(jù)處理邏輯(數(shù)據(jù)進入系統(tǒng)如何處理),數(shù)據(jù)存儲方案等三步來設計。

  • a. 數(shù)據(jù)源

    • 就本題,數(shù)據(jù)通過接口調(diào)用進入后端系統(tǒng),域名數(shù)據(jù)量很大,比較分散,系統(tǒng)QPS大時需要通過 DNS輪詢 -> LVS集群 -> Nginx -> 后端服務。
  • b. 數(shù)據(jù)處理

    • 長域名 -> 短域名,短域名 -> 長域名。長 -> 短,采用Hash進行映射(需要解決Hash沖突問題)。 短 -> 長,由于Hash不可逆,所以需要用數(shù)據(jù)庫存儲映射關系。
  • c. 數(shù)據(jù)存儲

    • 由于數(shù)據(jù)量大,查詢?yōu)橹鳎钥梢杂胢ongo集群存儲。
  • d. 其它

    • 系統(tǒng)設計通用設計,包括權限分配,日志監(jiān)控,代碼規(guī)范,模塊解耦等。
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容