999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Memcached在大型網站建設中的應用

2016-03-22 13:57:23周建儒
電腦知識與技術 2016年1期

周建儒

摘要: 緩存技術在web開發中應用廣泛,合理的緩存技術可以減輕服務器負擔,提升系統性能,尤其在大型網站建設中,使用Memcached緩存技術能夠有效地增強系統的緩存性能。在分析Memcached的原理與特征的基礎上,結合實際項目探討了Memcached在大型網站中如何應用。

關鍵詞: 大型網站;緩存技術;Memcached

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)01-0057-03

Memcached Used in the Construction of Large Sites

ZHOU Jian-ru

(Sichuan Information Technology College, Guangyuan 628040,China)

Abstract: Caching technology widely in web development application, reasonable caching technology can reduce server load, improve system performance, especially in large-scale construction site, using Memcached caching technology can effectively enhance the performance of the system cache. In the analysis of the principles and characteristics of Memcached on the basis of the actual project explores how Memcached applications in a large site.

Key words: Large sites; caching; Memcached

隨著現代互聯網技術的快速發展,應用系統的復雜度增大、數據量不斷增長、高并發請求增多,服務器的負擔也隨之加重,數據庫響應速度變慢,網頁顯示延遲等這些問題也越發突出。數據緩存技術成為解決這些問題的主要途徑。緩存技術已經成為一個并發訪問量大的應用系統不可缺少的關鍵技術,緩存方案設計的好壞直接關系到網站訪問的速度。目前,很多的大型網站都使用 Memcached來支持海量級的頁面訪問量。通過把 cache 層與Web 架構集成,可以提高應用程序的性能,并降低數據庫的負載。

1 Memcached簡介

Memcaehed是danga.com的一個項目,開發Memcaehed的目的是為了提高LiveJournal的訪問速度,以后逐漸被應用在大型網站建設中。

Memcached是一個免費開源的、高性能的、分布式的內存對象緩存系統,用于在動態 Web 應用中提升訪問速度[1],可以滿足不同主機上的多個用戶同時訪問該緩存系統。Memcached通過在內存中維護一個統一的hash表來管理緩存數據,它和數據庫是獨立的,用戶無需知道數據存在何處。Memcached可以存儲各種類型的數據(例如文件、視頻、圖像等),它不僅解決了共享內存只能是單機的弊端,同時也解決了數據庫檢索的壓力,最大的優點是提高了訪問獲取數據的速度[3]。

2 Memcached工作原理

Memcached技術是一個數據緩存的工具,常應用于Web應用中,主要目的是提升訪問速度,同時減輕數據庫負載。Memcached緩存技術是在內存中緩存數據和對象,客戶端應用可以直接從緩存中讀取數據,這樣就避免了頻繁讀取數據庫,從而提高網站的響應速度。Memcached緩存技術是基于一個存儲鍵-值對的hashmap,客戶端應用通過Memcached協議與守護進程通信。Memcached并不提供冗余,當某個服務器停止運行或崩潰了,所有存儲在該服務器上數據就消失了。Memcached工作原理如圖1所示,圖中細線箭頭表示首次訪問頁面時從RDBMS中取得數據保存到Memcached中,粗線箭頭表示第二次以后訪問頁面時從Memcached中取數據顯示[4]。

圖1 Memcached與數據庫協同工作原理

3 Memcached的主要特征

Memcached是一種分布式的用于數據緩存的服務器,它的特征如下。

(1) 內置的內存管理方式

為了提高性能,Memcached中保存的數據都存儲在它內置的內存存儲空間中,當存儲的數據量達到預設容量值之后,可以通過LRU淘汰算法,或者通過刪除和設置失效時間來自動刪除內存中的數據。Memcached本身是為緩存而設計的服務器,不能持久保存數據,由于數據僅存在于內存中,因此重啟服務器或者Memcached進程中止數據就會丟失。

