🎯 什麼情境該想到我

當你要把資料/請求分散到多台節點(快取、分片 DB),又希望「增減節點時不要大搬風」時。

⚙️ 怎麼用

  1. 問題:用「hash(key) % N」分配,一旦 N 改變(加/減機器),幾乎所有 key 都要重新對應 → 快取全失效、大量資料搬移。
  2. 一致性雜湊:把節點與 key 都雜湊到一個環(0 ~ 2³²)上;key 順時針找到第一個節點。
  3. 增減節點時,只影響環上相鄰的一小段 key,其餘不動 → 資料搬移量最小化。
  4. 虛擬節點(vnodes):每個實體節點在環上放多個虛擬點,讓分佈更均勻、避免熱點。

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

  • 沒有虛擬節點時容易分佈不均、產生熱點;務必用 vnodes。

🔗 相關工具

  • 工具-資料分區 —— 上位問題:先確認要不要分區、按什麼鍵分,一致性雜湊只是其中一種分配策略
  • 工具-反熵與Gossip傳播 —— 配套:環上節點增減後,副本之間怎麼把狀態補齊、趨於一致
  • 工具-系統設計思考框架 —— 面試或設計時的上層流程,一致性雜湊通常是其中「資料分片」那一步的答案