一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

ASP.NET緩存全解析7:第三方分布式緩存解決方案 Memcached和Cacheman

  ASP.NET緩存全解析文章索引

  • ASP.NET緩存全解析1:緩存的概述
  • ASP.NET緩存全解析2:頁(yè)面輸出緩存
  • ASP.NET緩存全解析3:頁(yè)面局部緩存
  • ASP.NET緩存全解析4:應(yīng)用程序數(shù)據(jù)緩存
  • ASP.NET 緩存全解析5:文件緩存依賴
  • ASP.NET 緩存全解析6:數(shù)據(jù)庫(kù)緩存依賴
  • ASP.NET 緩存全解析7:第三方分布式緩存解決方案 Memcached和Cacheman

  Memcached — 分布式緩存系統(tǒng) 

  1.Memcached是什么?

  Memcached是高性能的,分布式的內(nèi)存對(duì)象緩存系統(tǒng),用于在動(dòng)態(tài)應(yīng)用中減少數(shù)據(jù)庫(kù)負(fù)載,提升訪問(wèn)速度。Memcached通過(guò)在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表,它能夠用來(lái)存儲(chǔ)各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫(kù)檢索的結(jié)果等。MemcachedDanga Interactive最初為了加速 LiveJournal網(wǎng)站訪問(wèn)速度而開(kāi)發(fā)的,后來(lái)被很多大型的網(wǎng)站采用。起初作者編寫它可能是為了提高動(dòng)態(tài)網(wǎng)頁(yè)應(yīng)用,為了減輕數(shù)據(jù)庫(kù)檢索的壓力,來(lái)做的這個(gè)緩存系統(tǒng)。它的緩存是一種分布式的,也就是可以允許不同主機(jī)上的多個(gè)用戶同時(shí)訪問(wèn)這個(gè)緩存系統(tǒng),這種方法不僅解決了共享內(nèi)存只能是單機(jī)的弊端, 同時(shí)也解決了數(shù)據(jù)庫(kù)檢索的壓力,最大的優(yōu)點(diǎn)是提高了訪問(wèn)獲取數(shù)據(jù)的速度!基于memcached作者對(duì)分布式cache的理解和解決方案。memcached完全可以用到其他地方 比如分布式數(shù)據(jù)庫(kù),分布式計(jì)算等領(lǐng)域。Memcached將數(shù)據(jù)庫(kù)負(fù)載大幅度降低,更好的分配資源,更快速訪問(wèn)。 

  2.Memcached工作機(jī)制

  通過(guò)在內(nèi)存中開(kāi)辟一塊區(qū)域來(lái)維持一個(gè)大的hash表來(lái)加快頁(yè)面訪問(wèn)速度,和數(shù)據(jù)庫(kù)是獨(dú)立的。但是目前主要用來(lái)緩存數(shù)據(jù)庫(kù)的數(shù)據(jù)。允許多個(gè)server通過(guò)網(wǎng)絡(luò)形成一個(gè)大的hash,用戶不必關(guān)心數(shù)據(jù)存放在哪,只調(diào)用相關(guān)接口就可。存放在內(nèi)存的數(shù)據(jù)通過(guò)LRU算法進(jìn)行淘汰出內(nèi)存。同時(shí)可以通過(guò)刪除和設(shè)置失效時(shí)間來(lái)淘汰存放在內(nèi)存的數(shù)據(jù)。

  現(xiàn)在一些.NET開(kāi)發(fā)人員開(kāi)始放棄ASP.NET內(nèi)置的緩存機(jī)制,轉(zhuǎn)而使用Memcached——一種分布式的內(nèi)存緩存系統(tǒng)。當(dāng)運(yùn)行在單獨(dú)的Web服務(wù)器上,你可以很容易地清除一個(gè)已經(jīng)確認(rèn)被改變了的緩存。可惜,ASP.NET沒(méi)有一個(gè)很好的方法來(lái)支持多服務(wù)器。每個(gè)服務(wù)器上的緩存都對(duì)其他緩存的改變一無(wú)所知。

  ASP.NET允許通過(guò)基于文件系統(tǒng)和數(shù)據(jù)庫(kù)表的觸發(fā)器來(lái)作廢一個(gè)緩存。然而,這也存在問(wèn)題,比如數(shù)據(jù)庫(kù)觸發(fā)器需要使用昂貴的輪詢,以及觸發(fā)器本身冗長(zhǎng)的編程。但是,我們還是有其他的選擇的。

  不像ASP.NET內(nèi)置的緩存機(jī)制,Memcached是一個(gè)分布式的緩存系統(tǒng)。任何Web服務(wù)器都能更新或刪除一個(gè)緩存項(xiàng),并且所有其他的服務(wù)器都能在下次訪問(wèn)這些緩存項(xiàng)的時(shí)候自動(dòng)獲取到更新的內(nèi)容。這是通過(guò)把這些緩存項(xiàng)存儲(chǔ)在一個(gè)或者多個(gè)緩存服務(wù)器上來(lái)實(shí)現(xiàn)的。每一個(gè)緩存項(xiàng)都根據(jù)它的關(guān)鍵字的哈希值來(lái)分配到一個(gè)服務(wù)器上。

  表面看來(lái),Memcached針對(duì)ASP.NETAPI就像和內(nèi)置的API一樣。這讓開(kāi)發(fā)人員很容易地轉(zhuǎn)換到Memcached上,僅僅通過(guò)在代碼中查找和替換即可實(shí)現(xiàn)。

  一個(gè)被推薦的解決方案是不根據(jù)緩存項(xiàng)的關(guān)鍵字來(lái)生成哈希鍵值。這將允許開(kāi)發(fā)人員能夠讓一個(gè)給定頁(yè)面中需要的所有緩存項(xiàng),盡量存放在同一個(gè)服務(wù)器上。可惜,基于數(shù)據(jù)保存的地方而不是基于緩存項(xiàng)自身的關(guān)鍵字來(lái)生成哈希鍵,很容易產(chǎn)生錯(cuò)誤,需要仔細(xì)來(lái)實(shí)現(xiàn)(這個(gè)算法)。

  Memcached是基于Linux運(yùn)行的,你可以在BSD的許可協(xié)議下使用Memcached。他也提供了針對(duì)C#的客戶端以及PerlPythonphpJava和其他語(yǔ)言的APIhttp://www.danga.com/memcached/apis.bml。還有一個(gè)Win32的移植版本(http://jehiah.cz/projects/memcached-win32/),可以讓Memcached運(yùn)行在非Linux的機(jī)器上。

  Cacheman .NET架構(gòu)下的分布式緩存項(xiàng)目

  Cacheman據(jù)說(shuō)是由微軟旗下的 Popfly 項(xiàng)目組成員 Sriram Krishnan 的作品。是他用業(yè)余時(shí)間開(kāi)發(fā)的。最新的情況是,微軟的 Popfly 網(wǎng)站已經(jīng)“悄悄地”的做了更新,就是采用了 Krishnan Cacheman,更新了緩存機(jī)制。該項(xiàng)緩存技術(shù)更新帶來(lái)的性能提升非常顯著,根據(jù)Popfly團(tuán)隊(duì)中的 John Montgomery 的說(shuō)法:加載一個(gè)已有的Mashup應(yīng)用時(shí),可以帶來(lái)26倍的性能提升。

  這些說(shuō)法也得到了 Krishnan 本人的確認(rèn)。他提到這是Cacheman 的第一次的實(shí)際應(yīng)用,并自豪的說(shuō) Cacheman 不費(fèi)吹灰之力就拿下了 Popfly 的全部訪問(wèn)量。

  簡(jiǎn)單介紹一下 Cacheman 這個(gè)項(xiàng)目。資料主要來(lái)源于 Krishnan的博客對(duì)Cacheman的介紹。

