一致性hash(整理版)】的更多相关文章

简单解释: 简单解释一致性hash的原理:网上通篇都是用服务器做的举例,我这里也如此,主要是便于理解. 通常:有N个客户端请求服务器,假设有M台web服务器,通常为了均衡访问会进行N%M的取模,然后分配到不同的缓存服务器访问.问题是一旦缓存服务器增加或减少时缓存的命中率被打乱,因为取模发生了变化.例A的访问分配到了M1上,假设服务器增减则有可能会被分配到M3上(M3为举例),那么M1上的原有缓存失效,M3需要重新建立A访问的缓存. 一致性Hash:有N个客户端请求服务器,假设有M台web服务器,…
一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得成功,这个和当前的开源技术.海量数据架构有着必不可分的关系.比如我们使用mysql.nginx等开源软件,通过架构和低成本服务器也可以搭建千万级用户访问量的系统.新浪微博.淘宝网.腾讯等大型互联网公司都使用了很多开源免费系统搭建了他们的平台.所以,用什么没关系,只要能够在合理的情况下采用合理的解决方…
一致性 hash 算法( consistent hashing ) 张亮 consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛: 1 基本场景 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到…
由于redis是单点,但是项目中不可避免的会使用多台Redis缓存服务器,那么怎么把缓存的Key均匀的映射到多台Redis服务器上,且随着缓存服务器的增加或减少时做到最小化的减少缓存Key的命中率呢?这样就需要我们自己实现分布式. Memcached对大家应该不陌生,通过把Key映射到Memcached Server上,实现快速读取.我们可以动态对其节点增加,并未影响之前已经映射到内存的Key与memcached Server之间的关系,这就是因为使用了一致性哈希.因为Memcached的哈希策…
互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中 获得成功,这个和当前的开源技术.海量数据架构有着必不可分的关系.比如我们使用mysql.nginx等开源软件,通过架构和低成本服务器也可以搭建千 万级用户访问量的系统.新浪微博.淘宝网.腾讯等大型互联网公司都使用了很多开源免费系统搭建了他们的平台.所以,用什么没关系,只要能够在合理的情况下 采用合理的解决方案. 那怎么搭建一个好的系统架构呢?这个话题太大,这…
python有一个python模块--hash_ring,即python中的一致性hash,使用起来也挺简单. 可以参考下官方例子:https://pypi.python.org/pypi/hash_ring/ Basic example of usage (for managing memcached instances): memcache_servers = ['192.168.0.246:11212', '192.168.0.247:11212', '192.168.0.249:1121…
普通的 Hash 解决的是什么问题? 下图是一个普通的余数法构造的哈希表. 一般在编程中使用哈希表,某个 bucket 突然就没了的概率比较小,常见的是因为负载因子太大需要增加 bucket,然后 rehash. 考虑在上图中,2 号 bucket 突然就没了会发生什么情形. 最直接的做法就是,后面的 bucket 依次往前面补位,然后重新计算 key 的 hash 值. 2 号 bucket 虽然只存放了一个 key,但是由于 2 号 bucket 的丢失,导致后面所有 bucket 存放的…
memcache 是一个分布式的缓存系统,但是本身没有提供集群功能,在大型应用的情况下容易成为瓶颈.但是客户端这个时候可以自由扩展,分两阶段实现.第一阶段:key 要先根据一定的算法映射到一台memcache服务器.第二阶段从服务器中取出缓存的值.但是有一个问题,比如其中一台服务器挂了,或者需要增加一台服务 的时候,这个时候第一阶段的算法就很重要了,怎样使得原来的数据尽可能的继续有效,减少扩展节点或缩减节点带来的冲击.下面列出想到一些解决方法: 一:hash一致性算法: 优点: 当一个节点失效的…
add by zhj:介绍了什么是一致性hash,以及实现一致性hash的一种算法. 原文:http://my.oschina.net/u/195065/blog/193614 目录[-] 一致性 hash 算法( consistent hashing ) 1 基本场景 2 hash 算法和单调性 3 consistent hashing 算法的原理 3.1 环形hash 空间 3.2 把对象映射到hash 空间 3.3 把cache 映射到hash 空间 3.4 把对象映射到cache 3.5…
Consistent Hashing最大限度地抑制了hash键的重新分布.另外要取得比较好的负载均衡的效果,往往在服务器数量比较少的时候需要增加虚拟节点来保证服务器能均匀的分布在圆环上.因为使用一般的hash方法,服务器的映射地点的分布非常不均匀.使用虚拟节点的思想,为每个物理节点(服务器)在圆上分配100-200个点.这样就能抑制分布不均匀,最大限度地减小服务器增减时的缓存重新分布.用户数据映射在虚拟节点上,就表示用户数据真正存储位置是在该虚拟节点代表的实际物理服务器上. public cla…