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

內存緩存技術在門戶網站開發中的應用研究

2008-12-31 00:00:00楊立身曹志義
電腦知識與技術 2008年25期

摘要:該文創造性地探討了內存緩存技術在門戶網站開發中的應用,介紹了Memcached這一杰出成果在truelife.com的應用情況,并就其實際存在的一些缺陷進行了深入分析。

關鍵詞:內存緩存;門戶網站;Memcached

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)25-1415-02

The Application Research of Memory Cache Technology in the Major Website

YANG Li-shen, CAO Zhi-yi

(Henan Polytechnic University Network Center, Jiaozuo 454003, China)

Abrstract: This article creativelydiscussed the application of memory cache technology in the major website, introduced this outstanding achievement Memcached's using in the truelife.com, and has carried on the deep analysis on its actual existence's flaws.

Key words: memory cache; the major website; Memcached

1 引言

門戶網站開發首要解決的就是速度的問題,但是當我們的數據達到百萬以上級別,同時又有百萬個用戶經常光顧的時候,系統的響應速度就會非常慢。一般的解決辦法就是優化數據庫,提高硬件的性能,增大帶寬等,但是當這些條件一定的情況下,并且我們的資金和技術有限制的時候就是需要采用軟的方法(即緩存技術)進行處理。

在過去的幾十年里,先驅們不懈探索,最初的緩存做法是在線程內對對象進行緩存,但這樣進程間就無法共享緩存,命中率非常低,導致緩存效率極低。后來出現了共享內存的緩存,多個進程或者線程共享同一塊緩存,但畢竟還是只能局限在一臺機器上,多臺機器做相同的緩存同樣是一種資源的浪費,而且命中率也比較低。近年來,隨著內存容量的飛速擴張和價格的下降,使用內存緩存開始成為一種可能。

內存緩存技術的產生是基于這樣一種思考,即操作系統的一個經典的理論,20%的數據通常在80%的時間內被訪問。既然這樣,我們的目標就可以集中在這20%的數據中,當這些數據第一次被訪問以后就將它放在內存中,再次訪問這些數據的時候,只要從內存讀取并且賦予它更好的訪問級別即可。眾所周知,內存的訪問速度是非常快的,這樣以來我們整個系統的速度就會提高數個重量級。

目前內存緩存技術最杰出的成果就是Memcached,我們這次的研究對象是泰國著名的社交門戶www.truelife.com。該網站現有會員3000萬,每天要承受很大的訪問壓力。因此需要將用戶經常訪問的數據緩存起來,以此提高響應速度。

2 Memcached簡介與分布式環境配置

Memcached是danga.com的一個項目,最早是為LiveJournal服務的,最初為了加速LiveJournal訪問速度而開發的,后來被很多大型的網站采用。目前全世界不少人使用這個緩存項目來構建自己大負載的網站,來分擔數據庫的壓力。

起初作者編寫它可能是為了提高動態網頁應用,為了減輕數據庫檢索的壓力,來做的這個緩存系統。Memcached是一個高性能的分布式的內存對象緩存系統,通過在內存里維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。它的緩存是一種分布式的,也就是可以允許不同主機上的多個用戶同時訪問這個緩存系統, 這種方法不僅解決了共享內存只能是單機的弊端,同時也解決了數據庫檢索的壓力,最大的優點是提高了訪問獲取數據的速度!基于Memcached作者對分布式cache的理解和解決方案。Memcached完全可以用到其他地方 比如分布式數據庫,分布式計算等領域。

我們的第一步工作就是構建一個分布式系統,注意針對Memcached的特性,我們只能在分布式環境中測試它!目前主要分布存儲的方式都是按照一定的方式進行切分,主要是垂直切分(縱向)和水平切分(橫向)兩種方式,當然,也有兩種結合的方式,達到更到的切分粒度。www.truelife.com目前采用的是類似Master/Slave 結構,具體情況簡化如圖1所示,我們可以用三臺服務器來模擬。

圖1 truelife.com的類虛擬分布結構

當一臺作為主服務器,需要在該服務器上配置Memcached的服務端,并在打開守護進程的同時打開一個內存池。另外的兩臺電腦做客戶端,存放的是緩存數據的key值,其對應關系如圖2所示。

