摘要
在高并發環境下,大量的讀、寫請求涌向數據庫,此時磁盤IO將成為瓶頸,從而導致過高的響應延遲,因此緩存應運而生。無論是單機緩存還是分布式緩存都有其適應場景和優缺點,當今存在的緩存產品也是數不勝數,最常見的有redis和memcached等,既然是分布式,那么他們是怎么實現分布式的呢?本文主要介紹分布式緩存服務mencached的分布式實現原理。
緩存本質計算機體系緩存
什么是緩存,我們先看看計算機體系結構中的存儲體系,根據馮?諾依曼計算機體系結構模型,計算機分為五大部分:運算器、控制器、存儲器、輸入設備、輸出設備。結合現代計算機,CPU包含運算器和控制器兩個部分,CPU負責計算,其需要的數據由存儲提供,存儲分為幾個級別,就拿我當前的PC舉個例子,我的機器存儲清單如下:
1.356G的磁盤
2.4G的內存 3.3MB三級緩存 4.256KB二級緩存(pre core)除了上述部分,還有CPU內的寄存器,當然有的計算機還有一級緩存等。CPU運算器工作的時候需要數據,數據哪里來?首先從距離CPU最近的二級緩存去拿,這塊緩存速度最快,通常也是體積最小,因為價格最貴:

存儲金字塔
如上圖所示,存儲體系就像個金子塔,最上層最快,價格最貴,最下層最慢,價格也最便宜,CPU的數據源優先級一層層從上到下去尋找數據。
很顯然,除了最慢的那塊存儲,在計算機體系中,相對較快的那些存儲都可以被稱為緩存,他們解決的問題是讓存儲訪問更快。
緩存應用系統
計算機體系存儲系統模型擴展到應用也是一樣,應用需要數據,數據哪里來?緩存(更快的存儲)->DB(較慢的存儲),他們的工作流程大致如下圖所示:

帶緩存的存儲訪問一般模型
如上圖所示,緩存應用系統一般存儲訪問流程:首先訪問緩存較快的存儲介質,如果命中且未失效則返回內容,如果未命中或失效則訪問較慢的存儲介質將內容返回同時更新緩存。
memcached簡介
什么是memcached
memcached是LiveJournal旗下的Danga Interactive公司的Brad Fitzpatric為首開發的一款軟件。現在已經成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務中提高Web應用擴展性的重要因素。傳統的Web應用都將數據保存到RDBMS中,應用服務器從RDBMS中讀取數據、處理數據并在瀏覽器中顯示。但是隨著數據量增大、訪問的集中、就會出現RDBMS的負擔加重、數據庫響應變慢、導致整個系統響應延遲增加。
而memcached就是為了解決這個問題而出現的,memcached是一款高性能的分布式內存緩存服務器,一般目的是為了通過緩存數據庫的查詢命中減少數據庫壓力、提高應用響應速度、提高可擴展性。

memcached緩存應用
memcached緩存特點
1.協議簡單
2.基于libevent的事件處理 3.內置內存存儲方式 4.memcached不相互通信的分布式memcached分布式原理
新聞熱點
疑難解答