本篇整理了分散式系統中反覆出現的二十種設計模式,這些模式是建構可靠、可擴展系統的基礎元件。
模式分類#
日誌與恢復#
- 預寫式日誌(Write-Ahead Log) — 確保持久性與資料完整性的基礎機制
- 分段日誌(Segmented Log) — 將日誌拆分為小段以利管理
- 高水位標記(High-Water Mark) — 追蹤已安全複製的日誌進度
資料結構與分散式雜湊#
- 布隆過濾器(Bloom Filter) — 以極低空間快速判斷元素是否可能存在
- 一致性雜湊(Consistent Hashing) — 最小化節點變動時的資料遷移
- 梅克爾樹(Merkle Tree) — 高效比對副本間的資料差異
故障偵測#
- 心跳機制(Heartbeat) — 定期發送存活信號以偵測節點故障
- 八卦協定(Gossip Protocol) — 去中心化的叢集狀態傳播機制
- Phi 累積故障偵測(Phi Accrual Failure Detection) — 自適應的故障判定演算法
共識與一致性#
- 法定人數(Quorum) — 確保分散式操作一致性的最低節點數
- 領導者與追隨者(Leader and Follower) — 單一領導者負責協調與複製
- CAP 定理 — 一致性、可用性、分區容錯性的不可能三角
- PACELC 定理 — CAP 的延伸,加入延遲與一致性的取捨
資料完整性與版本控制#
- 校驗和(Checksum) — 偵測資料傳輸或儲存中的損毀
- 向量時鐘(Vector Clocks) — 追蹤分散式系統中的因果關係
租約與資料修復#
- 租約(Lease) — 有時間限制的資源存取權
- 提示移交(Hinted Handoff) — 為故障節點暫存未完成的寫入
- 讀取修復(Read Repair) — 在讀取時修正過時的副本
腦裂與防護#
- 腦裂(Split Brain) — 偵測並處理多個活躍領導者的問題
- 隔離(Fencing) — 防止舊領導者繼續操作造成資料損毀
重點: 這些模式並非孤立存在,而是經常組合使用。例如,預寫式日誌搭配分段日誌與高水位標記,共同構成可靠的資料複製機制。理解模式之間的關聯,是掌握分散式系統設計的關鍵。