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