meimei10251314 发表于 2015-11-19 08:20:52

Memcached缓存无底洞现象

  Facebook的工作人员反应2010年已达到3000个memcached节点,储存数千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,都落在同一个节点,访问个人主页时,只需连接一个节点。

         版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Memcached缓存无底洞现象