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,都落在同一個節點,訪問個人主頁時,只需連接一個節點。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章