前几天看了一下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. Linux 磁盘测速

    读: time dd if=/dev/zero of=/test.dbf bs=8k count=1000000 写: time dd if=/dev/zero of=/var/test bs=8k ...

  2. 机器学习基础-Logistic回归2

    随机梯度上升法--一次仅用一个样本点来更新回归系数(因为可以在新样本到来时对分类器进行增量式更新,因而属于在线学习算法) 梯度上升法在每次更新回归系统时都需要遍历整个数据集,该方法在处理100个左右的 ...

  3. 【贪心】HDU 最少拦截系统

    https://vjudge.net/contest/68966#problem/I [题解] http://www.cnblogs.com/kuangbin/archive/2012/08/03/2 ...

  4. 魔咒词典(hdu 1880)

    Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔 ...

  5. [Vijos] 弱弱的战壕

    描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒 ...

  6. 【2018 Multi-University Training Contest 2】

    01: 02: 03: 04:https://www.cnblogs.com/myx12345/p/9394511.html 05: 06: 07:https://www.cnblogs.com/my ...

  7. 洛谷 P4720 【模板】扩展 / 卢卡斯 模板题

    扩展卢卡斯定理 : https://www.luogu.org/problemnew/show/P4720 卢卡斯定理:https://www.luogu.org/problemnew/show/P3 ...

  8. 洛谷——P2068 统计和

    P2068 统计和 题目描述 给定一个长度为n(n<=100000),初始值都为0的序列,x(x<=10000)次的修改某些位置上的数字,每次加上一个数,然后提出y (y<=1000 ...

  9. Spring中使用byType实现Beans自动装配

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/beans-auto-wiring/spring-autowiring-byType.html: 此 ...

  10. 使用CEF类库处理HTTP请求

    当我们基于CEF开发应用时,可能会有URL请求处理的需求,比如HTTP下载或上传,此时可以利用CEF提供的类库来完成,而不必自己实现或引入其它第三方的类库. 在CEF里为URL Request设计了两 ...