🎯 什麼情境該想到我
當你要把資料/請求分散到多台節點(快取、分片 DB),又希望「增減節點時不要大搬風」時。
⚙️ 怎麼用
- 問題:用「hash(key) % N」分配,一旦 N 改變(加/減機器),幾乎所有 key 都要重新對應 → 快取全失效、大量資料搬移。
- 一致性雜湊:把節點與 key 都雜湊到一個環(0 ~ 2³²)上;key 順時針找到第一個節點。
- 增減節點時,只影響環上相鄰的一小段 key,其餘不動 → 資料搬移量最小化。
- 虛擬節點(vnodes):每個實體節點在環上放多個虛擬點,讓分佈更均勻、避免熱點。
🧪 我實際套用的紀錄
- 2026-07-15:(待填)
⚠️ 注意
- 沒有虛擬節點時容易分佈不均、產生熱點;務必用 vnodes。
🔗 相關工具
- 工具-資料分區 —— 上位問題:先確認要不要分區、按什麼鍵分,一致性雜湊只是其中一種分配策略
- 工具-反熵與Gossip傳播 —— 配套:環上節點增減後,副本之間怎麼把狀態補齊、趨於一致
- 工具-系統設計思考框架 —— 面試或設計時的上層流程,一致性雜湊通常是其中「資料分片」那一步的答案