虛擬節點的作用:只放 1 個實體節點對 1 個環座標,容易讓少數節點各自負責過長的環弧段 (負載不均);每個實體節點放多個 vnode,等於把它的負責範圍拆成多段、分散在環上不同位置, 統計上更容易讓各節點負責的鍵數趨於平均。
順時針規則:鍵一律沿順時針方向找「第一個角度 ≥ 自己座標」的 vnode 為歸屬,環是首尾 相接的圓,超過環上最大角度會折返取角度最小的 vnode(本頁 ceilingVnode 以排序陣列 + 二分搜尋 實作,對照 Java TreeMap.ceilingEntry/firstEntry)。
教學雜湊非生產:h(s) = Σ字元碼×31^i mod 360 只是讓環座標落在直觀的「時鐘刻度」 0..359 度之教學設計,不具生產雜湊函式所需的雪崩效應與抗碰撞性,正式系統應改用 MD5/MurmurHash/SHA-1 等分佈更均勻、抗碰撞的雜湊函式再取模至環空間。
360 度教學空間:本頁環空間固定為 360 度,純粹取「時鐘刻度」的直覺對應,與實際部署 的雜湊環大小(生產系統常見 2^32 或更大)無關,教學規模下才看得出「歸屬邊隨環座標分佈」的 視覺直觀,看不出真正生產環境的雜湊分佈密度。
歸屬表(assignments,逐鍵目前已知之歸屬)
| 鍵 | hash | 歸屬 vnode | 歸屬節點 | 已搬移(加 D 後) |
|---|
搬移對照表(一致性雜湊 vs 取模雜湊,3→4 節點)
| 雜湊方式 | 搬移鍵數 | 搬移鍵集合 |
|---|