原文: Consistent Hashing with Bounded Loads

在實作網路服務的過程中, Load Balancer 是最常被運用在分散流量到適當的伺服器之中. 而其中就是使用 Consistent Hashing 的演算法實現. 在使用 Consistent Hashing 的過程中,最被人在乎的就是兩個主要的問題

  1. 分布的均勻度 (uniformity)
  2. 當發生了新增與刪除伺服器的時候,需要有多少的移動次數.

Google 當然已經把這個問題解決,並且已經放在他們的 Google Cloud Pub/Sub 服務之中. 也在去年的八月將論文發表出來.

( Google 很擅長將神之技術寫成論文後,然後放在 GCP 裡面 XDD)

沒想到論文發表三個月後, Vimeo 的工程師將論文看懂後把相關演算法實現在 haproxy (這.. 應該不用解釋.. 就是最基本的開源 load balancer ) 之中,並且在 Vimeo 上線了. 並且將相關過程寫成這篇部落格….

有興趣的可以一起來鑽研這篇論文…. 不知道 Consistent Hashing 是什麼… 可以看看小弟當初練手用的 Golang Consistent Hashing

或是可以看看這堆 Viemo 工程師將它實現在 HAProxy 的 commit

[更新 2017/06/23]

後來這位工程師有機會跟 GDE 分享他的經驗,在這裡

這裡有另外一位,把相同概念完成到 Golang


Buy Me A Coffee

Evan

Attitude is everything