Consistent Hashing算法

简介: 前几天看了一下Memcached,看到Memcached的分布式算法时,知道了一种Consistent Hashing的哈希算法,上网搜了一下,大致了解了一下这个算法,做下记录。    数据均衡分布技术在分布式存储系统中非常重要,数据分布越均匀,系统的总体性能就越好。

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

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

 

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

 

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

image

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

 

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

   

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

 

参考资料:http://tech.idv2.com/2008/07/24/memcached-004/

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

相关文章
|
6月前
|
算法 数据挖掘 Serverless
k-means Clustering Algorithm
k-均值聚类算法(k-means Clustering Algorithm)是一种将一组数据分成 k 个不同的簇的聚类算法。该算法基于距离作为相似性度量,即将数据对象划分为 k 个簇,使得每个簇中的数据对象之间的距离尽可能小,而不同簇之间的数据对象之间的距离尽可能大。
32 2
|
9月前
|
存储 缓存 分布式计算
译|Eventually Consistent
译|Eventually Consistent
40 0
|
人工智能 算法 数据挖掘
K-Means 算法性能评价|学习笔记
快速学习 K-Means 算法性能评价
104 0
K-Means 算法性能评价|学习笔记
|
人工智能 算法 数据挖掘
K-Means 算法_1|学习笔记
快速学习 K-Means 算法_1
89 0
K-Means 算法_1|学习笔记
|
SQL 移动开发 算法
New Dynamic Programming Algorithm for the Generation of Optimal Bushy Join Trees
MySQL无疑是现在开源关系型数据库系统的霸主,在DBEngine的最新排名中仍然稳居第2位,与第3位SQL Server的积分差距并不算小,可以说是最受欢迎,使用度最高的数据库系统,这一点看看有多少新型数据库要兼容MySQL的协议和语法就知道了。
264 0
New Dynamic Programming Algorithm for the Generation of Optimal Bushy Join Trees
|
存储 算法
Consistent Hashing算法
前几天看了一下Memcached,看到Memcached的分布式算法时,知道了一种Consistent Hashing的哈希算法,上网搜了一下,大致了解了一下这个算法,做下记录。     数据均衡分布技术在分布式存储系统中非常重要,数据分布越均匀,系统的总体性能就越好。
863 0