Memcache 分布式高可用集群介绍
生活随笔
收集整理的這篇文章主要介紹了
Memcache 分布式高可用集群介绍
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
分布式緩存需考慮如下三點(diǎn): 1、緩存本身的水平線性擴(kuò)展的問題。 2、緩存大病罰下的本身性能問題。 3、避免緩存的單點(diǎn)鼓掌問題。 分布式緩存存在的問題: 1、內(nèi)存本身的管理問題。內(nèi)存的分配,管理和回收機(jī)制。 2、分布式管理和分布式算法。 3、緩存鍵值管理和路由。
常見分布式算法
Memcached在實(shí)現(xiàn)分布集群部署時(shí),Memcached服務(wù)端的之間是沒有通訊的,服務(wù)端是偽分布式,實(shí)現(xiàn)分布式是由客戶端實(shí)現(xiàn)的,客戶端實(shí)現(xiàn)了分布式算法把數(shù)據(jù)保存到不同的Memcached 服務(wù)端。?1.取模
currServer = serverList[ hash(key) % sizeof(serverList) ] 余數(shù)計(jì)算的方法簡單,數(shù)據(jù)的分散性也相當(dāng)優(yōu)秀,但也有其缺點(diǎn)。那就是當(dāng)添加或移除服務(wù)器時(shí),緩存重組的代價(jià)相當(dāng)巨大。添加服務(wù)器后,余數(shù)就會(huì)產(chǎn)生巨變,這樣就無法獲取與保存時(shí)相同的服務(wù)器,從而影響緩存的命中。2.一致性hash
原理,首先求出memcached 服務(wù)器(節(jié)點(diǎn))的哈希值,并將其配置到0~232的圓(continuum)上。然后用同樣的方法求出存儲(chǔ)數(shù)據(jù)的鍵的哈希值,并映射到圓上。然后從數(shù)據(jù)映射到的位置開始順時(shí)針查找,將數(shù)據(jù)保存到找到的第一個(gè)服務(wù)器上。如果超過232 仍然找不到服務(wù)器,就會(huì)保存到第一臺(tái)memcached 。?二、多副本、故障轉(zhuǎn)移
memcached對(duì)容錯(cuò)不做處理的,也就是說當(dāng)Memcached 服務(wù)端掛掉或者 Memcached 重啟復(fù)活,由于Memcached重啟后無數(shù)據(jù),對(duì)高并發(fā)的大型系統(tǒng)中,是沒辦法接受的,我們?cè)诩旱那闆r下,要做到負(fù)載均衡和容錯(cuò) ,這種情況下, 服務(wù)器端掛掉,負(fù)載就不那么均衡,緩存數(shù)據(jù)也會(huì)丟失 ,重新對(duì)數(shù)據(jù)庫進(jìn)行操作,加大的系統(tǒng)的性能, 數(shù)據(jù)丟失容錯(cuò)也沒做得那么好。 Memcache自身并沒有實(shí)現(xiàn)集群功能,如果想用Memcahce實(shí)現(xiàn)集群需要借助第三方軟件或者自己設(shè)計(jì)編程實(shí)現(xiàn),如repcached、memagent、 memcached-ha等。總結(jié)
以上是生活随笔為你收集整理的Memcache 分布式高可用集群介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 架构解密:从分布式到微服务
- 下一篇: 如何解决数据一致性、任务调度、流水号生成