(2) 分布式

Memcached服務器端沒有分布式的功能,僅有存儲功能,其分布式是由客戶端程序實現的[2]。Memcached服務器是獨立的存取數據的,多個服務器之間不會共享數據,也互不通信??梢栽诙嗯_服務器上安裝Memcached來組建一個緩存服務器集群,通過hash來分散存儲,存儲位置只與關鍵字相關,這樣就可以減輕數據庫的響應壓力,并且它具有故障測試,負載分配等功能。

4 Memcached的應用

Memcached作為緩存服務器,其應用場景主要是針對一些訪問量大的應用系統,比如電子商務網站,其網站首頁必定有一個商品分類導航欄,當點擊某個具體分類時,其網頁就加載該類別的商品。實現該功能,一般的做法就是執行SQL語句,查詢出全部的商品分類并顯示在頁面上,當訪問量很多的時候,每打開一次網頁,就要去執行一次SQL語句,這就增加了數據庫的連接數,當訪問量到達一定數量時,就很可能使數據庫崩潰,甚至讓系統癱瘓。在這種情況下,如果使用緩存技術,就可以有效避免這種事情的發生。因為商品分類作為導航欄是不會經常改變的,實時性不是很高,這樣我們就可以把商品分類放到緩存中。其解決方案為,加入Memcached緩存,首先第一次顯示的時候,判斷Memcached緩存中是否有該商品分類,如果沒有,執行一次SQL語句,從數據庫中查詢所有的商品分類,然后放到Memcached中,進入處理數據并顯示頁面。當第二次進行訪問時,Memcached緩存中就有了該商品分類的數據,就可以直接從Memcached中取出數據進行處理并顯示到頁面上,不需要再次執行SQL語句從數據庫中去讀取數據,這樣便減少了數據庫的連接和訪問時間。

Memcached的應用主要分為Memcached服務器端的安裝配置和客戶端使用。服務器端主要和應用服務器(比如:Tomcat)安裝在同一臺機器上,客戶端使用主要是程序代碼的調用和存儲。

4.1 服務器安裝

在此以Windows系統的服務器為例介紹Memcached的安裝。首先下載Memercached For Windows并解壓,然后直接運行 memcached.exe 或者用cmd打開命令窗口,轉到解壓文件所在的目錄,輸入命令memcached.exe -d install執行,結束后在控制面板中打開服務,可以看到Memcached了,如果沒有啟動就手動啟動。

4.2 客戶端應用

Memcached作為緩存工具,其客戶端程序可以使用多種開發語言來實現,針對Java而言,目前的實現就有三種方法,分別為Memcached Client for Java,SpyMemcached和XMemcached。Memcached Client for Java比SpyMemcached更穩定、更早、更廣泛。SpyMemcached比 Memcached Client for Java更高效。XMemcached比 SpyMemcache并發效果更好。所以對訪問量高的電子商務網站而言,采用并發效果好的XMemcached來實現客戶端是比較好的選擇。以下就以一個具體的項目為例進行說明,該項目是一個商業項目的demo,使用maven進行管理,采用struts2+spring+mabatis架構,將Memcached與spring進行了集成。該項目架構如圖2所示。

圖2 項目架構

首先通過maven將xmemcached-2.0.0.jar包導入項目,再將Memcached與spring集成,在spring配置文件中進行如下配置,核心代碼如下所示。

4.3 在業務層使用Memcached

Memcached 用于功能接口的定義,在業務層可以直接使用,可以屏蔽各種客戶端實現API之間的差異,從而實現業務系統與客戶端解耦合的目的,如果以后要換客戶端的實現,對業務系統不會有影響。核心代碼如下所示。

