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

.Net下的分布式緩存(2)--實(shí)現(xiàn)分布式緩存同步的手段

  前不久,俺寫(xiě)了篇文章談到了.NET下面的分布式緩存的一些問(wèn)題,并結(jié)合DNT里面實(shí)現(xiàn)模式發(fā)表了一些自己的看法,近來(lái)通過(guò)學(xué)習(xí)相關(guān)的東西又有了一些新的體會(huì), 寫(xiě)在這里作為分布式緩存列系文章的第二部分.

  其實(shí)對(duì)于性的擴(kuò)展無(wú)非是Scale Up(向上擴(kuò)展)或者是Scale Out(向外擴(kuò)展), 微軟對(duì)此的看法是一個(gè)App的緩存最好是以它自己為物理邊界進(jìn)行讀寫(xiě),而不要放到別處去,這樣帶的問(wèn)題可能有對(duì)象的序列化傳送,反序列化,網(wǎng)絡(luò)連接開(kāi)銷,跨進(jìn)程的開(kāi)銷,對(duì)于高性能的站點(diǎn)來(lái)說(shuō)都是不能忽視的問(wèn)題.出于對(duì)這些因素的考慮微推薦的作法不是把多個(gè)應(yīng)用放在一起在多臺(tái)Server布署,而是將一個(gè)App劃分成若干個(gè)小的應(yīng)用布署到不同的服務(wù)器,下面的關(guān)系圖展示了這種關(guān)系, 這樣每種應(yīng)用就可以獨(dú)立管理自己的緩存數(shù)據(jù),但是對(duì)于象用戶數(shù)據(jù)這樣的通用數(shù)據(jù)仍然會(huì)存在多處.

兩種解決方案

  為了解決緩存同步的問(wèn)題,有人想出了解決辦法, 可以參考這兩個(gè)地方,這個(gè)是MS的,這里還有一個(gè),先來(lái)看看Peter的這個(gè)吧, 主要思想就是把要放到緩存里面的東西加上一層包裝CacheControlItem, 實(shí)現(xiàn)代碼請(qǐng)去原文出處下載.

  每臺(tái)機(jī)器都維護(hù)一個(gè)WebFarm里面的成員服務(wù)器的列表,如果有新的服務(wù)器進(jìn)來(lái)發(fā)現(xiàn)自己不在這個(gè)列表中則會(huì)通知其它的服務(wù)器把它加到這個(gè)名單里面。添加緩存的這程是這樣, A服務(wù)器需要插入一個(gè)新的緩存值,它把這個(gè)項(xiàng)目插入到自己的緩存中,然后用它初始化一個(gè)CacheControlItem并指定它的緩存策略(優(yōu)先級(jí),緩存生存時(shí)間),設(shè)定它的動(dòng)作,即添加,然后把這個(gè)結(jié)象序列化通過(guò)Web傳送到每一個(gè)成員服務(wù)器,接受到這些數(shù)據(jù)的服務(wù)器跟據(jù)這個(gè)對(duì)象的Action指令,把反序列化后的對(duì)象加入到自己的緩存里面,這樣一個(gè)同步的過(guò)程就完成了,移除緩存對(duì)象的過(guò)程與之類似,只不過(guò)不需要傳送對(duì)象,只在包裝類里面設(shè)定它的Action為刪除就可以了. 當(dāng)然,為了提高性能,可以實(shí)現(xiàn)一個(gè)異步的偵聽(tīng)線程專門用來(lái)響應(yīng)緩存通知的請(qǐng)求. 總體上講這處辦法的效率比較低,在數(shù)據(jù)量較大的情況下可能會(huì)造成大量緩存數(shù)據(jù)的同步數(shù)據(jù)流。

  我們?cè)賮?lái)看看M$是怎么做的,它的想法類似,只不過(guò)它不在WebFarm的成員服務(wù)器之間同步緩存,而只是保證每臺(tái)機(jī)器不要讀到已經(jīng)失效的緩存數(shù)據(jù),當(dāng)緩存數(shù)據(jù)失效時(shí)(相關(guān)依賴數(shù)據(jù)被更新), 通過(guò)維護(hù)一個(gè)需要通知的服務(wù)器列表依次調(diào)用每臺(tái)服務(wù)器上的WebService,如果當(dāng)前服務(wù)器上存在這鍵值的緩存則使它失效.

  這兩個(gè)老外寫(xiě)的東西似乎都比較啰索,不過(guò)對(duì)初學(xué)者來(lái)說(shuō)比較友好,可以一步步地知道這件事情的來(lái)龍去脈,理解會(huì)清楚更刻一些。