圖2 memcached的key-value 模型

3 Memcached的簡單測試

從技術研究以及Memcached官方的報告來看,php語言對Memcached的支持最好,所以今天的演示代碼我們就采用php代碼。選擇php作為客戶端,第一步就要配置它,我們采用直接直接引用Memcached官方過來的php擴展的辦法。

當客戶端在與 memcached 服務建立連接之后,接下來的事情就是存取對象了。代碼中主要用到4個方法,add方法負責往 memcached 中寫入對象,$key 是對象的唯一標識符,$val 是寫入的對象數據,$exp 為過期時間,單位為秒,默認為不限時間;get方法負責從 memcached 中獲取對象數據,通過對象的唯一標識符 $key 獲取;replace方法負責用 $value 替換 memcached 中標識符為 $key 的對象內容,參數與 add() 方法一樣,只有 $key 對象存在的情況下才會起作用;delete方法負責刪除 memcached 中標識符為 $key 的對象,$time 為可選參數,表示刪除之前需要等待多長時間。每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,保存到 memcached 中的對象實際上是放置內存中的,并不是保存在 cache 文件中的,這也是為什么 memcached 能夠如此高效快速的原因。

以上雖然只是一個簡單應用,但是基本概括了其常用的操作。在truelife.com的實際應用中,我們把數據庫查詢的結果集保存到 memcached 中,下次訪問時直接從 memcached 中獲取,而不再做數據庫查詢操作,這樣可以在很大程度上減輕數據庫的負擔。通常會將 SQL 語句 md5() 之后的值作為唯一標識符 key。需要的時候就直接從內存讀取出來,這樣就可以減少數據庫連接、查詢操作,數據庫負載下來了,腳本的運行速度也提高了。

4 Memcached深度研究

前面曾經提到過20%的數據的問題,這個對于每一個網站來說都是不一樣的,所以需要長期地進行日志分析才能決定哪些數據需要直接放到內存里。而Memcached的一個缺點就是沒有提供自身日志功能,不過我們可以在數據的讀寫前對數據的key值進行統計。

我們知道Memcached使用內存管理數據,所以它是易失的,當服務器重啟,或者Memcached進程中止,數據便會丟失,所以Memcached不能用來持久保存數據。對于truelife.com這樣的大負載網站顯然是不能允許這樣的事情發生的,為此我們必須思考一種辦法使得Memcached里面的數據能夠像數據庫一樣穩定。可喜的是我們找到了memcachedb,而不用自己開發增加成本。memcachedb故名思義就是 Memcached+bdb,是基于Memcached Socket層和berkeley-db存儲層結構的實現,是新浪互動社區技術團隊2007年的一項重大的技術成果,現在應用于新浪互動社區多個產品線中,其中包括新浪博客等重頭產品。能夠實現任意memcache api的調用、數據實時落地以及主輔實時備份。

為什么要選擇memcachedb:沒有什么特殊的原因,最好的理由就是,在做到最大不犧牲數據讀、寫性能的前提下,它能夠讓我們原來存儲在memcache里的數據不再遭受系統宕機或者系統掉電而丟失,即使服務器電源爆炸了,只要硬盤還能夠正常工作,換到另外一臺服務器上,數據依然安然無恙地在硬盤上。安裝過程比Memcached稍微復雜一點,經過我們的測試性能相當穩定。

此外,閱讀它的源代碼發現Memcached有一個很有特色的內存管理方式,為了提高效率,它使用預申請和分組的方式管理內存空間,而并不是每次需要寫入數據的時候去malloc,刪除數據的時候free一個指針。Memcached使用slab->chunk的組織方式管理內存。這個就是它的效率之所以高的關鍵了。現在的版本LRU淘汰算法只是在每個SLAB內部使用,為了進一步提高性能,我個人建議采用全局LRU淘汰算法。目前修改的代碼編譯效果不是很理想,還在努力修改中。

5 結束語

Memcached的橫空出世為我們解決高負載互動提供了解決辦法。內存緩存技術在門戶系統中的應用及其在國內外的擴展,比如memcachedb使得內存緩存有了數據庫一樣的穩定性。高效和穩定,再加上快速已經給國內外的大型網站帶來了質變。國內的sina,sohu和baidu,taobao等無一不使用該技術來為網站加速,應用只能解決暫時的問題,我們將努力改進其現有缺陷,不斷進行技術創新,為國內軟件技術的發展做出貢獻。

