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

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

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

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

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

  1.Memcached是什么?

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

  2.Memcached工作機(jī)制

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

  現(xiàn)在一些.NET開發(fā)人員開始放棄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沒有一個(gè)很好的方法來支持多服務(wù)器。每個(gè)服務(wù)器上的緩存都對(duì)其他緩存的改變一無所知。

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

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

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

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

  Memcached是基于Linux運(yùn)行的,你可以在BSD的許可協(xié)議下使用Memcached。他也提供了針對(duì)C#的客戶端以及PerlPythonphpJava和其他語言的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ù)說是由微軟旗下的 Popfly 項(xiàng)目組成員 Sriram Krishnan 的作品。是他用業(yè)余時(shí)間開發(fā)的。最新的情況是,微軟的 Popfly 網(wǎng)站已經(jīng)“悄悄地”的做了更新,就是采用了 Krishnan Cacheman,更新了緩存機(jī)制。該項(xiàng)緩存技術(shù)更新帶來的性能提升非常顯著,根據(jù)Popfly團(tuán)隊(duì)中的 John Montgomery 的說法:加載一個(gè)已有的Mashup應(yīng)用時(shí),可以帶來26倍的性能提升。

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

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

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

  Krishnan本人對(duì) memcached 很感興趣,于是創(chuàng)建了 CachemanCacheman上有很多 memcached 的影子,比如與memcached相似的文本通訊協(xié)議。Cacheman的通訊協(xié)議公開,任何人可以根據(jù)自己偏愛的語言環(huán)境寫客戶端。 Krishnan 在自己家用電腦2.4GHz Intel Core 2 2GB內(nèi)存)上進(jìn)入測試,達(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ù)該問題需要一致性的哈希算法,作者表示還沒有時(shí)間解決此事。作者提出了采用中心架構(gòu)的“主緩存服務(wù)器”的解決辦法,讓客戶端輪詢主緩存服務(wù)器來獲取應(yīng)該與那個(gè)緩存服務(wù)器通訊,但他也覺的這樣做增加了復(fù)雜性,會(huì)帶來些新問題。

  可以感覺到,由于 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ù),它的未來前途值的期待。說不定 Krishnan 會(huì)從 Popfly 項(xiàng)目脫身出來專職負(fù)責(zé)這個(gè) Cacheman 項(xiàng)目。

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

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

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

主站蜘蛛池模板: 国产一区二区三区怡红院 | 国产综合第一页 | 五月天激情社区 | 婷婷影音| 色婷婷在线观看视频 | 色综合中文字幕色综合激情 | 91最新| 亚洲精品香蕉婷婷在线观看 | 色鬼综合| 激情综合网婷婷 | 四虎欧美永久在线精品免费 | 国产精品女在线观看 | 久久香蕉精品成人 | 欧美xxxb| 国产精品一区二区免费 | 五月亭亭激情五月 | 国产91福利 | 亚洲香蕉网久久综合影院3p | 男啪女色黄无遮挡免费视频 | 久久综合久久伊人 | 国内精品久久久久激情影院 | 五月天激情久久综合一区 | 91久操| 婷婷五月五 | 国产专区视频 | 九九九精品视频 | 黄色网址在线视频 | 亚洲一区二区三区影院 | 九月丁香十月婷婷在线观看 | 一级毛片成人免费看a | 色色视频免费网 | 久久久久久久蜜桃 | 热99在线视频 | 一二三四在线观看视频中国 | 欧洲视频在线观看 | 91久久国产视频 | 国内精品久久久久久野外 | 加勒比网 | 麻豆一区区三三四区产品麻豆 | 国产综合色在线视频区色吧图片 | 久久久久久网站 |