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

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

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

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

  Memcached — 分布式緩存系統 

  1.Memcached是什么?

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

  2.Memcached工作機制

  通過在內存中開辟一塊區域來維持一個大的hash表來加快頁面訪問速度,和數據庫是獨立的。但是目前主要用來緩存數據庫的數據。允許多個server通過網絡形成一個大的hash,用戶不必關心數據存放在哪,只調用相關接口就可。存放在內存的數據通過LRU算法進行淘汰出內存。同時可以通過刪除和設置失效時間來淘汰存放在內存的數據。

  現在一些.NET開發人員開始放棄ASP.NET內置的緩存機制,轉而使用Memcached——一種分布式的內存緩存系統。當運行在單獨的Web服務器上,你可以很容易地清除一個已經確認被改變了的緩存。可惜,ASP.NET沒有一個很好的方法來支持多服務器。每個服務器上的緩存都對其他緩存的改變一無所知。

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

  不像ASP.NET內置的緩存機制,Memcached是一個分布式的緩存系統。任何Web服務器都能更新或刪除一個緩存項,并且所有其他的服務器都能在下次訪問這些緩存項的時候自動獲取到更新的內容。這是通過把這些緩存項存儲在一個或者多個緩存服務器上來實現的。每一個緩存項都根據它的關鍵字的哈希值來分配到一個服務器上。

  表面看來,Memcached針對ASP.NETAPI就像和內置的API一樣。這讓開發人員很容易地轉換到Memcached上,僅僅通過在代碼中查找和替換即可實現。

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

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

  Cacheman .NET架構下的分布式緩存項目

  Cacheman據說是由微軟旗下的 Popfly 項目組成員 Sriram Krishnan 的作品。是他用業余時間開發的。最新的情況是,微軟的 Popfly 網站已經“悄悄地”的做了更新,就是采用了 Krishnan Cacheman,更新了緩存機制。該項緩存技術更新帶來的性能提升非常顯著,根據Popfly團隊中的 John Montgomery 的說法:加載一個已有的Mashup應用時,可以帶來26倍的性能提升。

  這些說法也得到了 Krishnan 本人的確認。他提到這是Cacheman 的第一次的實際應用,并自豪的說 Cacheman 不費吹灰之力就拿下了 Popfly 的全部訪問量。

  簡單介紹一下 Cacheman 這個項目。資料主要來源于 Krishnan的博客對Cacheman的介紹。

Cacheman是一個基于Windows平臺的快速分布式哈希表。是由純托管代碼實現。中間擱置了有幾個月,直到最近才開始重新上馬這個項目,極可能就是因為Popfly項目需要的緣故才開始著手的。

  Krishnan本人對 memcached 很感興趣,于是創建了 CachemanCacheman上有很多 memcached 的影子,比如與memcached相似的文本通訊協議。Cacheman的通訊協議公開,任何人可以根據自己偏愛的語言環境寫客戶端。 Krishnan 在自己家用電腦2.4GHz Intel Core 2 2GB內存)上進入測試,達到了每秒16000次左右的請求,并且還是服務器與客戶端都是在同一臺服務器下完成的。

  現這款產品還不太完善,作者自身也提到:在Cacheman做指定keyGET/SET/DELETE操作時,客戶端需要弄清需要與哪一臺Cacheman服務器通訊,為此要對該key做一個快速FNV哈希然后求余得到應該和幾臺服務器中的哪臺服務器通訊。但該法的缺點在于新增或刪除一個服務器節點時,緩存節點需要大規模遷移。修復該問題需要一致性的哈希算法,作者表示還沒有時間解決此事。作者提出了采用中心架構的“主緩存服務器”的解決辦法,讓客戶端輪詢主緩存服務器來獲取應該與那個緩存服務器通訊,但他也覺的這樣做增加了復雜性,會帶來些新問題。

  可以感覺到,由于 Cacheman 這個個人項目已經介入到 Popfly 這個正式產品中,可能很快就會被微軟吸納為正式產品,因此如果有人采用這個產品做自己緩存的解決方案的話,應該不必太擔心后續的產品升級及文檔支持服務,它的未來前途值的期待。說不定 Krishnan 會從 Popfly 項目脫身出來專職負責這個 Cacheman 項目。

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

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

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 一区二区三区舞蹈区 | 国内精自线一二区 | 91人碰| 手机亚洲第1页 | 成人免费看www网址入口 | 国产精品网站 夜色 | 欧美白人猛性xxxxx交69 | 又黄又爽又猛大片录像 | 日本精品一区二区在线播放 | 中文字幕一区二区三区四区五区人 | 精品午夜久久网成年网 | 99毛片| 亚洲精品不卡 | 欧美日本韩国一区二区 | 国产福利精品一区二区 | 国内精品视频区在线2021 | 国产福利最新手机在线观看 | 91 色| 欧美亚洲综合激情在线 | 韩国一级网站 | 五月婷婷色| 精品国产一区二区三区19 | 一区二区三区免费在线观看 | 精品视频一区二区三区在线观看 | 在线视频观看一区 | 网站免费满18成年在线观看 | 日本一区二区免费看 | 欧美特黄a级片 | 555夜色666夜色精品站 | 热久久久久 | 国产精品亚洲自在线播放页码 | 狠狠久久久久综合网 | 2021最新国产成人精品视频 | 91亚洲精品色午夜麻豆 | 国产 欧美 日产中文 | 大臿蕉香蕉大视频成人 | 激情五月综合综合久久69 | 91在线品视觉盛宴免费 | 午夜福利毛片 | 最新国产网址 | 国产成人精品午夜二三区 |