memcached consistent hashing

1. telnet 127.0.0.1 11211

>> stats ---- 当前memecache的使用状态

 

2. Consistent hashing:主要贡献是缓存服务器变动时候影响最小

场景N server ===  hash(Object)%N

但是down or add server  ===  all cache disable,冲击后台服务器

单调性是指:如果一些数据已经通过hash算法分配到server缓存中,增加server后,hash的结果应该是保证原有已分配数据可以映射到新的server上,而不被映射到旧的server集合的缓冲区中。简单理解为,server数据的增减不会使得已缓存的数据全部失效(尽量不改变映射关系),或者说原有的hash算法对于已经存储的数据在server增减的情况下依然作为缓存可以取得。

平衡性是指:hash结果尽量均分到所有的缓存,高空间利用率。

Consistent hashing算法add or remove server时尽量小的改变key的映射关系,尽量满足单调性的需求。

Hash空间、key的映射到hash空间、cacheserverip或者name)映射到hash空间,key顺时针归于遇到的第一个cache,如果add or remove server时受影响的缓存数据是变化的cache到逆时针遇到的第一个cache之间的数据对象需要重新换缓存。

增加虚拟节点,数据均分到少量server上,避免大多数数据出现在一个server上的情况,例如下面

Hash(“202.168.14.241”);  

 

引入虚拟节点后,计算虚拟节 cache A1  cache A2  hash 值:  

 

Hash(“202.168.14.241#1”);   // cache A1  

 

Hash(“202.168.14.241#2”);   // cache A2 

猜你喜欢

转载自lililucky1211.iteye.com/blog/2007628