博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Round Robin算法概述
阅读量:6120 次
发布时间:2019-06-21

本文共 603 字,大约阅读时间需要 2 分钟。

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缺乏扩展灵活性的根本原因。

转载地址:http://zmmka.baihongyu.com/

你可能感兴趣的文章
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>