☕ NEW! 完成新手任務即可參加抽獎!LINE 星巴克禮券等你拿,名額有限!        🎉 推廣活動:邀請好友註冊 DevLearn,累積推薦抽 LINE 星巴克禮券! 活動詳情 →        🔥 活動期間 2026/4/1 - 5/31 |已有 0 人參加       
concept-arch 進階

系統設計基礎:如何思考架構?

設計的思考框架

1. 需求分析:系統要做什麼?(功能需求 + 非功能需求)
2. 估算規模:多少使用者?多少資料?QPS 多少?
3. 定義 API:對外提供什麼介面?
4. 資料模型:資料怎麼存?關聯怎麼設計?
5. 核心架構:高層設計圖
6. 細節深入:瓶頸在哪?怎麼優化?

擴展策略

垂直擴展(Scale Up)

CPU 不夠 → 換更強的 CPU
記憶體不夠 → 加更多 RAM
↓
簡單但有天花板(單台機器有極限)

水平擴展(Scale Out)

一台不夠 → 加更多台
→ 需要負載平衡(Load Balancer)
→ 需要 Session 共享(Redis)
→ 需要資料庫複製(Read Replica)
↓
理論上無限擴展,但複雜度高

常見架構元件

使用者
  ↓
CDN(靜態資源快取)
  ↓
Load Balancer(負載平衡)
  ↓
Web Server × N(水平擴展)
  ↓       ↓
Redis    Database
(快取)   (主從複製)
  ↓
Message Queue(非同步處理)
  ↓
Worker Service(背景任務)

資料庫擴展

讀寫分離:
Master(寫入)→ 複製到 → Replica 1, 2, 3(讀取)
→ 適合讀多寫少的應用

分片(Sharding):
使用者 1-100萬 → DB Shard 1
使用者 100萬-200萬 → DB Shard 2
→ 適合資料量極大的場景
→ 但跨 Shard 查詢很困難

NoSQL:
MongoDB(文件型)、Redis(鍵值型)、Cassandra(列式)
→ 適合特定場景,不是替代 SQL

CAP 定理

分散式系統只能同時滿足三個中的兩個:
C — Consistency(一致性):所有節點看到的資料一樣
A — Availability(可用性):每個請求都能得到回應
P — Partition Tolerance(分區容錯):網路分區時系統繼續運作

實務上 P 必須要有(網路一定會出問題),所以選擇:
CP:保證一致性,犧牲可用性(如:銀行系統)
AP:保證可用性,犧牲一致性(如:社群平台的按讚數)

重點不是背這些,而是能分析特定場景的需求,選擇合適的架構。

💡 大家的想法 · 0

載入中...
💬 即時聊天室 🟢 0 人在線
😀 😎 🤓 💻 🎮 🎸 🔥
➕ 新問題
📋 我的工單
💬 LINE 社群
🔒
需要註冊才能使用此功能
註冊帳號即可解鎖測驗、遊戲、簽到、筆記下載等所有功能,完全免費!
免費註冊