參考文獻:

[1] 張堯學,史美林,計算機操作系統教程[M]. 清華大學出版社,2003.

[2] 張益新,沈雁編著.算法引論[M]. 國防科技大學出版社.1997.11.

[3] 馮登國. 計算機通信網絡安全[M]. 北京:清華大學出版社, 2001.

[4] 單國棟, 戴英俠, 王航. 計算機漏洞分類研究[J]. 計算機工程,2002,(10):11-14.

[5] Matt B. Computer Security: Art and Science. Addison-Wesley Professional.ISBN:0-201-44099-7,2003.

[6] Ross A. Security Engineering: A Guide to Building Dependable Distributed Systems. John Wiley Sons. ISBN: 0-471-38922-6,2001.

[7] Matt Blaze. 2002 September 15 (Preprint, revised 2003 March 02). Cryptology and Physical Security: Rights Amplification in Master-Keyed Mechanical Locks. IEEE Security and Privacy (March/April 2003).

[8] Computer Emergency Response Team/Coordination Center. 2003. CERT/CC Vulnerability Metric.

[9] Internet Security Systems. 2002 November 18 (Revised). X-Force? Vulnerability Disclosure Guidelines.

[10] Elias Levy. 2001 October 21. Security in an Open Electronic Society. SecurityFocus.

主站蜘蛛池模板: 国产一区二区丝袜高跟鞋| 国产成人欧美| 美女亚洲一区| 久久伊人久久亚洲综合| 国产精品久久自在自2021| 欧美亚洲一区二区三区在线| 亚洲人精品亚洲人成在线| 国产一区免费在线观看| 高清码无在线看| 六月婷婷精品视频在线观看| 久久精品嫩草研究院| 国产青青草视频| 亚洲精品人成网线在线| 欧美亚洲激情| 欧美爱爱网| 欧美中文字幕一区| 久久久久久久久久国产精品| 免费啪啪网址| 国产免费一级精品视频| 毛片卡一卡二| 国产黄色爱视频| 国产h视频在线观看视频| 老司机久久99久久精品播放| 日本久久久久久免费网络| 亚洲婷婷丁香| 亚洲a级在线观看| 亚洲欧美日韩中文字幕在线一区| 免费xxxxx在线观看网站| 国产尤物jk自慰制服喷水| 免费女人18毛片a级毛片视频| 国产乱人乱偷精品视频a人人澡| 99热这里只有精品国产99| 最近最新中文字幕免费的一页| 国产小视频a在线观看| 午夜日韩久久影院| 久久精品免费看一| 久久精品国产在热久久2019| 九色视频一区| 在线国产欧美| 国产一区二区精品高清在线观看| 亚洲免费成人网| AV老司机AV天堂| 青青青视频91在线 | 97se亚洲综合在线| 色综合天天操| 精品小视频在线观看| 亚洲人成电影在线播放| 成人在线欧美| 久久精品视频一| 国产精品视频系列专区 | 国产精品久久久久久久久kt| 国产欧美自拍视频| 九九线精品视频在线观看| 亚洲日韩在线满18点击进入| 91亚洲国产视频| 99热这里只有免费国产精品| 国产综合精品日本亚洲777| 欧美成在线视频| 精品少妇人妻无码久久| 国产欧美日韩综合在线第一| 网友自拍视频精品区| 日本五区在线不卡精品| 精品久久久无码专区中文字幕| av一区二区三区高清久久| 97视频免费看| 免费激情网站| 91精品国产情侣高潮露脸| 欧美精品1区| 久久青草热| 欧美、日韩、国产综合一区| 夜夜拍夜夜爽| 一级不卡毛片| 国产福利一区二区在线观看| 青青青国产视频手机| 亚洲色欲色欲www在线观看| 久青草国产高清在线视频| 无码人中文字幕| 亚洲制服中文字幕一区二区| a级毛片免费网站| a天堂视频| 91国内视频在线观看| 亚洲成人免费在线|