?
- Memcached是 分布式 的,也就是說(shuō)它不是本地的。它基于網(wǎng)絡(luò)連接(當(dāng)然它也可以使用localhost)方式完成服務(wù),本身它是一個(gè)獨(dú)立于應(yīng)用的程序或守護(hù)進(jìn)程(Daemon方式)。
- Memcached使用 libevent 庫(kù)實(shí)現(xiàn)網(wǎng)絡(luò)連接服務(wù)。libevent是個(gè)程序庫(kù),它將Linux的epoll、BSD類操作系統(tǒng)的kqueue等事件處理功能封裝成統(tǒng)一的接口。即使對(duì)服務(wù)器的連接數(shù)增加,也能發(fā)揮O(1)的性能。
- Memcached是“分布式”的內(nèi)存對(duì)象緩存系統(tǒng),那些不需要“分布”的,不需要共享的,或者干脆規(guī)模小到只有一臺(tái)服務(wù)器的應(yīng)用,memcached不會(huì)帶來(lái)任何好處,相反還會(huì)拖慢系統(tǒng)效率,因?yàn)榫W(wǎng)絡(luò)連接同樣需要資源。它的實(shí)際瓶頸在于 網(wǎng)絡(luò)連接 。
- memcached使用內(nèi)存管理數(shù)據(jù),所以它是 易失 的,當(dāng)服務(wù)器重啟,或者memcached進(jìn)程中止,數(shù)據(jù)便會(huì)丟失,所以memcached不能用來(lái)持久保存數(shù)據(jù)。并且內(nèi)容容量達(dá)到指定值之后,就基于 LRU (Least Recently Used)算法自動(dòng)刪除不使用的緩存。?
- memcached盡管是“分布式”緩存服務(wù)器,但服務(wù)器端并沒(méi)有分布式功能。各個(gè)memcached不會(huì)互相通信以共享信息。完全取決于客戶端的實(shí)現(xiàn)來(lái)進(jìn)行分布式。
-
Memcache的分布式算法:
-
根據(jù)余數(shù)計(jì)算分散
- 過(guò)程:先根據(jù)CRC32求哈希值,再根據(jù)server數(shù)量求余。
- 缺點(diǎn):當(dāng)添加或移除服務(wù)器時(shí),緩存重組的代價(jià)相當(dāng)巨大。
-
Consistent Hashing
- 過(guò)程:?首先求出memcached服務(wù)器(節(jié)點(diǎn))的哈希值, 并將其配置到0~2 32 的圓(continuum)上。 然后用同樣的方法求出存儲(chǔ)數(shù)據(jù)的鍵的哈希值,并映射到圓上。 然后從數(shù)據(jù)映射到的位置開(kāi)始順時(shí)針查找,將數(shù)據(jù)保存到找到的第一個(gè)服務(wù)器上。 如果超過(guò)2 32 仍然找不到服務(wù)器,就會(huì)保存到第一臺(tái)memcached服務(wù)器上。
-
?虛擬節(jié)點(diǎn)
- 平衡性是指哈希的結(jié)果能夠盡可能分布到所有的緩沖中去,這樣可以使得所有的緩沖空間都得到利用。
- 虛擬節(jié)點(diǎn)(? virtual node?)是實(shí)際節(jié)點(diǎn)在? hash?空間的復(fù)制品(? replica?),一個(gè)實(shí)際節(jié)點(diǎn)對(duì)應(yīng)了若干個(gè)“虛擬節(jié)點(diǎn)”,這個(gè)對(duì)應(yīng)個(gè)數(shù)也成為“復(fù)制個(gè)數(shù)”,“虛擬節(jié)點(diǎn)”在? hash?空間中以? hash?值排列。
-
根據(jù)余數(shù)計(jì)算分散
?
http://www.ha97.com/4575.html ??Memcached原理深度分析詳解
http://blog.csdn.net/dato/article/details/1968663 ?Memcache 內(nèi)存管理
http://kb.cnblogs.com/page/42732/ ? 理解Memcache的內(nèi)存存儲(chǔ)
http://kb.cnblogs.com/page/42734/ ?Memcache的分布式算法
http://blog.csdn.net/sparkliang/article/details/5279393 ?一致性hash算法
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
