一張圖總結(jié)系統(tǒng)設(shè)計(jì)中的33個(gè)黃金法則

系統(tǒng)設(shè)計(jì)很復(fù)雜,它需要設(shè)計(jì)者有深厚的計(jì)算機(jī)知識(shí)和專業(yè)知識(shí),沒有一種通用的設(shè)計(jì)可以適應(yīng)所有業(yè)務(wù)場(chǎng)景。盡管如此,還是有一些比較通用的規(guī)則可以供你設(shè)計(jì)系統(tǒng)時(shí)參考,也能幫助你在面試中擺脫困境。
1. 對(duì)于數(shù)據(jù)密集型系統(tǒng) — 考慮使用緩存。2. 對(duì)于寫入量大的系統(tǒng) — 使用消息隊(duì)列進(jìn)行異步處理
3. 對(duì)于低延遲要求 — 考慮使用緩存和 CDN。
4. 需要??原子性、??一致性、??隔離性、??耐用性兼容數(shù)據(jù)庫 — 選擇 RDBMS/SQL 數(shù)據(jù)庫。
5.對(duì)于非結(jié)構(gòu)化數(shù)據(jù)——可以選擇NoSQL數(shù)據(jù)庫。
6. 擁有復(fù)雜的數(shù)據(jù)(視頻、圖像、文件)——選擇 Blob/對(duì)象存儲(chǔ)。
7. 復(fù)雜的計(jì)算——使用消息隊(duì)列和緩存。
8. 海量數(shù)據(jù)搜索——考慮搜索索引、嘗試搜索引擎。
9. 擴(kuò)展 SQL 數(shù)據(jù)庫 — 實(shí)施數(shù)據(jù)庫分片。
10. 高可用性、性能和吞吐量 — 使用負(fù)載均衡器。
11. 全球數(shù)據(jù)交付——考慮使用 CDN。
12.圖形數(shù)據(jù)(具有節(jié)點(diǎn)、邊和關(guān)系的數(shù)據(jù))——利用圖形數(shù)據(jù)庫。
13. 擴(kuò)展各種組件——實(shí)現(xiàn)水平擴(kuò)展。
14. 高性能數(shù)據(jù)庫查詢——使用數(shù)據(jù)庫索引。
15.批量作業(yè)處理——考慮批處理和消息隊(duì)列。
16. 服務(wù)器負(fù)載管理和防止 DOS 攻擊 - 使用速率限制器。
17. 微服務(wù)架構(gòu)——使用 API 網(wǎng)關(guān)。
18. 針對(duì)單點(diǎn)故障——實(shí)施冗余。
19.為了容錯(cuò)性和持久性——實(shí)施數(shù)據(jù)復(fù)制。
20. 對(duì)于用戶到用戶的快速通信 — 使用 Websockets。
21.分布式系統(tǒng)中的故障檢測(cè)——實(shí)現(xiàn)心跳。
22. 數(shù)據(jù)完整性——使用校驗(yàn)和算法。
23. 高效的服務(wù)器擴(kuò)展——一致性哈希。
24. 去中心化數(shù)據(jù)傳輸——考慮 Gossip 協(xié)議。
25. 基于位置的功能 — 使用四叉樹、Geohash 等。
26. 避免特定的技術(shù)名稱 — 使用通用術(shù)語。
27. 高可用性和一致性的權(quán)衡——最終一致性。
28. 對(duì)于IP解析和域名查詢——DNS。
29. 處理網(wǎng)絡(luò)請(qǐng)求中的大數(shù)據(jù)——實(shí)施分頁。
30. 緩存刪除策略 — 首選 LRU(最近最少使用)緩存。
31. 處理流量高峰:實(shí)現(xiàn)自動(dòng)擴(kuò)展以動(dòng)態(tài)管理資源
32. 審計(jì)跟蹤 — 考慮使用數(shù)據(jù)湖
33. 處理高并發(fā)連接 — 使用連接池并考慮使用 Protobuf 來最小化數(shù)據(jù)
推薦閱讀:
完全整理 | 365篇高質(zhì)技術(shù)文章目錄整理
專注服務(wù)器后臺(tái)技術(shù)棧知識(shí)總結(jié)分享
歡迎關(guān)注交流共同進(jìn)步
碼農(nóng)有道 coding
碼農(nóng)有道,為您提供通俗易懂的技術(shù)文章,讓技術(shù)變得更簡(jiǎn)單!
評(píng)論
圖片
表情
