Windows Server AppFabric 緩衝(微軟分布式緩衝解決方案)

來源:互聯網
上載者:User
主要介紹一下Windows Server AppFabric特點,詳細的介紹及代碼參照MSDN,這裡就不多此一舉了。(同類產品Memcahed)      Windows Server AppFabric 擴充了 Windows Server 以為 Web 應用程式和中介層服務提供增強託管、管理和緩衝功能。 AppFabric 託管功能向 Internet 資訊服務 (IIS)、Windows Process Activation Service (WAS) 和 .NET Framework 4 添加了服務管理擴充。其中包括託管服務和託管管理工具,這些工具使部署、配置和管理基於 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 的服務變得更加容易。 AppFabric 緩衝功能向 Windows Server 添加了一個分布式的記憶體中對象緩衝,它使擴充高效能 .NET 應用程式(特別是 ASP.NET 應用程式)變得更加容易。使用 AppFabric 緩衝功能,您可以將多台電腦的記憶體容量合并到一個統一的快取叢集,從而可以協助您輕鬆且低廉地擴充 .NET 應用程式。 這些功能包括快取服務、快取用戶端和緩衝管理工具。Windows Server AppFabric 緩衝物理體繫結構Windows Server AppFabric 緩衝功能使用彼此通訊的伺服器叢集來形成單個統一的應用程式緩衝系統。作為分配式緩衝系統,所有快取作業都抽象為單個參考點,稱作快取叢集。換句話說,無論構成快取叢集的電腦有多少台,您的用戶端應用程式都可以與群集中單個邏輯單元的緩衝配合使用。物理體繫結構的主要組件包含快取服務器、緩衝主機 Windows 服務、快取叢集、基於 Windows PowerShell 的緩衝管理工具、叢集組態儲存位置和快取用戶端。顯示所有這些元素的關聯情況。

 AppFabric 快取服務->緩衝主機->快取叢集sAppFabric 快取服務 是運行在一個或多個伺服器上的 Windows 服務快取服務器  運行快取服務的每個伺服器均快取叢集    是以環狀方式共同儲存和分發資料的快取服務的一個或多個執行個體的集合。Windows Server AppFabric 緩衝邏輯體繫結構Windows Server AppFabric 中快取叢集的邏輯體繫結構由具名快取、地區和緩衝對象組成。在中,具名快取跨群集中的所有緩衝主機,但地區僅限於群集中的一個緩衝主機。

首先是具名快取,其次具名快取又可劃分地區,地區是具體存資料的容器,緩衝對象可增加標籤協助索引尋找。具名快取 也稱為緩衝,是一個可配置的記憶體中儲存單元,所有應用程式都使用該單元將資料存放區在分布式緩衝中。地區 是可以放置在緩衝中的附加資料容器。地區是一種緩衝結構:它們不在群集配置設定中定義。地區是可選的;如果您想使用它們,必須藉助應用程式代碼通過使用 CreateRegion 方法在運行時明確建立它們。緩衝對象 採用其 System.Object 基類的形式,因此需要進行類型轉換以將它們還原為其原始類型。標籤 在往緩衝中添加對象時,可額外的為對象建立標籤,以方便檢索總體比較:比Memcahed強大多了,但是配置複雜多了,依賴MS的東西也比較多。基於 Windows PowerShell 的緩衝管理工具Windows PowerShell 是快取服務的專用管理工具。Windows PowerShell 緩衝管理 cmdlet 可以安裝在任何域電腦上或快取服務器上。通過安裝 AppFabric 的緩衝管理功能可以完成此操作。您必須具有對所有快取服務器的管理員權限,才能使工具正常運行。使用 Windows PowerShell 可啟動和停止群集、添加和刪除命名的緩衝、更改配置設定,以及查看主機和群集的統計資訊。本機快取      伺服器採用序列化形式將Object Storage Service在緩衝中。當快取用戶端請求緩衝中的某個對象時,伺服器通過網路將該對象發送到用戶端。然後,快取用戶端還原序列化該對象以供用戶端應用程式使用。若要加快檢索某個對象的過程,請啟用本機快取。當啟用本機快取時,快取用戶端在本機存放區對對象的引用。這將使對象在用戶端應用程式的記憶體中保持活動狀態。當應用程式請求對象時,快取用戶端首先檢查對象是否位於本機快取中。如果位於本機快取中,則立即返回對該對象的引用,而不聯絡伺服器。如果不在本機快取中,則從伺服器檢索該對象。然後,快取用戶端還原序列化該對象並將對此新檢索到的對象的引用儲存在本機快取中。用戶端應用程式也使用該對象。對象在本機快取中的生存期取決於多個因素,如本機快取中對象的最大數量以及失效策略。對於本機快取,有兩種類型的失效:基於逾時的失效以及基於通知的失效。    本機快取的Object Storage Service在快取用戶端進程所在的同一進程空間中。當快取用戶端請求本機快取的對象時,用戶端將收到對本機快取對象的引用,而非副本。對於可能從多個線程修改相同本機快取對象的多線程應用程式而言,這是非常重要的注意事項。這些應用程式可以利用標準的 .NET Framework 編碼技術從多個線程同步對象的更改。也可以為每個線程建立單獨的 DataCacheFactory 對象。但是,應謹慎執行該操作,因為建立很多緩衝工廠的開銷可能會減少優勢。到期和逐出(Windows Server AppFabric 緩衝)

