关于Glusterfs为何采用哈希分布式算法
2013-12-22 22:19
417 查看
最近同事问过我这样一个问题:若要实现文件均匀分布,用最简单的线性哈希算法--取模运算(根据文件名获取整数,然后根据节点数取模)就可以将文件均匀分布,为何Glusterfs为何还要用这么复杂的哈希算法实现文件的分布式存储呢?
关于这么问题,要从负载均衡说起吧。就拿分布式存储来说,简单的取模运算也可以将文件均匀分布在各个节点之中。但若节点数改变,节点增删的话,这种方法就不可取了,节点增删,文件的取模全部发生变化,导致各个节点上的文件需要全部迁移。这就是Glusterfs要采用哈希分布式存储而不直接采用取模的原因。
为每个节点均匀划分哈希区间,根据文件名计算哈希值,将文件存储到哈希值所在哈希区间对应的存储节点上。若节点有增删,每个节点的哈希区间会增大或变小。只是部分文件需要迁移,这就大大减少了文件的移动。
哈希均衡广泛应用于P2P网络、分布式存储等领域,上述只是Glusterfs采用该算法的一个原因,更多负载均衡的内容,请参照http://baike.baidu.com/link?url=NgfVb_i4nsdkZYKODM8R_VHOHDMk9aelogOANMkx7f6-Pl-kwxgEzYi0Fg-CdRQw
(出自 吖Sool-社区)
关于这么问题,要从负载均衡说起吧。就拿分布式存储来说,简单的取模运算也可以将文件均匀分布在各个节点之中。但若节点数改变,节点增删的话,这种方法就不可取了,节点增删,文件的取模全部发生变化,导致各个节点上的文件需要全部迁移。这就是Glusterfs要采用哈希分布式存储而不直接采用取模的原因。
为每个节点均匀划分哈希区间,根据文件名计算哈希值,将文件存储到哈希值所在哈希区间对应的存储节点上。若节点有增删,每个节点的哈希区间会增大或变小。只是部分文件需要迁移,这就大大减少了文件的移动。
哈希均衡广泛应用于P2P网络、分布式存储等领域,上述只是Glusterfs采用该算法的一个原因,更多负载均衡的内容,请参照http://baike.baidu.com/link?url=NgfVb_i4nsdkZYKODM8R_VHOHDMk9aelogOANMkx7f6-Pl-kwxgEzYi0Fg-CdRQw
(出自 吖Sool-社区)
相关文章推荐
- 关于Glusterfs为何采用哈希分布式算法
- 关于nginx/lighttpd epoll高并发以及apache为何不采用epoll的的疑惑 不指定
- 关于采样率-为什么要采用高达192kHz的采样率?
- 关于websphere v6的采用log4j输出日志信息的问题
- 数字集成电路设计-10-关于采用两级触发器实现双时钟域信号同步方法的分析与验证
- 关于delphi中多线程采用定时器的做法
- 关于websphere v6的采用log4j输出日志信息的问题
- 关于为何会启用CSDN博客说明
- nginx采用epoll的事件模型,为何效率高
- 为何采用多线程
- 关于微软的VB和C#:为何Basic需要存在,为何VB如此像C#,为何两者不合并等
- 计算机中带符号的整数为何采用二进制的补码进行存储
- 关于在RCNN和SPPNet中分类器采用SVM而不是softmax的解释。
- 关于采用Unity 5.x 提供的增量式打包单个模型后AssetBundle doesn’t have main asset解决方法
- 关于ie下 line-height 不兼容,采用margin-top解决办法
- 今日学一招:关于JavaScript为何要限制跨域访问
- 关于子类为何不能继承父类构造方法的几点解释
- 关于微软的VB和C#:为何Basic需要存在,为何VB如此像C#,为何两者不合并等
- 关于数据库连接池创建(楼主采用JDBC+ODBC桥接方式连接数据库)
- 关于glusterfs的directory-layout-spread参数