Cacheman是一個(gè)基于Windows平臺(tái)的快速分布式哈希表。是由純托管代碼實(shí)現(xiàn)。中間擱置了有幾個(gè)月,直到最近才開(kāi)始重新上馬這個(gè)項(xiàng)目,極可能就是因?yàn)?span lang="EN-US">Popfly項(xiàng)目需要的緣故才開(kāi)始著手的。

  Krishnan本人對(duì) memcached 很感興趣,于是創(chuàng)建了 CachemanCacheman上有很多 memcached 的影子,比如與memcached相似的文本通訊協(xié)議。Cacheman的通訊協(xié)議公開(kāi),任何人可以根據(jù)自己偏愛(ài)的語(yǔ)言環(huán)境寫客戶端。 Krishnan 在自己家用電腦2.4GHz Intel Core 2 2GB內(nèi)存)上進(jìn)入測(cè)試,達(dá)到了每秒16000次左右的請(qǐng)求,并且還是服務(wù)器與客戶端都是在同一臺(tái)服務(wù)器下完成的。

  現(xiàn)這款產(chǎn)品還不太完善,作者自身也提到:在Cacheman做指定keyGET/SET/DELETE操作時(shí),客戶端需要弄清需要與哪一臺(tái)Cacheman服務(wù)器通訊,為此要對(duì)該key做一個(gè)快速FNV哈希然后求余得到應(yīng)該和幾臺(tái)服務(wù)器中的哪臺(tái)服務(wù)器通訊。但該法的缺點(diǎn)在于新增或刪除一個(gè)服務(wù)器節(jié)點(diǎn)時(shí),緩存節(jié)點(diǎn)需要大規(guī)模遷移。修復(fù)該問(wèn)題需要一致性的哈希算法,作者表示還沒(méi)有時(shí)間解決此事。作者提出了采用中心架構(gòu)的“主緩存服務(wù)器”的解決辦法,讓客戶端輪詢主緩存服務(wù)器來(lái)獲取應(yīng)該與那個(gè)緩存服務(wù)器通訊,但他也覺(jué)的這樣做增加了復(fù)雜性,會(huì)帶來(lái)些新問(wèn)題。

  可以感覺(jué)到,由于 Cacheman 這個(gè)個(gè)人項(xiàng)目已經(jīng)介入到 Popfly 這個(gè)正式產(chǎn)品中,可能很快就會(huì)被微軟吸納為正式產(chǎn)品,因此如果有人采用這個(gè)產(chǎn)品做自己緩存的解決方案的話,應(yīng)該不必太擔(dān)心后續(xù)的產(chǎn)品升級(jí)及文檔支持服務(wù),它的未來(lái)前途值的期待。說(shuō)不定 Krishnan 會(huì)從 Popfly 項(xiàng)目脫身出來(lái)專職負(fù)責(zé)這個(gè) Cacheman 項(xiàng)目。

  目前最新的版本是0.0.2版 :http://www.sriramkrishnan.com/code/

