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

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

前几天看了一下Memcached,看到Memcached的分布式算法时,知道了一种Consistent Hashing的哈希算法,上网搜了一下,大致了解了一下这个算法,做下记录。

    数据均衡分布技术在分布式存储系统中非常重要,数据分布越均匀,系统的总体性能就越好。

 

    简单的哈希算法:以K取余法,这种算法虽然简单,但难以满足单调性要求,并且平衡性差,增删节点时更新效率低。当系统中存储节点数量发生增加或者减少时,整个系统的数据对象的映射位置都要重新进行计算,严重影响了缓存的命中率,可能会导致系统无法对外界进行正常的响应,从而导致崩溃。

 

    一致性哈希算法(Consisteng Hashing):首先,它将存储空间抽象为一个环,将存储节点配置到环上。环上所有的节点都有一个值。然后,对数据进行哈希计算,按顺时针方向将其映射到离其最近的节点上去。这样,当有节点出现故障时,按照算法的 映射方法,只有在故障节点逆时针方向到上一个节点的距离受影响。增加存储节点时也是新增的存储节点逆时针到上一个节点之间受影响。这样很好地解决了简单哈希算法增删节点,重新映射所有数据带来的效率低下的问题。

    一致性哈希算法基本解决了以P2P为代表的存储环境中的一个关键问题——如何在动态的网络拓扑中对数据进行分发和选择路由。在这个算法中,每隔存储节点仅需维护少量相邻节点的信息,并且在有节点加入或者退出的时候,仅有相关的少量节点参与到拓扑的维护中,这使得一致性哈希算法成为一个具有实用意义的DHT(Distribute Hash Table)算法。

 

    关于一致性哈希算法的不足:1.查询过程汇总,查询消息需要经过O(n)步(n是系统内节点总数)才能到达被查询的节点,如果系统规模非常大的话,这样的查询效率可能无法满足实用需求。

   

    一致性哈希算法的改进:将圆环划分成M等份,若加入物理节点为N,则每隔物理节点拥有V=M/N个节点书。当有物理节点离线是,由于该节点对应的虚拟节点均匀地分布在换上,其附近的节点将会均匀地分担这个原点的原有附在,当有新节点加入时,其他节点的负担也会均匀地转移到上面。同时根据物理节点的时机性能为权值分配环上的虚拟节点数目给物理节点,也解决了存储节点性能差异的问题。

 

参考资料:

                  《分布式存储系统中一致性哈希算法的研究》

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

你可能感兴趣的文章
初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子
查看>>
NativeXml (7):添加属性
查看>>
Delphi 与 DirectX 之 DelphiX(17): TPictureCollectionItem.PatternWidth、PatternHeight
查看>>
对JAVA集合进行遍历删除时务必要用迭代器
查看>>
html css ui
查看>>
iOS逆向工程之Theos 锁屏下alert例子
查看>>
我的友情链接
查看>>
第三讲 配置SCCM客户端并添加角色
查看>>
Testlink配置修改
查看>>
4个强大的Linux服务器监控工具
查看>>
部署搭建 Saltstack
查看>>
关于Docker默认存储位置及Docker系统默认池存储、卷存储限制空间修改
查看>>
七牛上传小工具-Go语言版本
查看>>
MySQL 参考手册 3.3创建使用数据库
查看>>
android GridView 使用
查看>>
linux系统的启动流程
查看>>
CISCO多协议双向重分布
查看>>
JVM:垃圾回收机制
查看>>
Mac 点击dock图标显示窗口,点击关闭按钮隐藏窗口
查看>>
怎么让别人不拷走你电脑里的东西
查看>>