public String selectUser(HttpServletRequest request,Model model) throws TimeoutException, InterruptedException, MemcachedException{

Long tr = new Date().getTime();

Map param = new HashMap();

List user = null;

user = (List) memcachedClient.get("userList");

if(user == null) {

user = serviceManager.getUserManagerService().selectUser(param);

memcachedClient.set("userList", 0, user);

}

model.addAttribute("userList", user);

Long tq = new Date().getTime();

Long tp = tq - tr ;}

上述代碼在運行過程中,當加入緩存后,其信息展示的速度會有明顯的提升。

5 總結

Memcached在高并發的數據查詢系統中發揮良好的性能,因為訪問Memcached中的內存數據要比數據庫的磁盤數據快很多。

文中主要探討了Memcached主要特征以及在大型網站中如何應用。在網站建設中使用Memcached之后,可以減少數據庫連接、查詢等操作,降低了數據庫負載。系統的運行速度提高了,優化了網站的性能。

參考文獻:

[1] 郭棟,王偉.基于Memcached的緩存資源集中管理方法[J].計算機技術與發展,2013(12):62-65.

[2] 鄧磊,吳健.電子政務中跨域可信數據交換模型設計與實現[J].計算機工程,2007,33(12):4-6.

[3] 俞華鋒.Memcached在大型網站中的應用[J].科技信息,2008(1):70-71.

[4] 宗小忠.基于Memcached構建Web緩存服務器[J].電腦知識與技術,2011(5):104-105.

主站蜘蛛池模板: 亚洲天堂久久| 国产成人精品2021欧美日韩| 91精品国产情侣高潮露脸| 天天综合网站| 国产91精品最新在线播放| 国产综合无码一区二区色蜜蜜| 国产精品永久免费嫩草研究院| 国产亚洲视频免费播放| 国产清纯在线一区二区WWW| 夜夜操国产| www.亚洲一区| 国产欧美日韩精品第二区| 国产精品夜夜嗨视频免费视频| 亚洲天堂高清| 热99精品视频| 亚洲人成成无码网WWW| 无码区日韩专区免费系列| 亚洲精品第五页| 免费国产在线精品一区| 久夜色精品国产噜噜| 色天天综合| 真实国产乱子伦视频| 日本在线视频免费| 尤物特级无码毛片免费| 亚洲人成影院在线观看| 香蕉国产精品视频| 国产91精品最新在线播放| 三区在线视频| 成人福利在线观看| 亚洲日韩精品伊甸| 成人福利免费在线观看| 香蕉久人久人青草青草| 亚洲天堂啪啪| 青草视频久久| 成人久久精品一区二区三区| 日韩精品亚洲一区中文字幕| 国产亚洲精品97在线观看| 国产无套粉嫩白浆| 欧美激情第一区| 国模极品一区二区三区| 国产精品免费露脸视频| 国产亚洲一区二区三区在线| 亚洲色图欧美在线| 亚洲VA中文字幕| a毛片基地免费大全| 亚洲第一区精品日韩在线播放| 欧美激情伊人| 九九热精品视频在线| 免费三A级毛片视频| 中文字幕亚洲综久久2021| 999精品在线视频| a国产精品| 欧美精品成人一区二区在线观看| 亚洲精品福利视频| 国产99热| 日韩欧美综合在线制服| 福利一区在线| a级毛片一区二区免费视频| 免费观看男人免费桶女人视频| 99精品福利视频| 青青草国产在线视频| 毛片久久网站小视频| 久久精品国产精品一区二区| 日本午夜在线视频| 色综合日本| 99精品欧美一区| 在线观看国产精品第一区免费| 天天色综合4| 亚洲V日韩V无码一区二区| 在线无码九区| 亚洲精品国产精品乱码不卞 | 久久精品国产免费观看频道| 日本不卡在线视频| 亚洲av综合网| 国产欧美日韩va| 亚洲第一黄色网址| 色婷婷狠狠干| 中文字幕在线欧美| 亚洲色成人www在线观看| 免费a在线观看播放| 特级欧美视频aaaaaa| 久久人人爽人人爽人人片aV东京热|