|
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,都落在同一个节点,访问个人主页时,只需连接一个节点。
版权声明:本文为博主原创文章,未经博主允许不得转载。 |
|
|