Memcached到底有多快?

  看了這些如果還不滿意,那么您可以試試Memcached它可以運(yùn)行在Win32平臺(tái)下,在上篇文章中我們已經(jīng)提到了這個(gè)東西,但是它在.NET的平臺(tái)下面究竟表現(xiàn)如何?是否能象在php平臺(tái)下面一樣地優(yōu)秀,我們現(xiàn)在來(lái)做一個(gè)簡(jiǎn)單的測(cè)試, 對(duì)比使用.NET自帶的Cache和Memcached兩種實(shí)現(xiàn)方式,看看差距究竟有多大,過(guò)程是這樣,分別生成10000個(gè)字符串對(duì)象并分別設(shè)定鍵值插入到緩存中,然后再取出來(lái),看看花費(fèi)的總時(shí)間. 服務(wù)器端:memcached-1.2.1-win32, 客戶端: memcacheddotNET_clientlib-1.1.5, 服務(wù)器端的使用也比較簡(jiǎn)單,解壓文件之后在命令行下面輸入: c:/memcached -d install 先安裝服務(wù), 接著 c:/memcached -d start就可以了,詳細(xì)使用方法見(jiàn)說(shuō)明文件 -h 是查看幫助, 測(cè)試環(huán)境如下:

  Memcached服務(wù)器 : Win2003 sp1, Framework 2.0,P4 D 3.4G, 768MB 內(nèi)存, 千兆網(wǎng)卡.

  Memcached客戶機(jī) : Win2003 sp1, Framework 2.0,T2060, 1G內(nèi)存( 沙加的神舟筆記本;) ), 千兆網(wǎng)卡.

  兩臺(tái)機(jī)器通過(guò)直連線相連.

  .NET Cache單機(jī)測(cè)試 : P4 D 3.4G, 768MB 內(nèi)存.

  測(cè)試結(jié)果, 存取10000個(gè)條目的時(shí)間:

         Memcached

Set(秒) 1.48 1.37 1.48 1.37 1.46
Get(秒) 2.422.42 2.42 2.43 2.42

         HttpRuntime.Cache

Set(秒) 0.015 0.015 0.015 0.015 0.015
Get(秒)
0.0150.015 0.015 0.015 0.015

.NET內(nèi)建緩存測(cè)試代碼

HttpRuntime.Cache

NET技術(shù).Net下的分布式緩存(2)--實(shí)現(xiàn)分布式緩存同步的手段,轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 日本在线观看www免费 | 国产永久在线视频 | 久久免费区一区二区三波多野 | 精品国免费一区二区三区 | 色www亚洲| 韩国一级做a爰片性色毛片 韩国一区二区三区 | 国产精久久一区二区三区 | 日韩精品中文字幕一区二区三区 | 最新香蕉97超级碰碰碰碰碰久 | 国产精品一区二区久久 | 2021最新国产成人精品视频 | 国产欧美精品一区二区色综合 | 精品亚洲一区二区三区在线播放 | 久久一日本道色综合久久m 久久伊人草 | 911国产自产精品a | 19国产精品麻豆免费观看 | 欧美wwww| 国产福利微拍精品一区二区 | 五月丁香 | 免费黄色视屏 | 欧美怡红院免费全视频 | 久久久亚洲精品蜜桃臀 | 欧洲一卡2卡三卡4卡免费观看 | 亚洲91精品麻豆国产系列在线 | 欧美精品第一页 | 啪啪色网 | 免费在线色视频 | 最新亚洲一区二区三区四区 | 欧美激情网站 | 六月婷婷久香在线视频 | 免费欧美一级 | 四虎永久在线日韩精品观看 | 久久久久久精 | 国产成人一区二区视频在线观看 | 天天躁日日躁狠狠躁中文字幕老牛 | 91精品国产免费入口 | 欧美一级特黄特黄做受 | 图片区小说区欧洲区 | 一级做a爰片性色毛片武则天五则 | 岛国a香蕉片不卡在线观看 岛国不卡 | 久久国产亚洲精品 |