`
zhsx2221
  • 浏览: 37395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[摘选]memcached全面剖析—— 客户端选择(一致性哈希算法)

阅读更多

memcached本身是集中式的缓存系统,要搞多节点分布,只能通过客户端实现。

memcached的分布算法一般有两种选择:
1、hash模余算法:

     根据hash(key)的结果,模连接数的余数决定存储到哪个节点(键的整数哈希值,根据服务器个数取余来选定服务器节点),也就是hash(key)% sessions.size(),这个余数计算的方法简单,数据的分散性也相当优秀。

    但也有其缺点。那就是当添加或移除服务器时,缓存重组的代价相当巨大。添加/删除服务器后(特别是某台服务器down机之后),余数就会产生巨变,这样就无法保证获取时计算的服务器节点与保存时相同,从而影响缓存的命中率——造成原有的缓存数据将大规模失效。

 

2、Consistent Hashing,一致性哈希算法:
    首先求出memcached服务器(节点)的哈希值,并将其配置到0~232的圆(continuum)上。然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。

Consistent Hashing:基本原理

从上图的状态中添加一台memcached服务器。余数分布式算法由于保存键的服务器会发生巨大变化而影响缓存的命中率,但Consistent Hashing中,只有在continuum上增加服务器的地点逆时针方向的第一台服务器上的键会受到影响。

Consistent Hashing:添加服务器的影响范围

 

本文以上内容选摘自 memcached全面剖析–4. memcached的分布式算法

 

目前支持 "一致性哈希算法" 的 java版memcached客户端: spymemcached、xmemcached。

 

 

  • 大小: 38.7 KB
  • 大小: 45.1 KB
分享到:
评论

相关推荐

    一致性哈希算法应用及优化(最简洁明了的教程)

    一致性哈希算法应用及优化是IT领域中分布式系统设计的核心技术之一,特别是在处理大规模数据分布与缓存系统中,其重要性不言而喻。本文将深入探讨一致性哈希算法的基本概念、工作原理以及在实际场景中的应用和优化...

    memcached全面剖析.pdf

    4. 分布式:memcached通过一致性哈希(Consistent Hashing)实现分布式,多个memcached实例之间不会直接通信,可实现高可用性和水平扩展性。 安装和配置memcached相对简单,可以通过源码编译安装,也可以使用包管理...

    memcached全面剖析

    3. **分布式特性**:memcached通过一致性哈希策略实现数据的分布式存储,可以在多台服务器之间分发负载,确保高可用性和可扩展性。 4. **缓存策略**:包括LRU(Least Recently Used)最近最少使用算法,用于在内存...

    MemCached 全面剖析 memcached.pdf(中文)

    - **Consistent Hashing 的简单说明**:通过一致性哈希算法可以确保即使节点数量发生变化,数据分布的变化也很小。 - **支持 Consistent Hashing 的函数库**:例如 Libketama。 #### 六、MemCached 应用案例 **5.1...

    memcached全面剖析资料

    4. **分布式**:通过一致性哈希算法,memcached可以在多台服务器之间分散数据,实现分布式存储,提高系统的可扩展性。 5. **缓存策略**:采用LRU(Least Recently Used)最近最少使用算法来决定何时删除缓存中的...

    memcached-笔记资料

    【标题】"memcached-笔记资料"涉及到的核心...3. "ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf":这篇论文深入探讨了一致性哈希算法...

    一致性Hash简单实现

    一致性哈希(Consistent Hashing)是一种分布式哈希表(DHT)的算法,它主要应用于分布式缓存、负载均衡等场景,旨在解决在动态扩展或收缩系统规模时,尽量减少数据迁移的问题。在这个简单的实现中,我们将探讨如何...

    Memcached内存分析、调优、集群

    集群通常采用一致性哈希算法来分发数据,使得在添加或移除节点时,只需要重新分布一小部分键值对。 一致性哈希是一种分布式哈希表算法,它允许Memcached客户端根据键值的哈希结果,将数据映射到特定的服务器,从而...

    memcached完全剖析

    - **ConsistentHashing的简单说明**:一致性哈希算法可以保持数据在节点变化时的稳定性,减少了数据迁移的开销。 - **支持ConsistentHashing的函数库**:如ketama等库提供了实现一致性哈希算法的功能。 #### ...

    Memcached 内存分析、调优、集群

    在分布式环境中,为了实现数据的高效分发,Memcached使用了一致性哈希算法。一致性哈希能够确保即使在网络中添加或删除节点时,数据迁移也尽可能少。 #### 5. Key-Value系统的比较 与其他Key-Value存储系统相比,...

    神级memcached源代码分析文档_1.4.0代码分析

    客户端的哈希算法决定了key如何映射到特定的server,通常采用一致性哈希,以保证server增减时,数据迁移的影响最小化。 总结,通过深入分析Memcached的源代码,我们可以了解到其高效运行背后的设计思想和技术实现,...

    memcached完全剖析 翻译整理

    1. **一致性哈希**:这是一种常用的算法,用于在不改变数据分布的情况下添加或移除缓存节点。它可以减少重新分布数据时带来的开销。 2. **哈希环**:在一致性哈希的基础上构建一个虚拟的环形结构,将键值映射到环上...

    memcached-1.5.11.tar.gz

    4. 基于一致性哈希的分布式策略:在多台服务器部署时,Memcached使用一致性哈希算法,保证数据迁移时尽可能少地改变映射关系。 四、Memcached的API及使用 1. 客户端库:Memcached提供了多种语言的客户端库,如PHP...

    Memcached内存分析、调优、集群.ppt

    它使用一致性哈希算法来分散数据,使得数据在节点间均匀分布,增加或减少节点时,只影响一小部分键的映射位置。一致性哈希降低了重新分布大量数据的成本。 【客户端选择】 Memcached支持多种编程语言的客户端,如...

    memcached1.4.5源代码

    - `memcached`采用一致性哈希算法,确保在集群中添加或删除节点时,尽可能少的数据迁移。 5. **线程模型** - `memcached`是一个单线程服务,通过libevent的事件模型来处理并发请求,避免了多线程的上下文切换开销...

    Memcached源码剖析笔记.pdf

    - **Hash函数及冲突解决**:使用一致性哈希算法,通过跳跃列表处理哈希冲突,确保在添加或删除节点时尽可能少地影响现有的键分布。 - **HashTable主要函数**:包括哈希计算、冲突解决以及插入和查找操作。 - **...

Global site tag (gtag.js) - Google Analytics