本篇整理了分散式系統中反覆出現的二十種設計模式,這些模式是建構可靠、可擴展系統的基礎元件。

模式分類#

日誌與恢復#

  • 預寫式日誌(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) — 防止舊領導者繼續操作造成資料損毀

重點: 這些模式並非孤立存在,而是經常組合使用。例如,預寫式日誌搭配分段日誌與高水位標記,共同構成可靠的資料複製機制。理解模式之間的關聯,是掌握分散式系統設計的關鍵。