memcache的分布式快取問題

2021-05-23 15:59:01 字數 884 閱讀 8190

有關使用memcache做分布式快取的方案,簡單寫下來,僅供參考。

memcache是優異的快取解決方案,很多專案都有使用。

memcache服務本身並不具備分布式快取的能力,它提供的就是對對的訪問能力,分布式的能力則完全來自於客戶端。

現在有不少memcache的客戶端lib採用consistent hashing作為分布式演算法,採用consistent hashing的優點就是:當有節點失效或新節點加入時,可以維持大部分資料的hash規則的不變性,從而使遷移的資料最小化;

但是遷移是必不可少的,否則會帶來一致性問題。

有些分布式系統曾採用雙節點策略來解決節點失效帶來的問題,每乙個儲存節點都有主/備兩個節點,可以把這個策略引入到分布式快取中來,可以認為兩個 節點同時失效是乙個小概率事件;其缺點就是硬體成本提高了,但是節點失效時,不需要遷移資料了啊(如果主節點還沒有down機,主備節點之間還可以快速復 制快取),這個簡化了很多設計。快取資料不允許失效,但是no-hit是完全可以接受的,對於快取而言這確實是個不錯的方案。

這個是由雙節點策略改進而來的,與其讓每個節點都有乙個備份節點,不如讓n個快取伺服器共用x個備份節點,比如我們取x=3,這樣就大大降低了硬體成本。除非同時出現4臺伺服器down機的情況,才會造成快取節點不足;這個是個極小概率事件了。

在吸取了雙節點策略的同時,也避免了其缺點。

不管是n+x備份還是雙節點策略,和consistent hashing是不衝突的,完全可以使用consistent hashing演算法來分配到不同的快取伺服器上。

不管是n+x備份還是雙節點策略,當伺服器動態擴充時,快取資料的遷移也是不可避免的。但是需要快取的資料,都是熱點資料,普通資料何苦快取呢,資料量也不會太大,需要的快取伺服器不會多,完全可以預估一下極限,在開始就將n定下來。這樣就完全不必煩惱資料遷移問題了。

分布式快取 memcache學習

1.使用分布式快取是為了解決多台機器共享資訊的問題,通過訪問乙個ip和埠來可以訪問不同的iis伺服器 2.memcache基礎原理 在socket伺服器端儲存資料是以鍵值對的形式儲存 記憶體處理的演算法 本質就是乙個大的雜湊表。key最大長度是255個字元,value最大為1mb 記憶體模型 mem...

memcache的分布式快取問題

memcache的分布式快取問題 memcache是優異的快取解決方案,很多專案都有使用。memcache服務本身並不具備分布式快取的能力,它提供的就是對對的訪問能力,分布式的能力則完全來自於客戶端。基於consistent hashing演算法的分布式快取 現在有不少memcache的客戶端lib...

分布式快取Memcache和Redis

針對於現在計算機的cpu和網路設施,對應用程式來說,執行效率的瓶頸,已經不是 的長度 實現同乙個功能 和頻寬了,而是,訪問資源的過程,即 讓我們的程式慢下來的罪魁禍首就是io操作。程式從硬碟上讀取資料是乙個非常花費時間的操作,因為我們現在所使用的硬碟是機械式的,你想機械的執行速度和電的速度,那是乙個...