接着上一章數據路由分片抽象模型,本節介紹一種此抽象模型的實現方案-round robin(哈希取模法)
假設有K臺物理機 根據以下方法就可以實現數據分片
H(key) = hash(key)mod K
物理機編號爲0到K-1 根據以上哈希方法 可以把數據分配到每臺機器上,取數據時也是使用相同的方法。
但是如果新增一臺物理機,哈希函數就變成以下形式
H(key)=hash(key)mode(K+1)
之前存儲好的數據和物理機之間的映射關係完全被打亂,所有數據需要重新分配,對於在線存儲系統缺乏靈活擴展性。
對照上節的數據分片路由抽象模型可以看出,哈希取模法是把物理機和數據分片兩個功能合二爲一了,每臺物理機對應一個數據分片,key-patition,partition-machine合爲一體,用用一個hash函數來承擔,這樣就造成了,物理機和hash函數的嚴重耦合,故缺乏靈活擴展性