一致性hash

一致性hash算法在分布式hadoop,zookeeper,dynamo等应用非常广泛。最终要实现的是均衡,而且要尽量减少增删节点时对应用造成的影响,不管是cache,数据分布,还是流量(用户访问)等,原理比较好的 参看http://www.nowamagic.net/librarys/veda/detail/1336

一致性hash_第1张图片

无论是 Memcached 还是当前的 Redis,其本身都不具备分布式集群特性,当我们有大量 Redis 或 Memcached 的时候,通常只能通过客户端的一些数据分配算法(比如一致性哈希),来实现集群存储的特性。

Twitter的redis方案通过 Proxy 的方式来实现存储集群

用Twemproxy 通过引入一个代理层,可以将其后端的多台 Redis 或 Memcached 实例进行统一管理与分配,使应用程序只需要在 Twemproxy 上进行操作,而不用关心后面具体有多少个真实的 Redis 或 Memcached 存储。根据 Redis 作者的测试结果,在大多数情况下,Twemproxy 的性能相当不错,直接操作 Redis 相比,最多只有20%的性能损失。这对于它带来的好处来说真的是微不足道了。唯一可能还有待改进的是其 MGET 操作的效率,其性能只有直接操作 Redis 的 50%。 期待Redis 的 Cluster 方案正式推出。@ref 《Timelines @ Twitter》

你可能感兴趣的:(一致性hash)