Round Robin演算法概述

weixin_33806914發表於2016-11-26

Round Robin就是俗稱的雜湊取模法,是實際中非常常用的資料分片方法。假設有K臺物理機,通過以下雜湊函式即可實現資料分片:
H(key)=hash(key)mod K
對物理機進行編號從0到K-1,根據上述雜湊函式,對於以key為主鍵的某個記錄,H(key)的數值即是儲存該資料的物理機編號,通過這種方式,就將全部資料分配到K臺物理機上,在查詢某條記錄時,也使用同樣的雜湊函式就可以找到儲存相應資訊的物理機。
Round Robin的優點是實現起來非常簡單,但是缺乏靈活性,比如新增一臺物理機到分散式儲存系統,那麼雜湊函式就變成了:
H(key)=hash(key)mod(K+1)
這樣之前已經分配的所有資料與儲存該資料的物理機之間的對映關係被完全打亂,所以只能將所有資料重新按照改變後的雜湊函式再次分配一遍,對於線上儲存系統很明顯這是缺乏擴充套件靈活性的。
為什麼Round Robin如此缺乏擴充套件靈活性呢?Round Robin其實是將物理機和資料分片兩個功能點合二為一了,即每臺物理機對應一個資料分片,這樣key-partition對映和partition-machine對映也就兩位一體,都由同一個雜湊函式來承擔,由此造成的後果是機器個數K作為引數出現在對映函式中,造成了機器個數和對映函式的緊密耦合,只要機器個數變動,雜湊函式也會跟著變化,這是Round Robin缺乏擴充套件靈活性的根本原因。

相關文章