Memcache 分布式高可用集群介紹


分布式緩存需考慮如下三點:
1、緩存本身的水平線性擴展的問題。
2、緩存大病罰下的本身性能問題。
3、避免緩存的單點鼓掌問題。
分布式緩存 存在的問題:
1、內存本身的管理問題。內存的分配,管理和回收機制。
2、分布式管理和分布式算法。
3、緩存鍵值管理和路由。

常見分布式算法

        Memcached在實現分布集群部署時,Memcached服務端的之間是沒有通訊的,服務端是偽分布式,實現分布式是由客戶端實現的,客戶端實現了分布式算法把數據保存到不同的Memcached 服務端。 

1.取模

currServer = serverList[ hash(key) % sizeof(serverList) ]
余數計算的方法簡單,數據的分散性也相當優秀,但也有其缺點。那就是當添加或移除服務器時,緩存重組的代價相當巨大。添加服務器后,余數就會產生巨變,這樣就無法獲取與保存時相同的服務器,從而影響緩存的命中。

2.一致性hash

原理,首先求出memcached 服務器(節點)的哈希值,並將其配置到0~232的圓(continuum)上。然后用同樣的方法求出存儲數據的鍵的哈希值,並映射到圓上。然后從數據映射到的位置開始順時針查找,將數據保存到找到的第一個服務器上。如果超過232 仍然找不到服務器,就會保存到第一台memcached 。 

二、多副本、故障轉移

memcached對容錯不做處理的,也就是說當Memcached 服務端掛掉或者 Memcached 重啟復活,由於Memcached重啟后無數據,對高並發的大型系統中,是沒辦法接受的,我們在集群的情況下,要做到負載均衡和容錯 ,這種情況下, 服務器端掛掉,負載就不那么均衡,緩存數據也會丟失 ,重新對數據庫進行操作,加大的系統的性能, 數據丟失容錯也沒做得那么好。 Memcache自身並沒有實現集群功能,如果想用Memcahce實現集群需要借助第三方軟件或者自己設計編程實現,如repcached、memagent、 memcached-ha等。



















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM