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缺乏擴充套件靈活性的根本原因。
Round Robin演算法概述
相關文章
- Round-robin 演算法演算法
- Redhat Linux bind round-robin配置的探討RedhatLinux
- 現代分散式資料庫 資料分佈方式 Round-Robin、Range、List 和 Hash分散式資料庫
- A*搜尋演算法概述演算法
- 國密演算法概述演算法
- 目標跟蹤演算法概述演算法
- 梯度下降優化演算法概述梯度優化演算法
- 演算法學習筆記(1)- 演算法概述演算法筆記
- 作業系統綜合題之“採用時間片輪轉排程演算法(Round-Robin,RR)執行5個程序,P1程序週轉時間為多少”作業系統演算法
- 資料結構與演算法——概述資料結構演算法
- 點雲匹配和ICP演算法概述演算法
- JVM之垃圾回收(1-概述+演算法)JVM演算法
- PageRank演算法概述與Python實現演算法Python
- 3D視覺演算法初學概述3D視覺演算法
- 機器學習 第4篇:sklearn 最鄰近演算法概述機器學習演算法
- #排序演算法#【1】概述、氣泡排序、選擇排序排序演算法
- 13 種機器學習演算法概述(附 Python、R 程式碼)機器學習演算法Python
- NLP概述和文字自動分類演算法詳解演算法
- 好程式設計師Java培訓分享演算法系列之演算法概述程式設計師Java演算法
- GJ Round
- nyoj 2354 同時也是 codeforces Robin Hood(二分)
- 深度學習-Tensorflow2.2-梯度下降演算法概述-03深度學習梯度演算法
- 好程式設計師Java培訓分享演算法入門到精通之-演算法概述程式設計師Java演算法
- 概述
- openssl之EVP系列之2---對稱加密演算法概述 (轉)加密演算法
- BZOJ4276 : [ONTAK2015]Bajtman i Okrągły RobinOKR
- 萬字長文概述單目3D目標檢測演算法3D演算法
- JavaScript Math.round()JavaScript
- Codeforces Round #174
- Codeforces Round #170
- Codeforces Round 955
- Edu Round 170 ReviewView
- CF Pinely Round 4
- JVM 概述JVM
- Java 概述Java
- mongodb 概述MongoDB
- Java概述Java
- TCP 概述TCP