邢 蕾
(遼寧公安司法管理干部學院,沈陽 110000)
內存緩存技術在門戶網站開發中的應用研究
邢 蕾
(遼寧公安司法管理干部學院,沈陽 110000)
內存緩存技術是基于經典的操作系統數據訪問理論而衍生出來的一種內存數據存儲技術,處理器直接訪問內存中的數據,減少了對磁盤訪問操作而引起的訪問等待時間,是今年來大型門戶網站以及高訪問量的Web應用中常見的數據存儲/訪問技術,下文以內存緩存技術在門戶網站開發中的應用為主要內容,簡單介紹了相關技術原理以及當前流行的技術匡濟, 為有效的提升門戶網站響應速度、提升用戶體驗度的應用開發提供一定的技術參考。
內存緩存;門戶;網站開發;應用
在Web開發過程中,對于門戶網站的開發應用技術有別于其他類型的網站開發技術,其最明顯的特點在于要充分考慮到“信息量、訪問量以及用戶體驗度”這幾個關鍵因素,而這都是以門戶網站的相應速度基礎的,為了提升門戶網站服務器端響應速度,誕生了諸多的訪問控制技術,如增加硬件設備、采用高性能服務器設備等利用物理手段提升網頁訪問速度的方法,同時還包括諸如頁面靜態化處理、代碼的規范化處理、網站布局設計的規范化要求、內存緩存技術應用等軟件層次提升訪問速度的手段,都較好的實現了門戶網站良好的響應度。下文將重點從軟件角度——內存緩存技術在門戶網站開發中的應用為主要內容,分析其技術原理以及在網站開發中常見的內存緩存應用系統Memcached和Redis。
內存緩存技術作為一種軟件方式提升門戶網站響應速度的手段,越來越被開發人員所重視,甚至于一些IT職位將內存緩存技術的掌握程度作為Web開發人員必備技能來考察,可見其重要程度。內存緩存技術的技術原理相對簡單,其脫胎于計算機操作系統原理中非常著名的“20%的數據在80%的時間被訪問”理論,通俗的講即,門戶網站中的某個數據一旦被訪問,那么將其存入到內存中,當用戶再次進行該數據訪問時便能直接從內存中獲取數據,而不必通過訪問數據庫或者文件系統來實現,這樣便能夠得到較快的訪問速度,進而提升用戶的體驗度。目前常見的內存緩存技術有Memcached和Redis,相對于傳統的磁盤訪問,將數據保存在內存中,能夠極大的提升數據訪問速度(據有關資料顯示,速度的提升大概在幾個數量級范圍內)。除此之外,內存緩存技術作為一種軟件手段,相較于增加硬件,在性價比方面顯得更有優勢,而這都很好的契合了門戶網站對于響應度、用戶體驗度的要求,因此,近年來大型的門戶網站開發應用時都將內存緩存技術作為提升網站相應速度,保障用戶體驗度的重要舉措。
當然,在利用內存緩存技術的時候應當考慮到三個方面的問題,即數據加載、數據同步以及數據存儲三個方面的問題。其中數據加載重點考慮何時、何種數據應當放置到內存中進行存儲;而數據同步則是客戶端或者服務器對原有數據進行更改計算之后,如何保障與磁盤中數據一致性的問題;數據存儲重點在數據遷移以及應對數據節點故障(如斷電、內存損壞等)如何進行數據處理。
綜上,內存緩存技術是現今以及未來門戶網站開發重要的技術手段之一,提升其應用水平對于進一步提升門戶網站用戶體驗度有著至關重要的意義。
3.1 Memcached系統介紹
Memcached是Danga Interactive公司的產品,作為一種流行的內存對象存儲系統,能夠有效的減輕門戶網站負載壓力,提升網站訪問速度,被門戶網站大量應用。Memcached是基于C/S (客戶端/服務器模型)構建起來的存儲系統,通過存儲Key/Value(鍵/值形式)的哈希表來實現內存數據存儲的。通常認為Memcached具有以下幾個方面的特征,其是基于libevent(高性能網絡庫)事件處理模型的,同時內置了內存存儲方式(所有數據都保存在內存中,一旦服務器重啟或者是Memcached系統重啟,其保存在內存中的數據全部丟失,當然在Memcached系統中保存的數據達到了指定的量級的時候,系統將按照Least Recently Used算法進行數據清除操作),并且其所使用的交互協議相對比較簡單,使用的是最為簡便的文本行協議,即便是通過telnet也能夠極其方便的在Memcached系統上獲取、保存數據。需要說明的是,Memcached雖然是分布式的內存數據緩存系統,但是在其服務器端并沒有實現其分布式的功能,要實現分布式需要在客戶端進行實現。除此之外,Memcached系統由于缺乏安全操作機制,通常客戶端并不直接訪問其系統,而是通過網站對外暴露的接口實現安全訪問的。
Memcached對于PV量較小、數據變化頻繁、入庫要求較高的網站是不適合的,其適合的場所在于查詢數量較多、對于實時寫入數據庫要求較低的門戶網站。因此,諸如金融部門網站、小訪問量的網站,Memcached技術都是不適用的。
3.2 Redis技術介紹
Redis同樣是一種內存數據緩存系統,其開發工作主要由虛擬機巨頭VMware公司主導的,提供了多種語言接口。與Memcached系統類似,Redis也提供了Key/Value(鍵值對)的數據保存形式,并且還支持了list(鏈表)、set(集合)、String(字符串)等數據存儲類型,數據存儲功能的更加豐富使得其在進行數據應用時更加得心應手,這也是與Memcached形成有力競爭的重要因素。在數據同步處理方面,Redis 與Memcached有較大的區別,Redis周期性的將內存中的數據文件寫入到磁盤文件系統中來實現主從同步,即便是斷電丟失、內存損壞,數據依然能夠得到有效的恢復,這是Memcached系統所欠缺的,周期性的數據存儲形式主要有兩種模式,增量存儲以及全量數據,增量存儲主要是對內存中數據進行序列化操作以后文,寫入到磁盤文件中件的寫操作,而全量數據則是直接將內存數據進行寫操作。
將Memcached與Redis進行比較會發現,Redis所支持的數據存儲類型更加豐富,同時實現了數據主從備份,并且較好的至此了持久化的處理,對于系統硬件故障在進行數據恢復時能夠實現重新加載功能。因此,Redis的應用前景較之于Memcached系統更加廣泛。除了上述方面的內容,Redis系統還提供了聚合計算、scripting等功能,這也是諸多開發者都將Redis視為Memcached的替代品來使用的原因。
3.3 Memcached與Redis的不足之處
Memcached是建立多線程技術之上,通過阻塞輸入/輸出這樣的網絡模型之上的,在進行事件處理的時候,Memcached系統采用了鎖機制以及Cache Coherency來保障數據的一致性,這樣全局變量的加鎖、釋放鎖機制必然帶來性能的損耗;而基于單線程的Redis系統而言,在處理器進行數據運算的時候,由于其單線程模型,整個IO都處于阻塞狀態,這對于系統整個吞吐量也是有很大的影響的。
綜上所述,Memcached是純粹的內存緩存,數據以鍵值對的形式一直都存儲在內存中,以此來提升系統響應速度,而Redis則不僅僅提供了鍵值對的數據類型,還提供了諸如List等更為豐富的數據類型表示,并且通過數據持久化操作能夠實現數據斷電或者丟失以后的恢復工作,而Memcached則不具備,但是這都要損耗一定的系統性能,開發人員在具體應用選擇的時候應根據系統需求以及實際情況進行合理的取舍。除去Memcached與Redis這兩個內存緩存技術當前非常流行的技術框架之外,在軟件行業中還存在著諸多內存緩存技術,但其流行程度相對較弱,本文就不一一進行介紹了。相信隨著技術發展以及數據模型的不斷完善,內存緩存技術必定在提升網站響應方面發揮更加強大的功能。
為了提升門戶網站響應速度,實現網站高可用性,內存緩存技術作為一種軟件手段應運而生。本文以門戶網站作為切入點,分析了其開發關鍵點,并以此引入了內存緩存技術,進而介紹了當前非常流行的內存緩存技術系統Memcached和Redis系統,希望借此能為門戶網站開發在內存緩存技術方面的應用提供一定的參考。
[1]靳瑩.基于緩存技術的內容管理系統研究[D].吉林大學,2014.
[2]黃菊.分布式緩存技術及其在車輛監控系統中的應用[D].北京郵電大學,2015.
[3]崔解賓.分布式內存緩存技術在數據處理平臺中的研究與應用[D].北京郵電大學,2015.
[4]李光瑞.Map/Reduce型海量數據處理平臺中的內存級數據緩存技術研究[D].北京工業大學,2013.
[5]易會戰,王鋒,左克,楊燦群,杜云飛,馬亞青.基于內存緩存的異步檢查點容錯技術[J].計算機研究與發展,2014(06):1229-1239.
10.16640/j.cnki.37-1222/t.2016.20.133