緩衝對象不會持續保留在 Windows Server AppFabric 的記憶體中。除了通過使用 Remove 方法從緩衝中被顯式刪除之外,緩衝對象也可能到期或被快取叢集逐出。

到期

緩衝到期允許快取叢集自動將緩衝對象從緩衝中刪除。當使用 PutAdd 方法時,可以為特定的緩衝對象設定一個可選的對象逾時值,該值將確定該對象在緩衝中駐留的時間。如果在緩衝對象時未提供對象逾時值,則使用在具名快取的群集配置設定中指定的值來確定該對象在緩衝中的生存期。

當出於並發的目的鎖定緩衝對象時,即使這些對象過了其到期時間,也不會從緩衝中被刪除。一旦解鎖這些對象,會立即將其從緩衝中刪除(如果過了其到期時間)。
為了防止在解鎖到期對象時立即刪除這些對象,Unlock 方法還支援延長緩衝對象的到期時間。

本機快取失效

對於本機快取,有兩個互補類型的失效:基於逾時的失效以及基於通知的失效。

基於逾時的失效

將對象下載到本機快取之後,這些對象將駐留在本機快取中,直到其達到快取用戶端配置設定中指定的對象逾時值。達到此逾時值之後,對象將失效,以便下次請求時可以從快取叢集重新整理。 基於通知的失效
如果快取用戶端啟用了本機快取,則還可以使用快取通知使本機快取的對象自動失效。根據需要縮短這些對象的生存期,這樣可以降低應用程式使用過時資料的可能性。

逐出

為了保持每個緩衝主機上可用於緩衝的記憶體容量,AppFabric 支援最近最少使用 (LRU) 逐出。閾值稱為浮水印,用於確保記憶體在群集中的所有緩衝主機之間均勻地分布。

配置化(結構類似MemCachedProvider,支援SessionState)View Code

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

<!--configSections must be the FIRST element -->
<configSections>
<!-- required to read the <dataCacheClient> element -->
<section name="dataCacheClient"
type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
allowLocation="true"
allowDefinition="Everywhere"/>
</configSections>

<!-- cache client -->
<dataCacheClient>
<!-- cache host(s) -->
<hosts>
<host
name="CacheServer1"
cachePort="22233"/>
</hosts>
</dataCacheClient>

<system.web>
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
<providers>
<!-- specify the named cache for session data -->
<add
name="AppFabricCacheSessionStoreProvider"
type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider"
cacheName="NamedCache1"
sharedId="SharedApp"/>
</providers>
</sessionState>
</system.web>
</configuration>
範例程式碼View Code

// Declare array for cache host(s).
DataCacheServerEndpoint[] servers = new DataCacheServerEndpoint[1];
servers[0] = new DataCacheServerEndpoint("CacheServer2", 22233);

// Setup the DataCacheFactory configuration.
DataCacheFactoryConfiguration factoryConfig = new DataCacheFactoryConfiguration();
factoryConfig.Servers = servers;

// Create a configured DataCacheFactory object.
DataCacheFactory mycacheFactory = new DataCacheFactory(factoryConfig);

// Get a cache client for the cache "NamedCache1".
DataCache myDefaultCache = mycacheFactory.GetCache("NamedCache1");

//myDefaultCache.CreateRegion("Area1"); //create region
總體來看,預設支援asp.net sesseion配置,實現代碼及設定檔都很簡單,並且擴充了快取區域及緩衝標籤功能,協助劃分地區及區分資料。尤其是本機快取功能大大提高了檢索效率(針對不變化資料),同時針對本機快取到期也提供了到期和逐出機制。不過安裝比較麻煩,建議使用Web PlatForm Instraller安裝,裡面會將指定的更新補丁及PowerShell一併下載更新了。相比Memcached功能強大,但沒有Memcached配置和擴充簡單,各有所長。另外.NET 4.0支援緩衝擴充,你可以繼承ObjectCache實現自己的緩衝機制。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.