基于MEMCACHED的數據緩存研究與實現
發(fā)布時間:2020-11-21 18:37
隨著WEB應用用戶量和數據量的快速增長,頁面響應時間和系統(tǒng)的穩(wěn)定性成為影響用戶體驗的重要指標。其中影響系統(tǒng)響應時間和系統(tǒng)穩(wěn)定性最為重要的因素就是數據的查詢性能。為了提升數據的查詢速度,應用引入了Memcached緩存系統(tǒng)對頻繁查詢的數據進行緩存。針對不同的數據及使用場景,提出了不同的數據緩存方案。由于其將數據緩存到服務器內存中,當客戶端請求數據時,直接從內存中讀取數據。由于單機服務器內存的限制無法緩存儲海量的數據,并且單機服務器也無法應付高并發(fā)請求,提出了Memcached的分布式解決方案。針對這個分布式部署方案,分析了不同的數據分散算法在使用過程中會出現的問題,并研究了分布式Memcached系統(tǒng)中添加刪除服務器節(jié)點的具體實現。將一致性哈希算法與虛擬節(jié)點的概念應用到Memcached的分布式架構中大大提升了單節(jié)點服務器宕機造成的系統(tǒng)整體性能下降,針對一致性hash算法的查找時間慢的問題,將二分查找算法應用于服務器節(jié)點的查找中。由于內存中的數據在服務器重啟或者宕機時全部丟失不可恢復,并且它的LRU機制造成了未過期數據的淘汰。針對Memcached緩存服務器數據易丟失的特性,論文提出了緩存數據的持久化解決方案。有效的解決了緩存數據失效的問題,同時當緩存服務器宕機時還可以加入新的替換服務器,并將持久化數據恢復到新加入的服務器節(jié)點。本論文的研究成果適用于大并發(fā)量、大數據量web應用緩存系統(tǒng),很好的解決了實際應用過程中出現的各種數據丟失、內存不夠用、性能瓶頸等問題。根據實驗結果,數據訪問速度相對于MySQL數據庫提升了一定的倍數,另外緩存服務器節(jié)點理論上可以無限擴展。文中提出的分布式解決方案及數據持久化方案對其他緩存系統(tǒng)有一定的借鑒意義。
【學位單位】:上海交通大學
【學位級別】:碩士
【學位年份】:2018
【中圖分類】:TP333
【部分圖文】:
接查詢數據庫,而是從 Memcached 緩存服務器中查找得到。具體的數據緩存查詢流程如 1 圖 3-1 所示。圖3-1 緩存數據查詢流程Fig.3-1 Query data data from cache system
節(jié)點進行查找,對比這個節(jié)點的值,二分查找服務器節(jié)點算法的時間復雜度為lg(n),因而大大節(jié)約了查找時間。服務器查找算法如圖 3-2 所示:圖3-2 查找服務器節(jié)點Fig.3-2 Find Server Node如圖 3-2 所示,如果節(jié)點[N/2]號服務器節(jié)點宕機了,同時此時查找到的 key值剛好映射到這個節(jié)點上,這個時間應該將下一個節(jié)點[N/2]+1 作為 key 的臨時緩存服務器節(jié)點。因而單節(jié)點失效只造成一個節(jié)點上的數據轉移到其他節(jié)點。同樣地,當向一致性 hash 環(huán)中添加服務器節(jié)點時,或者宕機服務器恢復時,我們需要將一個服務器節(jié)點加入到一致性 hash 環(huán)中,服務器節(jié)點數由 N 變成 N+1。與上一節(jié)中的余數計算分散法的區(qū)別在于,一致性 hash 算法緩存重組的代價比較低。當我們使用 Memcached 中的 add 或者 get 方法設置數值時
也有大有小。如圖 3-3 所示,節(jié)點 B 上有許多緩存項,這些緩存項的 hash 值范圍是[Key B, Key C),我們仍然可以將這個范圍的值分散到剩下的兩個節(jié)點上。圖3-3 一致性 hash 環(huán)Fig.3-3 Consistent Hash Cycle如圖3-3[33]所示,如果節(jié)點B失效或者移除,此時有一個key4經一致性hash計算映射到節(jié)點 B 上,這個時候我們發(fā)現節(jié)點 B 失效,再經過一次一致性 hash計算(這個一致性hash 環(huán)的范圍不一樣),這個時候key4就映射到 C節(jié)點上了。也就是說單個服務器計算出來的多個“虛擬節(jié)點”會分散到其他節(jié)點上。這樣的話,每臺服務器都計算出“虛擬節(jié)點”,這樣的話,每臺服務器的“虛擬節(jié)點”就會平均分布到集群圈的各個區(qū),使用“虛擬節(jié)點”,在key落點的時候
【參考文獻】
本文編號:2893428
【學位單位】:上海交通大學
【學位級別】:碩士
【學位年份】:2018
【中圖分類】:TP333
【部分圖文】:
接查詢數據庫,而是從 Memcached 緩存服務器中查找得到。具體的數據緩存查詢流程如 1 圖 3-1 所示。圖3-1 緩存數據查詢流程Fig.3-1 Query data data from cache system
節(jié)點進行查找,對比這個節(jié)點的值,二分查找服務器節(jié)點算法的時間復雜度為lg(n),因而大大節(jié)約了查找時間。服務器查找算法如圖 3-2 所示:圖3-2 查找服務器節(jié)點Fig.3-2 Find Server Node如圖 3-2 所示,如果節(jié)點[N/2]號服務器節(jié)點宕機了,同時此時查找到的 key值剛好映射到這個節(jié)點上,這個時間應該將下一個節(jié)點[N/2]+1 作為 key 的臨時緩存服務器節(jié)點。因而單節(jié)點失效只造成一個節(jié)點上的數據轉移到其他節(jié)點。同樣地,當向一致性 hash 環(huán)中添加服務器節(jié)點時,或者宕機服務器恢復時,我們需要將一個服務器節(jié)點加入到一致性 hash 環(huán)中,服務器節(jié)點數由 N 變成 N+1。與上一節(jié)中的余數計算分散法的區(qū)別在于,一致性 hash 算法緩存重組的代價比較低。當我們使用 Memcached 中的 add 或者 get 方法設置數值時
也有大有小。如圖 3-3 所示,節(jié)點 B 上有許多緩存項,這些緩存項的 hash 值范圍是[Key B, Key C),我們仍然可以將這個范圍的值分散到剩下的兩個節(jié)點上。圖3-3 一致性 hash 環(huán)Fig.3-3 Consistent Hash Cycle如圖3-3[33]所示,如果節(jié)點B失效或者移除,此時有一個key4經一致性hash計算映射到節(jié)點 B 上,這個時候我們發(fā)現節(jié)點 B 失效,再經過一次一致性 hash計算(這個一致性hash 環(huán)的范圍不一樣),這個時候key4就映射到 C節(jié)點上了。也就是說單個服務器計算出來的多個“虛擬節(jié)點”會分散到其他節(jié)點上。這樣的話,每臺服務器都計算出“虛擬節(jié)點”,這樣的話,每臺服務器的“虛擬節(jié)點”就會平均分布到集群圈的各個區(qū),使用“虛擬節(jié)點”,在key落點的時候
【參考文獻】
相關期刊論文 前4條
1 郭棟;王偉;曾國蓀;;基于Memcached的緩存資源集中管理方法[J];計算機技術與發(fā)展;2013年12期
2 宗小忠;;基于Memcached構建Web緩存服務器[J];電腦知識與技術;2011年05期
3 謝騁超;陳華鈞;張宇;;DartCache:一個基于哈希表的分布式Cache系統(tǒng)[J];計算機科學;2006年08期
4 徐永睿;;基于LIRS緩存替換算法的實踐[J];程序員;2011年02期
相關碩士學位論文 前2條
1 陳文武;分布式鎖技術研究[D];華南理工大學;2013年
2 李方超;基于NOSQL的數據最終一致性策略研究[D];哈爾濱工程大學;2012年
本文編號:2893428
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2893428.html