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

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

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

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

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

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

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

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

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

Consistent Hashing算法的更多相关文章

  1. Consistent Hashing算法-搜索/负载均衡

    在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括:  轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法(Respons ...

  2. 深入一致性哈希(Consistent Hashing)算法原理,并附100行代码实现

    转自:https://my.oschina.net/yaohonv/blog/1610096 本文为实现分布式任务调度系统中用到的一些关键技术点分享——Consistent Hashing算法原理和J ...

  3. 一致性哈希(consistent hashing)算法

    文章同步发表在博主的网站朗度云,传输门:http://www.wolfbe.com/detail/201608/341.html 1.背景        我们都知道memcached服务器是不提供分布 ...

  4. 一致性 hash 算法( consistent hashing )a

    一致性 hash 算法( consistent hashing ) 张亮 consistent hashing 算法早在 1997 年就在论文 Consistent hashing and rando ...

  5. 一致性哈希算法 - consistent hashing

    1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 ...

  6. 一致性 hash 算法( consistent hashing )

    consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛: 1 基 ...

  7. 【转】一致性hash算法(consistent hashing)

    consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛: 1  ...

  8. 一致性hash算法 - consistent hashing

    consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛: 1 ...

  9. _00013 一致性哈希算法 Consistent Hashing 新的讨论,并出现相应的解决

    笔者博文:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前.妳却感觉不到我的存在 技术方向: ...

随机推荐

  1. VirtualBox - 虚拟机下主机与虚拟机、虚拟机与虚拟机之间通信配置

    看了一下网上别人写的文章:http://www.it165.net/os/html/201401/7063.html 文章里面使用的是Debian,我这里配置的虚拟机系统一个是Ubuntu 14.10 ...

  2. react.js 高阶组件----很简单的实例理解高阶组件思想

    调试代码之前,我设置了两个缓存 分别是username和content 在控制台console设置两个缓存代码 localStorage.setItem('username','老王')localSt ...

  3. mysql与时间有关的查询

    date(str)函数可以返回str中形如"1997-05-26"格式的日期,str要是合法的日期的表达式,如2008-08-08 22:20:46 时间是可以比较大小的,例如: ...

  4. 用DW制作简单的浮动广告

    原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] 浮动广告可以用层和时间轴结合做出,先选择你的dreamweaver“窗口”,然后从“窗口”菜单中选择“时间轴”,时 ...

  5. memcached 笔记之windows 7 下面 安装memcached 报错

    windows 7 下面 安装memcached 报错 两种情况: 一:服务确实已经安装过 .如需要重新安装,当然是先memcached.exe -d uninstall 二:奇怪的是服务确实没有安装 ...

  6. SOJ 4482 忽悠大神【最小生成树】

    题目链接: http://acm.scu.edu.cn/soj/problem.action?id=4482 题意: 给定边权和点权,从一个点出发并回到该点,减少尽量多的边,每路过点和边都要把权重加到 ...

  7. ATcoder 2000 Leftmost Ball

    Problem Statement Snuke loves colorful balls. He has a total of N×K balls, K in each of his favorite ...

  8. 多硬盘分区管理fdisk

    原文:http://blog.fens.me/linux-fdisk/ ---------------------------------------------------------------- ...

  9. B+树在NTFS文件系统中的应用

    B+树在NTFS文件系统中的应用 flyfish 2015-7-6 卷(volume) NTFS的结构首先从卷開始. 卷相应于磁盘上的一个逻辑分区,当你将一个磁盘或者磁盘的一部分格式化成NTFS,卷将 ...

  10. CV_HAAR_FEATURE_DESC_MAX和CV_HAAR_FEATURE_MAX

    #define CV_HAAR_FEATURE_MAX 3 //提前定义的一个宏,在程序中表示一个haar特征由至多三个矩形组成 #define CV_HAAR_FEATURE_DESC_MAX 20 ...