NET技術(shù)ASP.NET緩存全解析7:第三方分布式緩存解決方案 Memcached和Cacheman,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产视频二区在线观看 | 美国毛片亚洲社区在线观看 | 成人综合激情网 | 色婷婷亚洲精品综合影院 | 一级一级特黄女人精品毛片视频 | 色视频网站在线观看 | 狠狠色伊人亚洲综合成人 | 欧美高清在线观看视频 | 天天色一色 | 精品国产91乱码一区二区三区 | 日韩欧美成人乱码一在线 | 国产色婷婷精品综合在线观看 | 日韩一区二区三区中文字幕 | 久久不射网 | 国产福利精品视频 | 国产成人啪午夜精品网站 | 久久久久久国产精品mv | 91在线精品麻豆欧美在线 | 影音先锋自拍 | 福利在线看 | 国产乱子视频 | 伊人久久大香线蕉久久婷婷 | 色天天综合 | 久久免费精品一区二区 | 欧美日韩中文亚洲另类春色 | 国产精品久久久久久福利 | 伊人手机在线视频 | 欧美系列第一页 | 美女三级网站 | 青青草人人 | 亚洲小说图片 | 亚洲成人免费网站 | 97影院秋霞国产精品 | 伊人久久大香线 | 色婷婷99综合久久久精品 | 一区二区三区在线免费看 | 精品综合一区二区三区 | 丁香六月婷婷在线 | 久久是精品 | 在线视频 亚洲 | 成人免费大片黄在线观看com |