<转> Memcached缓存无底洞现象

Facebook的工作人员反应2010年已达到3000memcached节点,储存数千G的缓存。

他们发现一个问题--memcached的连接效率下降了,于是添加,memcached节点,添加完之后,并没有好转。

称为“无底洞”现象




以会员信息为例:

‘User-133-age’  22

‘user-133-height’ 170

‘user-89-age’ 60

‘user-89-height’ 182

当服务器增多,133号用户的信息也被散落在更多的服务器,所以,同样是访问个人主页,得到的相同的个人信息,节点越多,要连接的节点也越多,对于memcached的连接数,并没有随着节点的增多而降低,问题出现。

 

事实上:

NoSQL和传统的RDBMS,并不是水火不容,两者在某些设计上,是可以相互参考的。对于memcached,redis,这种kv存储,key的设计,可以参考Mysql中表与列的设计。

比如:user表下有age,name,身高列,对应的key,可以用user:133:age=23,user:133:name=’lisi’,user:133:height=168;

 

问题的解决方案

把某一组key,按其共同前缀来分布:

在用分布式算法求其节点时,应该以’user-133’来计算,而不是以user-133-age/name/height来计算,这样3个关于个人信息的key,都落在同一个节点,访问个人主页时,只需连接一个节点。

posted on 2015-12-19 20:17  hahahahahai12  阅读(142)  评论(0)    收藏  举报

导航