天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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,轉載需保留來源!

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

主站蜘蛛池模板: 少妇久久久久久被弄高潮 | 午夜国产精品免费观看 | 澳大利亚剧满足在线观看 | 超碰 无码 中文字幕 | 国产av在线看的 | 精子射到丝袜上图 | 顶级少妇AAAAABBBBB片 | 亚洲裸舞 hd | 香蕉人人超人人超碰超国产 | 老师扒开尿口男生摸尿口 | 国产一区二区无码蜜芽精品 | 男人插曲女人的叫声 | 99E久热只有精品8在线直播 | 日本十八禁无遮拦啪啪漫画 | 啦啦啦WWW在线观看免费高清版 | 成人人观看的免费毛片 | 真实国产乱子伦精品一区二区三区 | 德国xxxx | 午夜国产免费视频亚洲 | 18国产精品白浆在线观看免费 | 萝莉御姐被吸奶 | 亚洲精品乱码8久久久久久日本 | 在线日韩欧美一区二区三区 | 中文字幕在线观看亚洲日韩 | 艳照门在线播放 | 最新色导航 | 亚洲 无码 制服 日韩 | 麻豆成人啪啪色婷婷久久 | 国产精品久久久久久熟妇吹潮软件 | 欧美一区二区VA毛片视频 | 首页_亚洲AV色老汉影院 | 亚洲日韩国产成网站在线 | 伊人久久综合影院 | 99精品国产电影 | 伊人第一路线 | 99热在线精品免费全部my | 色欲人妻AAAAAAA无码 | 欧美国产精品久久久乱码 | 国产成人精品综合在线 | 日本少妇无码精品12P | 99在线观看视频免费 |