分散式系統發生網路分區時,只能在「一致性」與「可用性」間二選一。CAP 講的是這個取捨,但常被誤用——它只在分區發生時才逼你選。
🧠 Core Ideas
TIP
CAP 不是「三選二」。Partition tolerance 在分散式系統是必選(網路一定會出問題),真正的選擇是分區時要 C 還是 A。
- CP:分區時拒絕服務以保證一致(如 ZooKeeper、etcd)。
- AP:分區時繼續服務但可能讀到舊資料(如 Dynamo 風格 KV)。
⚖️ 更實用的框架:PACELC
PACELC — 把「沒分區時」也納入
- 若分區 (P):在 Availability 與 Consistency 間選。
- 否則 (E, Else):在 Latency 與 Consistency 間選。
多數系統其實是「平時也在拿一致性換延遲」,PACELC 比 CAP 更貼近真實決策。 例:Dynamo = PA/EL(都偏可用與低延遲);傳統 RDBMS = PC/EC。
🔑 Takeaways
- 分區容忍是前提;CAP 真正逼你在分區時選 C 或 A。
- 用 PACELC 思考更完整:沒分區時也在拿一致性換延遲。
- 面試講選型時,明確說「這個元件我選 CP/AP,因為……」。
No notes yet — jot your takeaways or Q&A here.